fc2ブログ

makopi23のブログ

makopi23が日々の生活で感じたことを気ままに綴るブログです。

「集合知プログラミング勉強会 第2回」に参加しました

2012/10/16(火) 「集合知プログラミング勉強会 第2回」に参加してきました。

Atnd(告知サイト)
http://atnd.org/events/33080

場所は東京駅の八重洲南口から出てスグの株式会社リクルートキャリアです。
参加者さんは25名くらいでしょうか。かなり出席率が高かったようです。

今回の勉強会で使用させていただいた部屋、すごかったですねー。
全席にマイクとPCが備え付けで、輪のように席が並んでいて、その真ん中にモニタが2台、
部屋の前にプロジェクタが1台、という。。。
なんか、国際会議でもするかのような部屋でした。

この勉強会は、O’Reillyより刊行されている「集合知(collective intelligence)」をテーマにした
集合知プログラミングがテーマとのこと。

集合知プログラミング集合知プログラミング
(2008/07/25)
Toby Segaran

商品詳細を見る


というか私、この日、書籍まだ買ってませんでした。。。

というのも参加申し込みしたのが当日の昼間でして、仕事が終わってからO’Reillyのサイトから
PDFをダウンロードして、一通り読んでソース写経してから参加した次第なのです。
ちなみに、O’Reillyのサイトに2章までのPDFが無料で公開されているので、それ印刷して読みました。

■PDF : ftp://ftp.oreilly.co.jp/9784873113647/PCI_sample.pdf
■ソースコード : http://examples.oreilly.com/9780596529321/

この日はサッカー日本代表 vs ブラジル戦を家で観戦しよー、と思ってたのですが、この勉強会が以前からやっぱ
気になってて、当日直前に申し込んでしまったのでした。。。

なにより、Pythonを実践で学べそう、というのがデカかったです。この本、コードはPythonなのです。
先週もエキスパートPythonプログラミング読書会に参加しましたが、Pythonを今年から学び始めたので、
ちょうどいい機会だなー、と。


■2章 「推薦を行う」
今日は2章が範囲でした。2章を前半と後半に分け、二人の方が発表くださいました。

前半: @millionsmile さん

集合知プログラミング第2章推薦を行う from Hiroko Mills


■githubに2章前半のソースとかをmillionsmile が公開している。
https://gist.github.com/3887602

■Dictionary型 { } ってメモリをムダに使って非効率かも?

■P.10の、距離の計算式が間違っている。正しくは以下。
>>> from math import sqrt
>>> sqrt(pow(4.5-4,2) + pow(1-2,2))
1.118033988749895

■P.11の一番上の計算式も、同様に間違っている。正しくは以下。
>>> 1/(1+sqrt(pow(4.5-4,2) + pow(1-2,2)))
0.4721359549995794

■P.11の下の方のソースでreloadを使っているが、初回読み込みでは使えない。正しくは以下。
>>> import recommendations
>>> recommendations.sim_distance(recommendations.critics,
... 'Lisa Rose','Gene Seymour')
0.14814814814814814


■P.13の上から3行目や4行目に、0.4や0.75という数字が出ているが、本の最後のほうの付録P.341に
 計算式が書いてあるらしい。(書籍をまだ買ってないので確かめられない。。。)

後半: @hid_tanakaさん
2章推薦を行う(後編) from hid_tanaka

実際にライブコーディング形式での説明が行われました。



Pythonに関する説明と質疑応答

@terapyon さんによるLT「Pythonお悩み相談その場で解決」です。
 
Pythonのバージョン
pythonは2系列と3系列の2種類がある。
3系列は西暦3000年くらいにできたらいいよね、と言われていた。

python3を業務で使っている人はほとんどいない。
というのは、python2でできたことがpython3でできないことがあるから。

python3が、python2.7より性能が悪いこともある。
ただpython3は日本語の扱いが良くなっている。

いつpython3に移行すれば良いか、というと、python2系で使っていたモジュール類がpython3系に対応してからだと思う。

python2.4がpython2.6で動かないケースは稀なケース。
python2.7で動くように作ると、それより前のpython2.Xのバージョンで動かなくなることがある。
python2.7より前のバージョンで動いていたのが、python2.7で動かなくなる、ということはほとんどない。

python3になって、python2の古い書き方を捨てたりしているケースがある。
たとえば、print文とか、import文(相対import)とか。

PythonにはPEP8という公式のコーディングスタイルがある。

プロンプトにコード書くとき、どこで改行すべきか?
→ .(ドット)の前で切る。

pythonの詰まりポイント
pythonに直感的に考えたことをコードに書きにくい、というのを聞く。
pythonの詰まりポイントはどこか?

pythonは模擬コードに近い。ハマりポイントはたくさんある。
例えばpythonで正規表現を使いたい場合、そのままでは使えない。
正規表現オブジェクトを作ってコンパイルする必要がある。

