レポート

「Python Hack-a-thon 2010.07」レポート

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

プレゼンテーション

5~20分のプレゼンタイムです。プログラミングに関する高度な話題から,道徳的な話題,技術的な話からネタまで,言語もPythonにとどまらず,C++や恒例のPHPまでバリエーション豊かな発表が集まりました。

えがわさん「PythonはあなたのAndroidライフを応援します」

IMoNi開発者であるえがわさん@t_eggによる,Androidのさまざまな所でPythonが利用されている,という発表でした。具体的にソースコードの中を調査した結果が紹介されました。

ご存知の方も多いと思いますが,Androidの開発にはJavaを用います。省メモリが要求される環境ではまだスクリプト言語が主流にはなっていませんが,えがわさんによると,サーバ部分や開発補助ツール,テストコードなど,実機の周りの幅広いところでPythonが活躍しているとのことです。おもしろいなと思ったのは,HTTPクライアントのテスト用の,行儀の悪いサーバのふりをするPythonスクリプトもあるという点です。

驚いたのは,AndroidのソースツリーになぜかQuakeのソースコードがまるごと含まれているということです。その中のデータ変換用に,やはりPythonが利用されている,とのことでした。

画像

なんもさん「Blender 2.5」

午前からハンズオンでもフル回転のなんもさんによる,Blender 2.5の紹介です。Blenderには元々Pythonのサブセットが含まれており,Pythonで拡張できるようになっていました。現在開発中(ハッカソン時点でアルファ2)の2.5からは,Python 3.1のフルセットが含まれています。そして,アーキテクチャもリファインされ,Excel VBAのようにUIのすべての操作をPythonコードでマクロとして保存できるようになっていたり,3D空間のすべての要素をPythonから操作できるようになりました。

プレゼンの中では,オブジェクトを振動させるデモのほか, Pythonの組み込みのネットワークライブラリと連携し,Twitterから最新のメッセージを取り出してきて,3D空間に表示するというデモが行われました。

Camlspotterさん「Ocaml」

シンガポールから直行で登場のCamlspottterさんによる,関数型言語OCamlの紹介です。Camlspotterさんによると,関数型言語は怖くない,オブジェクト指向言語の方が要素が多くて難しいそうです。いくつかの事例をあげながら,OCamlの強みや弱みなどが紹介されました。

OCamlは割り切った設計になっており,強力な型システムと実行効率の高さが特徴です。OCamlの型システムは,⁠間違ったチューブを差さないための仕組み(C++は無理矢理差す)⁠だそうです。

一方で,アカデミック出身で,仕様策定者が別の興味に行ってしまったため,⁠仕様が枯れて干からびている」⁠自分をコンパイルする最低限のライブラリしかない」のが欠点。その欠点を克服するために,ユーザベースで作られている標準に代わるライブラリセットや,Pythonと双方向の呼び出しを行えるようにするPyCamlの紹介がありました。これで,⁠OCamlになくてうらやましい)Matplotlibも使えるようになるそうです。

ちなみに,関数型言語というとコワイ人が多いとのことですが,Camlspotterさんによると「コワイ人はかなり先の話をしている」⁠一般の人はそういう人のことは無視して,生産性の高い部分だけ重目していればよい」そうです。

8月28日には,OCaml Meeting 2010 in Nagoyaが行われます。

ふるかわとおるさん「Python 2.7」

BeProudのbuchoこと,ふるかわとおるさん@torufurukawaによる,Python 2.7の簡単な紹介です。このハッカソンの数日前にPython 2.7が公開されました。

Pythonには2系と3系がありますが,この2.7が2系の最後で,今後は3系に移行すると現時点では公式には発表されています。現在では2系では積極的に機能追加は行われておらず,今回の変更点も,3.1で取り入れられた便利な機能のバックポートが主です。発表の中で紹介されたのは, orderddictと,dict/set向けのリテラル表記/リスト内包の拡張と,unittest2です。

{1,2,3} # -> set([1, 2, 3])と評価される
{i: for i in } # -> 辞書のリスト内包表記も

また,今まで機能が弱かったunittest2も拡張され,テストの表現力が高められました。たとえば,シーケンスに値が含まれるテストも,次のように書けるようになり,失敗時のメッセージも読みやすくなります。

self.assert_(1 in listobj) # 2.6まで
self.assertIn(1, listobj)  # 2.7

このセッションでは,初心者では判断のつきにくい「どのバージョンを使うべきか?」という問いに対し,⁠Python 3系に興味があるけど,いろいろな理由で試せない人向け」と答えていました。

画像

石本さん「PEP-3138-Python 3.0のオブジェクトの文字列表現」

さまざな翻訳を行ったり,python.jpのオーナーをしていたり,日本の Pythonプログラマでお世話にならなかった人はいないと思われる石本さんによる発表です。石本さんは,日本人で今のところ唯一のPEP(Pythonの機能拡張を行う場合の提案書)作者です。今回の発表は,このPEPの内容紹介です。

Python 2系までは,デバッグ用に文字列を表示しようとすると,ascii文字のみしか表示されず,日本語などはエスケープされていてそのままでは読めません。デバッグ時に困る場面もよくあります(経験あり)⁠とくにstderrでは,エラーメッセージが読めないと困ります。かといって,考えずに出力すると,環境によってはユニコード変換のエラーが発生し,エラーの詳細が分からなくなって本末転倒です。Pythonではエンコード時のエラー処理を選択できます。 stderrでは,デフォルトで変換できなかった文字(と空白文字や印字不能文字)はエスケープして表示されるようになりましたString representation in Python 3000(PEP-3138))⁠

基礎的な力が試されるようなプレゼンでした。

画像

著者プロフィール

渋川よしき(しぶかわよしき)

社内SE。ソフトウェアを中心に,ライフハック,インラインスケートなど,様々なコミュニティの運営に関わってきた。日本XPユーザグループには設立準備の時から。現在メインのコミュニティはとちぎRubyとPython温泉(系)で,ドキュメントツールのSphinxのコミュニティも最近立ち上げた。趣味は技術文書の翻訳とLT。最近関わった本は「つまみぐい勉強法(技術評論社)」と「エキスパートPythonプログラミング(アスキーメディアワークス)」で,さらに数冊進行中。

Twitter:@shibukawa
ブログ:http://blog.shibu.jp


鈴木美穂(すずきみほ)

株式会社アクセンス・テクノロジー 技術部所属。

IT業界に入ったばかりの新人エンジニアであり,Python Hack-a-thonやPython温泉の主催者である@voluntasさんの弟子。現在はPythonの他にも幅広く勉強中。将来の目標は,カッコイイエンジニアになること。

Twitter:@_mipo_
ブログ:http://d.hatena.ne.jp/miho36/