PyCon APAC 2013参加レポート

第1回 高エネルギー研究,Dropboxを支えるPythonの力 ─Georg Brandl氏, Rian Hunter氏による基調講演から

この記事を読むのに必要な時間:およそ 6 分

Pythonと中性子

ここから話がPythonから物理学に移ります。英語で聞いていたせいもあって,なかなか話が追いつきませんでしたが,理解できたところを簡単にまとめてみます。

まずは,The FRM IIという施設について説明がありました。The FRM IIは研究用の原子炉で,ドイツの中性子の研究学会(日本のJ-PARCという団体に近いと言っていました)が運営しているそうです。20メガワットもの火力エネルギーが中性子に対して使われているそうです。Georgさんはこの施設で研究を行っているとのこと。

「The FRM II」の外観

「The FRM II」の外観

施設内にある研究室には25個の研究用の機器があるそうです。これらはあくまで研究用で,人を傷つけたりするのには使ってないよ,と言っていました。冗談で "APERTURE LABORATORIES" みたいなことはしてないよ,と言っていたのですが,どうやらPORTALというゲームに出てくる研究施設の名前のようです。

なぜ中性子の研究をしているかという話で,例としてHDDを挙げていました。サイエンス誌に取り上げられた「Writing and Deleting Single Magnetic Skyrmions」という論文では,中性子を使った技術を使うと,HDDに格納するビットを100分の1に圧縮できるという話が載っているそうです。

この後,ふだん使用している機器を紹介した上で,Pythonを使ったこれらの機器の制御の話に移っていきます。中性子の研究用機器には以下の特徴があるようで,これらを考慮して制御システムを作る必要があると話していました。

  • 多くの異なった機器が存在する
  • 1回の計測でいくつもの設定項目が存在する
  • 制御する機器が多く存在する
    • モーター
    • 中性子あるいは,その他の計測対象の検出装置
    • 環境試料
  • たくさんの研究者がこの施設を使いに来るので,ユーザの使い勝手を考慮する必要がある

また制御システムの要件として以下の4つが挙げられ,それを満たすためには柔軟で簡単なプログラミング言語が求められると話をPythonに持っていきます。

  • すべての機器にアクセス可能なこと
  • すべて自動化でき,スクリプトが自分で書けること
  • 新しい機器が導入されてもすぐにアクセス可能になること
  • ユーザがこのシステムを数時間で学習可能なこと

プログラムをまったく知らないわけではないが,詳しくは知らないユーザ向けのシステムといったところでしょうか。確かに研究で使う場合,こういった層向けのシステムが求められそうです。

続いて,制御システムを構築するためのライブラリであるNICOSの紹介です。NICOSはNetworked Instrument Control Systemの略で,FRM IIで使われている中性子散乱実験用のライブラリだそうです。

実験に必要な機能がすべて入っているそうで,開発者と科学者の橋渡しをするようなライブラリだと話していました。実際にCLIから機器のデータを読む例や,機器に対応したクラスを定義するコードの例を紹介していました。

import serial
from nicos.core import Moveable, Param

class PowerSupply(Moveable):
    parameters = {
        'port': Param('Serial port', type=str, mandatory=True)
    }

    def doInit(self):
        self._serial = serial.Serial(self.port)

    def doRead(self):
        return float(self._serial.communicate('I?'))

    def doStart(self, value):
        self._serial.communicate('I=%f' % value)

使用できる機器のリストが左側に表示され,右側に命令を入力するためのプロンプトが表示されたGUIも紹介していました。

画像

なぜ,Pythonを使うのか

スライドの3分の2を過ぎたあたりで,話の中心がPythonに移っていきます。まずは,なぜPythonを使うのか。例として機器の情報のキャッシュに使用しているデーモンを挙げ,以下の3つがPythonを使うメリットとして挙げられると話しました。

  • たくさんのKey-Valueストアの実装が存在する
  • キャッシュに必要な機能(有効期限切れやキーの書き換え,自動更新など)⁠ が揃っている
  • 1,000行ほどのシンプルなデーモンでも安定して数カ月間運用できる

さらに,Pythonのドキュメンテーションシステムの強力さにも触れ,help関数でクラスや関数のヘルプが簡単に見ることができること,reStructuredTextで書けば簡単に綺麗なHTMLを吐き出せること,もちろん,Sphinxが存在することをPythonの強みとして挙げていました。

もうひとつは,必要な機能がはじめから揃っていること。Georgさんは機器を制御するために,以下の標準モジュールを使っているそうです。

  • socketserver
  • logging
  • pickle
  • wsgiref
  • email
  • ctypes

最後のメリットとして,ユーザ体験の面に触れ,Pythonに科学者のコミュニティが存在すること,データの収集と分析が同じ言語でできること,計測のためのコードが簡単に書けることなどを挙げ,Pythonのユーザ体験が優れていることを説明していました。

おまけの効果として,ユーザの一人が地下鉄の時刻を検索するスクリプトを書いてくれたそうです。これで実験中にいつでも電車の時刻をチェックできると話していました。これはシステムを構築したプログラマーとして嬉しい効果ですね。

最後に,システムを初めて使うユーザのためのハックを紹介して講演は終了しました。

はじめは基調講演として異色な発表だと思い聞いていたのですが,いろいろな分野で利用されるのもPythonの魅力だと気づきました。よく利用される分野はWebアプリケーションを中心としたシステム構築だと思いますが,それ以外にも,2日目のRianさんの講演にもあるDesktopクライアントの開発,Georgさんの科学分野でのデバイス制御への活用やデータ分析への活用など,さまざまな分野のPythonistaが集まって行われるPyConはとても魅力的に感じます。来年もこういった自分の分野以外でのPythonの活用をキーノートとして聞きたいですね。

著者プロフィール

藤原敬弘(ふじわらたかひろ)

FULLER株式会社

1986年生まれ。北海道苫小牧市出身。苫小牧工業高等専門学校卒業。

Fuller, Inc. CTO

Webプログラマ,よく利用する言語はPython。Pythonコミュニティによく出没する。趣味でArduinoやRaspberry Piなどを使って,便利なものを自作する。

twitter:@wutali
github:https://github.com/wutali

コメント

コメントの記入