pythonの利点の1つは、関数でそのままかけること。
クラス使ってオブジェクト指向で書け、とは強制されない。
標準モジュールが充実しているのも利点の1つ。

Pythonのモジュール

PyPI (読み方:ぱいぴーあい or ぱぴぱい or ぱいぴー)
http://pypi.python.org/pypi
Python Package Indexの略らしく、Pythonパッケージを登録したりダウンロードしたりできるPython版CPANのようなものらしいです。
24000パッケージくらい登録されており、良いものも悪いものも登録されている。

PyPy
http://pypy.org/
Python 開発者がPython実装のハックを行うためのPython 記述された Python 実装系らしい。(by Wikipedia)
要するに、PythonでPythonを実装するプロジェクトらしいです。
PyPyを使ったほうが普通のPythonを使うより速い時がある。

NumPy
http://numpy.scipy.org/
Pythonプログラミング言語の拡張モジュールであり、大規模な多次元配列や行列のサポート、これらを操作するための大規模な高水準の数学関数ライブラリを提供するものらしい。(by Wikipedia)

Jython
http://www.jython.org/
Jython(旧称JPython)は、プログラミング言語PythonのJavaで書かれた実装とのこと。(by Wikipedia)
ちなみにPythonの普通の実装はC言語らしい。

Pythonのパッケージやモジュールのインストール
easy_installとかpipといったツール(コマンド?)がある。
pipでインストールできるならpipを使ったほうが良い。

Pythonは何が優れているか?
Pythonは読みやすい、簡単に書きやすく、メンテナンスしやすい。
Rubyと比べて、同じような感覚で書けると考えている。
モジュールが揃っている。科学計算ライブラリとかもある。
やりたいことが手軽に出来る。

Pythonでしかできないことがあるか?
基本的に、この言語しかできない、ということは無いと思う。
自分が使いたいモジュールがその言語にあるかどうか、が基準。
自分が使いたいライブラリがPythonにしかにないので、Pythonを使っている。

WindowsでPythonを使おうとしたら、何を使うのが幸せになれるか?
Windows用の標準インストーラを使うのが良い。
Windowsで苦労するのは、NumPyとか。
この業界は、Mac使いとかLinux使いとかが非常に多く、Windowsは苦労するかも。
WindowsはC言語の処理系がデフォルトで入っていないので。

お勧めのWebフレームワーク
3大フレームワークがある。
① Django
② Flask
③ Pyramid

① Django
https://www.djangoproject.com/
Pythonで実装されたWebアプリケーションフレームワーク。 model-view-controller のMVCデザインパターンに緩やかに従う。(by Wikipedia)

② Flask
http://flask.pocoo.org/
Python用の、軽量なウェブアプリケーションフレームワークの一つ。Werkzeug WSGIツールキットとJinja2テンプレートエンジンを基に作られている。(by Wikipedia)

③ Pyramid(旧:Pylons)
http://docs.pylonsproject.jp/projects/pyramid-doc-ja/en/latest/index.html
小さく、速く、堅実 (down-to-earth) な Pythonウェブアプリケーション開発フレームワーク。Pylonsプロジェクトの一部として開発されているらしい。

他にもTornadoとかZopeとかもある。

④ Tornado
https://sites.google.com/site/tornadowebja/
FriendFeed で使われていたスケーラブルでノンブロッキングなWebサーバとツールのオープンソース版らしい。

⑤ Zope
http://zope.jp/
オープンソース&フリーのWebアプリケーション・サーバ。

これまではPythonのフレームワークは乱立していたが、最近は大体①と②が主流になっている。各フレームワークの欠点と利点を討論したセッションがPyCon JP 2012にあったので、参考になる。
http://2012.pycon.jp/program/panel.html

Pythonのクラウド
① Google App Engine
https://developers.google.com/appengine/?hl=ja

② Heroku
http://www.heroku.com/
Amazon Web Services(AWSのIaaS上に構築されたPaaS。Ruby以外にも、Pythonとかにも対応したマルチ言語なプラットフォームになっている。

③ Windows Azure
http://www.windowsazure.com/ja-jp/
http://www.windowsazure.com/en-us/develop/python/
Pythonももちろん動作する。

GAEが強すぎて、Pythonの他のクラウドサービスが出てこない。


感想:
思い立って当日申込で参加したイベントでしたが、Pythonの勉強にもなるので次回以降も参加しようと思います。
集合知というものも合わせて学べそうなのも良いですね。
ということで、ようやく(中古で)本買いました。ちゃんと写経しないと。

運営者さん、発表者さん、参加者さん、ありがとうございました。
関連記事

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://makopi23.blog.fc2.com/tb.php/26-7627a236
この記事にトラックバックする(FC2ブログユーザー)

-->