6月某日、この連載の執筆者で首都圏に住んでいる5人が技術評論社に集まりました。連載の締めとして、座談会を開くためです。座談会は次のような流れで進みました。
- 自己紹介、Pythonを使い始めたきっかけ
- Python 3.0で好きな機能、きらいな機能
- あなたの開発環境見せてください
「Python 3.0 Hacks」の連載の最後として、白熱した座談会の模様をダイジェストでお送りします。座談会の模様は動画で撮影し、編集済みのものがアップされています。こちらは文字になっていない、おもしろい話が満載ですよ。ぜひご覧ください。
自己紹介
まずは、座談会に参加された皆さんの自己紹介から座談会が始まりました。自己紹介とともに、Pythonとの出会いについて、それぞれのエピソードをご紹介いただきました。
保坂範行さん(以下、nori):保坂範行です。idはbgnoriを使っています。Twitterもやってますので、よかったらフォローしてください。
柴田:Pythonとの出会いを簡単にお願いします。
nori:Pythonとの出会いは、2つめの会社でちょっと触り初めました。Googleが使っているということもあったので。そのあとちょっと病気をしてしまって、療養中にPythonをぼちぼち使い始めました。
柴田:自宅警備中にはじめたということですね(笑)。
nori:そうですね(笑)。なんか嫌な始め方ですね(笑)。
柴田:いやでも、研究熱心ということですね。
nori:どうなんだろうなあ。
柴田:技術者として大切なことだと思います。ちなみに使い始めたPythonのバージョンは?
nori:2.4以降です。
柴田:わりと最近ですね。どうもありがとうございました。では次の方。
稲田直哉さん(以下、稲田):稲田直哉です。KLab株式会社に勤めています。はてなIDはmetaneです。同じIDでTwitterのアカウントも持っているんですが、なじめなくてあまり発言していません。学生時代はC++で高専プログラムコンテストなどに参加していました。前職が組み込み系でして、C言語で組み込みのコードを書いているときに、ログ解析とかビルドのスクリプトとか、いろんなところの隙間を埋める言語が必要になりました。最初は、学生時代に使ったことのあるPerlを使おうと思ったんですが、まったく思い出せませんでした。その時、PythonとRubyを比べてみて、コードの見た目がPythonの方がすっきりしているとか、Rubyの方がミーハーっぽくていやだとかいう理由でPythonを選びました。
柴田:かなりかっこいいですね。正当派の技術者という感じで。
稲田:いや、アンチミーハーってありますよね(笑)。
柴田:Pythonの人ってそういう人多いです。流行っているからRubyをやめた、とか(笑)。
稲田:CPUはIntelよりAMDが好きだとかいう(笑)。
柴田:なんか思い当たる節があって嫌だなあ(笑)。ちなみに一番最初に使ったPythonのバージョンは?
稲田:同じく2.4です。
柴田:わりと新しいですね。
稲田:今、Pythonのドキュメント翻訳プロジェクトをまったりやっています。
(一同拍手)
柴田:では、次、石川さん。
石川雄介さん(以下、石川):石川雄介です。普段はCG関係の仕事をしています。最初にPythonを使い始めたのは、前のバイトの上司が「Python、Python」といつも言っているような人だったので、それに影響されてPythonを使い始めました。仕事ではずっとPythonしか使ってません。
柴田:実際にお仕事でもPythonを使われているんですね。
石川:はい、そうですね。
柴田:CGの世界、ハリウッドの映画用のCGを作っているようなスタジオだと、Pythonがたくさん使われてますよね。
石川:そうですね。実際はパフォーマンス的なことろでたいへんなこともあります。そんなときは、海外の情報を収集して「ILMがこんなものを使っている」とか「Pixarがこんなものを使っている」という情報を仕入れています。
柴田:Pythonはオープンソースの言語ということもあって、いろいろな情報が探り出せるところがいいところなのかも知れないですね。
石川:そうですね。たとえばTwistedで作ったソフトがどのくらいのパフォーマンスで動いている、というような話も公開されているので、ためになります。
柴田:なるほど。ちなみに、一番最初に使われたPythonのバージョンは?
石川:わたしも2.4です。
柴田:いまのところ3人とも2.4から始めたんですね。ありがとうございました。次は保坂翔馬さん。
保坂翔馬さん(以下、shoma):保坂翔馬です。今はCG関係の会社で働いています。部署内の情報共有ポータルとしてPloneを使っていて、主にPlone上の開発をしています。Pythonとの出会いは、大学4年の時に学園祭でプログラムコンテストがありまして。それまではC++しか使ったことがなかったんですが、そこでスクリプト言語を使ってみようと思いました。もう一人参加する人がいて、その人はRubyだったんですよ。対抗してPythonを(笑)。
一同:おー。
柴田:ちなみにどんなものを作ったんですか?
shoma:その時は七並べのプログラムを作る競技だったので、wxPythonを使って七並べアプリケーションを作りました。
柴田:じゃあ、GUI上で七並べが遊べるゲームを作ったんですか?
shoma:それが対戦型なんですよ。
柴田:では、中央にサーバがあってそれとお話をする、みたいな?
shoma:そうではなくて、「このカードを出しました」みたいなアナログのやりとりをして、操作自体は人間がやっていました。
柴田:じゃあ、七並べの思考ルーチンを持ったプログラムを作ったんですね。
稲田:脳内で七並べができる人なら、パソコンを使っているフリをしているだけで勝てますね。
(一同:笑)
柴田:ちなみに、一番最初に使ったPythonのバージョンは?
shoma:当時は2.4が出ていたんですが、日本Pythonユーザ会のサイトにあった日本語版の2.3を使いました。
柴田:Windows用にビルドされたものですね。S-JIS周りの処理が強化されている。
shoma:そうですね。
柴田:最後になりますが、柴田といいます。ウェブコアという会社をやっています。一番最初にPythonと出会ったのは、前の会社でZopeを使ったCMSを作る案件があって、それが初めでした。私はこのなかで一番年食っているんですけど(笑)、そういうこともあってかPythonを使い始めたのが2000年くらいでした。当時は1.5というバージョンを使っていました。それが、Pythonを使った初めてのバージョンですね。
Python 3.0の好きな機能、嫌いな機能
次に、今回の連載のテーマでもある「Python 3.0」について、著者の意見をお聞きしました。みなさん一家言お持ちのようで、のっけから興味深い内容で盛り上がりました。
柴田:ここからは、みなさんそれぞれPython 3.0で好きな機能と嫌いな機能を上げていってもらいます。まずは保坂翔馬さんから、好きな機能をどうぞ。
shoma:私の3.0の好きな機能は、記事にも書きましたが、辞書内包表記です。
柴田:3.0になって内包表記増えましたよね。
shoma:以前もジェネレータを使うなどして似たようなことができたんですけど、それが3.0になってよりすっきりしたというか。
柴田:そうですね、前はたとえば、辞書型のitems()メソッドを使って要素を取り出して、というようなことをやってましたよね。それが、辞書内包表記を使うともうちょっと直感的に書けるようになったと。set内包表記なども、使ってみると便利ですよね。
shoma:そうですね。自分は、けっこうワンライナーで書きがちなので(笑)。内包表記は結構好きです。
柴田:Pythonってインデントでブロックを作るので、ループを作ろうとするとどうしても改行が入ってしまって、ノリの悪いコードになってしまいがちですよね。簡単なループであれば、内包表記を使ってササッと書けるのは、なかなか便利ですよね。
shoma:使いすぎるとコードが読めなくなりますけどね(笑)。
(一同:笑)
柴田:内包表記をネストしたりするともう読めないですね。
shoma:ほどほどにしないといけないですね。
柴田:逆に嫌いな機能は?
shoma:ワンライナー好きとしては、reduceが標準から外れたのが悲しいですね
稲田:Python 2みたいに、デフォルトでグローバル関数にしてほしいですよね。
柴田:sitecustomize.pyを書き換えてしまうとか(笑)。
(一同:笑)
柴田:コードのポータビリティは下がってしまいますけどね。Pythonの設計者のGuidoは、もともとmapやreduceのような高階関数は嫌いだという話がありますよね。本当は、高階関数を無くしてしまおうとしたという話があるんですが、たのむからやめてくれと言われたとか(笑)。
(一同:笑)
柴田:結局、lambdaだけグローパル関数として残ったんですよね。lambdaが無くなると、無名関数が作れなくなるからというのが理由らしいです。
nori:Twitterで、少し前にGuidoが、「計算機プログラムの構造と解釈(SICP)が俺のところに送られてきた。これは何だ?」ってつぶやきをしてましたね(笑)。
(一同:爆笑)
柴田:誰から送られてきたんだろう。「これ読め」って意味ですよね。
稲田:filterとかmapのような高階関数は、内包表記を使えるのなら不要だろうという意見もありますよね。でも、すでに定義済みの関数を高階関数で使うのはOKだと思うんです。たとえば数値相当の文字列が入ったリストを数値に変換したいときに「map(int, seq)」みたいに書くとすっきり書けて好きなんです。たけど、関数の引数の中でlambdaを使うのは嫌いです。
柴田:ふと思ったんですが、Pythonでは関数呼び出しの時に必ずカッコを使うじゃないですか。高階関数ではこのルールが破られているから、Guidoが嫌いなんじゃないですかね?
稲田:Pythonでは関数もファーストクラスオブジェクトとして扱われていて、変数と同じように扱えますよね。関数を引数として渡せるのは、関数言語のよいところを取り込んでいると思うし、それが「Pythonicではない」とは言えないと思います。
柴田:デコレータの例もあるか。
稲田:そうですね。デコレータもカッコなしで関数実行されてますよね。
柴田:なるほど。いきなり深い話になってきて、すばらしいですね(笑)。
(一同:笑)
みなさんお仕事帰りに集まっていただいたにもかかわらず、座談会はなごやかに、そして白熱して続きました。その後、Python 3.1について話し合おうという予定だったのですが、急遽予定を変更しました。たまたま皆さんノートPCを持ち込んでいたこともあり、普段使いの開発環境を見せてもらおう、ということになりました。
エディタも環境もそれぞれで、みなさんこだわりがあるのが印象的でした。共通点はといえば、IDEのようなリッチな環境を使っている人が一人もいなかったこと。みなさんシンプルな環境で開発されていました。開発環境にこだわることは、良い開発者の条件だと思います。ぜひ動画を見て参考にしてください。
半年近くにわたって続けてきた「Python Hacks」も今回が最後です。執筆者の皆さん、編集者の小坂さん、そしてなにより読者の皆様、これまで連載を支えていただいて本当にありがとうございました。また機会があれば、お目に掛かりたいと思います。