IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

AI活用時代にPythonで見る夢

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第19回 Rustに入門した話 (辻真吾) 2021年9月

はじめに

プログラミングは好きなので、これまでいくつかの言語を使ってきました。小学生の頃BASICやLOGOで遊んでいたのは別として、大学生時代はC/C++、働くようになってJava、大学にもどってきてPythonとなり今に至っています。Pythonは12年以上使っていて、かなり詳しくなりました。これからも使い続けることは間違いありませんが、最近新しいプログラミング言語Rustに入門したので、今日はそのお話しをしようと思います。Rustを触ろうと思った理由から、使ってみた感想や勉強方法、さらには今後の予想など書いていこうと思います。

Pythonは遅い

Pythonプログラムの実行速度は遅いです。CやC++などと違い、Pythonはコンパイルを必要としませんので遅いのは当然です。コンパイルを必要としないので、書いてすぐ実行できます。これは開発速度を押し上げます。また、遅いと言っても比較の問題です。広く使われているプログラミング言語のうち、もっとも実行速度が速いCやC++、そしてRustなどと比較すれば遅いというだけです。近年コンピュータの性能が向上したため、Pythonの実行速度でも実用レベルで困ることが少なくなりました。開発が楽で、それなりの速度で動く。これはPythonが流行っている大きな理由の1つだと思います。

Pythonで特に実行速度が遅くなる処理に、単純なfor文の繰り返し処理があります。あるお仕事で30分間隔のデータを10年分繰り返し処理するプログラムを書きました。1回分の処理のなかでいくつかのクラスが互いに状態を書き換える必要があり、これを1日48回×365×10で17万5200回繰り返すプログラムとなります。Pythonで実装したら、約50分かかることが判明しました。条件を変えて何度も実行したいので、1回50分はちょっと困ります。NumPyなどを使って高速化することも頭をよぎりましたが、ここは一念発起して以前から気になっていたRustに入門しプログラム全体を書き換えることにしました。

Rustすごい速い

プログラムの設計をそのままにしてRustに書き換えました。その結果、コンパイル時の最適化前で約4秒、最適化オプションを付けてコンパイルした場合0.3秒ほどで実行できるようになりました。あまりの速さに何かを間違えているのではないかと疑った程です。

Rustの勉強方法

プログラマの間では話題になっているRustですが、やはりまだまだ知名度が低く、日本語の書籍も限られた数しかありません。今回私はThe bookと呼ばれている公式のドキュメントで勉強しました。コミュニティのみなさんによる日本語訳もあります。ただ英語が平易に書かれているので、普段から英語のドキュメントに慣れている方なら、あまり困らず英語で読めるでしょう。恐らく、本家が世界で読まれることを考慮して、比較的簡単な英語で書いているのだと思います。このThe book、わかりやすく丁寧に書かれていてため、週末の2日間でRustの基本が理解できました。The bookを読んだ率直な感想は「Rust面白い!」です。いろいろな特徴がありますが、エラー処理とPythonでのNone(他の言語ではNullなど)の扱いが根本的に見直されており、この点は非常に感銘を受けました。

12〜13年前、JavaからPythonに乗り換えたとき、自分で書いたJavaのプログラムをPythonに移植することでPythonの理解を深めました。個人的にはこの方法はかなり効率が良いと思っています。なぜなら、自分で書いたプログラムなので、アルゴリズムでわからないところが無いからです。今回も、冒頭で紹介したPythonのプログラムをRustに移植しました。メソッドの第1引数がselfだったり、変数名のあとコロンを書いて型を宣言するところなど、RustはPythonと似ている部分も多く、移植は思った以上に順調に進みました。Pythonに慣れているとRustは書きやすい言語かもしれません。もちろん、途中で詰まってしまうことも何度かありましたが、Web全盛のこの世の中、調べればなんとかなります。その昔、Webがない時代にプログラミングをしていた人達は本当に偉いとしか言いようがありません。甘やかされて生きているなと思いつつ、なんとか全部を書き換えることができました。

Rustの未来予想

プログラミング言語は流行り廃りがあります。Rustがこれから流行るかどうか、誰にもわかりません。ぜひ流行って欲しいです。いまのPythonほどになるのは難しいかもしれませんが、誰も使わなくなってしまうという未来は見たくありません。幸い、明るい兆しがいくつかあります。RustはCやC++を置き換えることも視野に入れているので、OS開発にも向いています。最近、GoogleなどがLinux開発にRustを使うことを後押しするというニュースがありました。Linuxの開発に使われれば、世の中から消えることはなくなりそうなので歓迎です。ただ、記事によるとリーナスさんは中立的かやや消極的な立場のようです。

Rustは実行速度が求められる領域で、今後一定のシェアを確保するのではないかと思っています(希望も混じっています)。たとえば最近、BLAKE3という暗号学的ハッシュアルゴリズムがリリースされました。これはCとRustで実装が公開されています。また今後、Rustが中心的な役割を演じるかもしれない領域には、組込みとWeb Assemblyがありそうです。これからのIoTa時代、組込み機器の普及はある程度確実な未来と言えそうです。Web Assemblyはまだまだ新しく、変化の激しいWebの世界でどこまで普及し定着するのか不透明ですが、この分野でRustが活躍できるとその後の未来が明るくなるので、個人的には非常に期待している分野です。

おわりに

Pythonプログラムの実行速度の問題から、Rustに入門し、その虜になった経緯を書きました。今回Rustに触れてみてもう1つ良かったことは、プログラミング初心者の気持ちを思い出せたことです。Pythonだったら、文字列、リスト、辞書のメソッドをほとんど覚えているので、スラスラプログラムを書くことができます。Rustでも似たような機能があるはずと思いながら、正確なメソッド名や使い方が分からないので、暗中模索の感が半端ありません。右も左もわからないのです。久しぶりだったので新鮮で楽しかったですが、この気持ちは誰かにPythonを教えるときに思い出そうと決めました。また、Rustで苦労したあと、Pythonに戻って来たときの「できる」感も格別です。英語で話す会議に出席して言いたいことの2割くらいしか言えなかったあと、日本語で雑談しているときの爽快感と似ています。プログラミング言語も帰れるところがあると挑戦もしやすくなるので、今後もPythonスキルは磨き続けたいと思っています。

 


 

筆者書籍紹介

いちばんやさしいパイソンの本
Python スタートブック
  ――Pythonの基本をしっかりマスター

まったくのゼロからでも大丈夫

辻真吾 著
B5変形判/352ページ
定価(本体2,500円+税)
ISBN 978-4-7741-9643-5
詳しくはこちら(出版社WEBサイト)
Pythonスタートブック増補改訂版

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes