なんでもPythonプログラミング

科学者がPythonを覚えるとヤバイ!

  • 「Pythonプログラミング+サイエンス=∞(無限大)の楽しさ!」

本書なんでもPythonプログラミング 平林万能IT技術研究所の奇妙な実験は、ソフトウェアデザイン誌で2年にわたり連載してきたプログラミングと科学技術コラムの集大成です。身の回りのハイテク機材は、筆者の科学者でもある平林さんにとっては、科学的手がかりの宝庫です。スマホのカメラには光センサー、本体にはモーションセンサーが入っています。これらにPythonプログラミングすると新しい見地がどんどん広がります。100円ショップにあるオモチャも骨董品屋に飾られたガジェットもPythonと科学の力でたちまち別の姿に変わります。Pythonのコードを解説してもその面白さは伝わらないので、本書の各章をピックアップして、使用している素材の写真を紹介しましょう。

第1章 光の研究 1-1スマホで血管年齢(動脈硬化)を診断してみる

スマホのライトとカメラで血流を調べる! 最初この原稿を読んだとき、そんなことできるのかなと思いましたが、たしかにスマホのカメラの近くにあるライトといっしょにレンズを指でつまむと、皮膚を通してほんのり光が透過します写真1写真2⁠。その色の変化をカメラで撮影することでPythonでデータ分析するとは驚きました。

写真1 スマホのカメラをライトを
つけたまま指でつまむ
写真1 スマホのカメラをライトをつけたまま指でつまむ
写真2 赤い画面で皮膚を通した光を
センサーでキャッチしているのが
わかる
写真2 赤い画面で皮膚を通した光をセンサーでキャッチしているのがわかる

第2章 流体力学の研究 2-2Pythonで世界の地図を使って街の風を流体計算

今年も台風で翻弄されましたが、気象ニュースで「風速情報」が出てきます。こうした情報は、OpenWeatherMapというサイトからデータを手にいれることができます。本書では、そのデータをPythonで分析してみました。筆者が得意とするナヴィエストークスの方程式を駆使して、秋葉原の風向を分析します図1図2⁠。ネット上にはさまざまなデータがありますが、こんな分析もできるわけです。

図1 秋葉原の地図画像
図1 秋葉原の地図画像
図2 分析した結果をWebGLでさらに加工したもの
図2 分析した結果をWebGLでさらに加工したもの

第6章 3次元画像処理の研究 6-3多視点撮影や動画撮影から三次元空間を作り出す

スマホを持ちながら撮影した動画を処理すると3D映像を作りだすことができます。Photogrammetry、つまり写真測量法という方法があります。これもオープンソースのアプリCOLMAPが公開されていまして、これを使うことができるパソコンがあれば3D画像を作ることができます(かなりハイスペックコンピュータ環境が必要ですが……⁠⁠。スマホを持ちながら動画を撮影して、そのデータを元に3D映像が作れる図3⁠、つまり人間スキャナ―ですね! 図4は動いている電車から撮影した駅のプラットフォームです。

図3 旅行先でチェンマイの巨大仏塔をスキャンした例
図3 旅行先でチェンマイの巨大仏塔をスキャンした例
図4 高速度撮影で駅のホームの風景を3Dスキャン
図4 高速度撮影で駅のホームの風景を3Dスキャン

まとめ 自分の好きなことにプログラミングを使おう

このほかにもシンセサイザーを作ってオモチャのギターをエレキギターにしたり、拡張現実(Augmented Reality)アプリをスマホで作ったりとか、Pythonといえば、すぐに機械学習やら勉強や仕事で使うことばかり喧伝されますが、そうではなく、自分の好きなことをプログラミングしてみませんか? そう思った読者の皆さんに本書はきっと面白い手がかりを提供してくれそうです。