1人アドベントカレンダー17日目「(第14回)Python mini Hack-a-thon」

(第14回)Python mini Hack-a-thon 2011/12/17(土) 11:00?

https://connpass.com/event/141/

これまた感想が前後してしまいますが、前回の#pyhack(Python mini Hack-a-thon)に引き続き私は2回目の参加となります。

場所はアリエル・ネットワーク株式会社様。

午前

電車遅延等で遅れてくる方が多かった為、11:30頃からしょーまさんから事務通知。全員で自己紹介&本日やる事の発表をしてから黙々と各自の作業開始・・・ではなくまずは雑談が多かったかも。

私は午前中一杯かけてどんなツールを作るのかをまとめてました。

自社で大量に個人宛てにメールを送信するような事をしそうなので、メール送信が楽できるツールを作りたい
最低限の要件

  • 個人宛てのメール送信ができる
  • To: ○○さん のような宛先は引数で指定できるようにする。
  • CUIで操作する
  • メールのテンプレートを準備して、宛先ごとに編集がしやすいようにする。※できたら

流れ

  1. メール送信モジュールの確認
    • emailモジュール
    • smtplibモジュール
  2. 操作方法考案
お昼

お昼は@t2yさんのお勧めカレー店へご一緒にさせて頂きました。

@junjun_mathさんの質問から形態素解析の話になった。@tk0miyaさんと@t2yさんから色々お話聞けた。

  • N-gram
    • n文字単位で分ける
  • わかち書き
    • 単語で区切る
  • どちらも良い所があるのでハイブリッドの検索システムがある。
  • わかち書きではインデックス(辞書)をメンテナンスするのが大変
  • 『東京都』という単語から東の「京都」を必要とする人もいたりするのでどうヒットさせるかを決めるのは難しい
  • 自然言語処理関連の技術でWebをクロールさせて辞書を作成する事は可能だが、どうしても人が判断する必要のある文字列(複合語とか)が出る。
    • 人が判断する所を省く事はできるけど、精度の低い検索エンジンって意味ないよね
    • 検索範囲がインターネットグローバルなのか、会社のファイルサーバで自分が書いた文書なのかで複合語の扱いは変わってくる
午後

皆さん事務関連やら議論やら雑談やらアドベントカレンダーの勧誘やらで色々お話されてましたが、15:30くらいから本格的にモクモクし始めました。
私は成果発表を必ずする!と決めていたので、この間、少しでもマシな発表ができるよう必死に。

そして、17:30から成果発表。

全員分のIDと発表詳細を追い切れなかったのでツイートからコピって箇条書きです。

  • Sphinx拡張でブログ
  • PyFirebirdSQLをアップデート
  • githubsphinx拡張
  • ATNDお知らせ君というbot作成
  • pypyのobjectspaceのソースリーディング
  • Dorpboxとネットプリントを繋げる、ネットプリントボックスα
  • 環境作ったり、Vimを触ったり、redis-pyを使って実際に動かしてみました
  • Ploneのプロダクト作成
  • INICIEという会社を立ち上げました。フィンランドから来ている方でサンタクロースについてPython使って色々サービスを作ってますという報告
  • Ploneのフォームテストについてドキュメント書いてました。QuickEditの紹介
  • ニュースなんかのxmlをとってきて30文字くらいをTwitterに上げる
  • Iterateeを書きました。http://basking-cat.blogspot.com/2011/12/python-iteratee.html
  • Pyramidで色々やってました
  • わかままドリブンな内容でブログ書いてました、Tracを初めて使ってblockdiag載せました。http://d.hatena.ne.jp/tk0miya/20111217
  • routexdfをアップデートしました
  • GAE上で勉強しながらサービス作ってました
  • 社のドキュメントがWordやExcelなので、Sphinxで作成
  • さくらのクラウドでPython3とpyramidを入れてみました
自分の成果
    • emailモジュールの使い方をググってヒットしたブログからコピーさせてもらいました(汗
    • メール送信まではできましたが、メール本文をテキストから入力という部分がわからず。詰まり中
    • 成果発表の際に、アドバイスを受けて文字化けしながらもメール送信できた!
懇親会

色々楽しいお話を聞けました。ネタ的な物も多かったですが、興味深い話も多かったです。

特に@aodagさんの面接時にする?したい?質問「好きな図形は?」「その理由を30秒で答えて」はスキルについては、それまでに十分わかっているので、この質問でその人のポリシーがわかるという話が面白く感じました。ちなみに@aodagさんは平行四辺形と台形が完璧の一歩手前で好き、との事。奥深い・・・

その他トピックス
  • 高校生が2人参加。自分がこの人たちに追いつける日はいつなのかと考えてしまった
  • @t2yさんから塩昆布を頂いた
  • 今日発売されたばかりのVITAを買ってきてハック始めた方が!
  • まずいと評判のフィンランドのお菓子「SALMIAKKI」を頂きました!外側のチョコレートは普通においしかったです。
  • しょーまさんにsmtplibのSMTPはクラスなのでインスタンス作らないと、と教えて頂いた。

来月の#pyhackも公開されたので、早速登録しました。とにかく少しでもレベルあげないと・・・

1人アドベントカレンダー16日目「エキスパートPythonプログラミング読書会 第二期 01」

エキスパートPythonプログラミング読書会 第二期 01 2011/11/08 19:00 to 22:00

http://atnd.org/events/21166
場所は目黒のバリストライド株式会社様の会議室。

#pyfesで@tfmagicianさんがエキPy読書会をもう一度やって欲しい!とつぶやかれていたのが開催の発端。
まさか2期があるとは思っていなかったので、@tfmagicianさんを始め講師役を引き受けて頂いている@shimizukawaさん他、大勢の方々に感謝してます!

@shimizukawaさんが1期のまとめを公開されています
http://www.freia.jp/taka/docs/expertpython/reading/index.html

人気が凄くて、参加登録枠が一瞬にして埋まってしまい、だめかと思いましたが補欠繰り上がりで無事参加できました。

当日については下記にまとめて頂いてますので私は所感だけ書きます。

エキスパートPythonプログラミング読書会 第二期 01
https://github.com/tfmagician/expertpython/blob/master/01.rst

所感
  • 初めは空気が重かった
  • @shimizukawaさんご結婚おめでとうございます!
  • Vimmer率が異常。30人中Emacsを使ってる方が4人。それ以外の方はVimを使っているとの事だった。もしかしたらVim以外のエディタを使ってる人はいたのかもしれないけど少数派という事で言い出せなかったのかも。
  • IDEを使ってる人が誰もいない
  • OSは、Windows派5人。Linux派4人。残りMac派。圧倒的すぎ。私はWin派でしたが@shimizukawaさんもWin派だったのでOK
  • 本編終わった後に、そのままビアバッシュに。間あけずに懇親会って凄くいいです
  • という割には、いつものぼっち体質&人見知り気質で顔見知りだった@tk0miyaさんと@hekyouさんとばかり話してた。一応、Python忘年会を挟んでの第2回では改善されましたが。


第1回は環境周りやPython自身についてのお話だったので付いていけないのでは?という心配は取り越し苦労でしたが、既に投稿済みの第2回からレベルが跳ね上がりました。

1人アドベントカレンダー15日目「Sphinx ハンズオン #1」

Sphinx ハンズオン #1 2011/12/14 19:30 to 21:30

http://atnd.org/events/22421

今回は色々と自業自得な所で身になった所が少ない為、感想少な目です(汗)

知らない方にご説明しますとSphinxとは「reStructuredText(reST)」というマークアップ言語を基本の記法としたドキュメント作成ツールです。
詳しくはこちらへ

http://sphinx-users.jp/

せっかくですので、ソースコードの可読性が高いという話が「たぶん」あがっていたのではないかと思いますので本日はreSTで書きたいと思います。

当日参加できるまでの経緯
====================================

1) 補欠で3番目に登録。間違いなく繰り上がるだろうと予測。

2) 開催日間近になっても繰り上がらない。ちょっとあせる。

3) 直前になって枠が5人分増えたので、繰り上がった!

4) しかし、前日のエキスパートPython読書会の際に、完全に初心者向けで初心者に広めるための勉強会だという事を開催者の方から強調される

5) 当日、実質キャンセルがほとんど無い事に申し訳なく思って、本当に使ったことの無い方の為に自分がキャンセル

6) 未練がましくツイートをしていたら、開催者の方にお情けで来ましょうよ、と誘って頂けた

7) 仕事が終わってダッシュで向かうも、寝過ごして新宿3丁目で降りる。

8) 何を思ったのか、もしかしたらこのまま歩いたほうが早いのかも、と歩き出す

9) 遅刻して到着

10) 遅れてすみません!


Sphinxインストールまで
====================================

1) 普段使い慣れていないubuntuでSphinxを使う!というコンセプトで「インストールから始めます」と申し出た所、インストールから始める初心者グループへ案内して頂いた

2) PCを起動した所、何故か無線LANに繋がらない!

3) インストールから開始グループは、@tk0miyaさんと@shkumagaiさんが講師役でしたが、無線LANに繋がらない程度で邪魔をするわけにも行かず。

4) 時間の空いた時に@tk0miyaさんと見回りにきた@takanoryさんに無線LANパスワードを間違って入力している事を指摘して頂いて、やっとネット接続。この間1時間弱。

5) そこからは、一生懸命課題のプリントアウトされたサンプル議事録を写経。合間に@tk0miyaさんと@shkumagaiさんの説明に耳をそばだてるも、2人とも意外と違う教え方をされていて、どっちも聞きたいとか思ったり。


所感
====================================

* いくつか質問したい事があったのに、なんだかんだで質問する機会を逃した。

* 講師役の方の教え方はやっぱり違うな、という感じ。知識量も違うし、何より説明の仕方が丁寧。見習う必要あり。

* 中途半端に写経とかしないほうがよかった。自分の場合は基本的な事は知っていたので講師役の方の話のみに集中していたほうが有意義だった。

* そのうち、自社でSphinxハンズオンやりたい。人が集まれば・・・

* 次回は、モヒカン部屋で揉まれたい

* 今回の自分はぐだぐだで終わった

* 懇親会と帰りの電車も楽しかった。千葉仲間が増えた!

Windowsユーザの私がSphinxでハマった所

本日はSphinxハンズオンに参加させてもらう予定です。場合によってはキャンセルするかもしれませんが・・・
さて本当は、もっときちんとした形でWindowsユーザ用のインストール手順〜buildする所までを記事にしたかったのですが、どうしても時間が取れず。

Windowsを使っている事で私がハマったポイントをあげておきます。同じWindowsユーザの方の参考になりますように。

Pythonインストール時の注意事項

まずPythonをインストールする必要があるのですが、実は既にPythonがインストールされていたりしませんか?例えばTraclightningを使っていて、新たにPythonをインストールすると色々混乱します。
まずはコマンドプロンプト

echo %path%

と打って、Python関連のパスが無いかどうか確認したほうがいいかもしれません。
既存のPythonがあるなら、それを使うか、新しくインストールするかを詳しい方に聞いてみて下さい。

rstファイル編集時

sphinx-quickstart

を打つと、基本的なファイル、ディレクトリが作成されます。その中に「index.rst」というファイルがあり、これは必ず編集する事になると思うのですが、生成された段階で文字コードsjis(cp932)となっています。
文字コードUTF-8に変更しないと、buildした時に文字化け、あるいはエラーが出てbuildできないという事になります。

      • -

とりあえず上記2点を抑えておけば大丈夫な気がします。

1人アドベントカレンダー14日目「エキスパートPythonプログラミング読書会 第二期 02」

エキスパートPythonプログラミング読書会 第二期 02 2011/12/13 19:00〜22:00

https://connpass.com/event/118/

初回の読書会の感想と前後してしまいますが、昨日開催された第2回目について先に書きます。

場所は目黒のバリストライド株式会社様の会議室。

自己紹介

少し遅れて行ったのですが(ビル前で@kashew_nutsさんとご一緒に)何故か講師役の清水川さんの周辺には誰も座っていなかったので、少しでもお声が聞こえるように斜向かいに着席させて頂きました。
始まってすぐに、今日は机ごとに自己紹介。やはり人との出会いは大切ですよね。
私のいた机のメンバはこの方たち。

@shimizukawaさん
@lincolinnyanさん
@inoshiroさん
@takuan_oshoさん
と、遅れてきてお伺いできなかったもう御一方。

本編

自己紹介が終わって本編始まりましたがレベル高いです。
範囲が実際のコーディングについての2章。

@t2yさんの前回の資料も少し参照
http://www.slideshare.net/t2y/py-02-2-5316487

自分のツイートをまとめるとこんな感じでした。

  • 内包表記
    • enumerateにはこんな使い方がある
    • mapよりリスト内包表記のほうが速い
    • コンパクトに書けるならリスト内包表記で。長くなるようならば素直に構文を使って書く。
    • リスト内包表記をネストさせて嫌われた事のある人いますか? [x for x in [y for y in [z for z in range(10)]]]
  • "import this"と打ち込むと19の詩編が出てくる。The Zen of Python, by Tim Peters ...
  • イテレータ
  • ジェネレータ
    • fibonacci関数(実際はジェネレータ)で説明
    • 配列を作ろうとしてもずっと続くので、メモリを圧迫してしまう。
    • yieldが入ってるとジェネレータになる
    • 巨大なログを読み込む時などにジェネレータが使える
    • openは1行ごとの読み込み等やってくれるので通常は問題ないけど、フィルタをかけたり全部読み込ませたい時に使える
    • ジェネレータは基本的には戻らない
    • sendは外からyieldに返り値を渡す物
  • コルーチン
    • マルチスレッドじゃないけど、yieldで一旦止めて、他の処理をさせて・・・並行処理をしているかのような感じ
      • ジェネレータでぐるぐる回してやって、外から何か変化があった場合にyieldで渡してあげる
    • リスト内包表記の記述をちょっと変えるとメモリ消費が抑えられる。[x for x in range(10)] ⇒ (x for x in range(10)) これがジェネレータ式
    • 3系ではxrangeがrangeになるので、今2系ではあまりメリットが無い。量が大きい時に使うくらい。
  • map,reduce,filter
    • リスト内包表記があるので、reduce、filterは使わなくても、あまり問題はでない
  • Pythonは式と文を明確に区別している
  • PEPは議論する為のもの

それからmap、reduce、filterは高階関数なのかと思って、ずれた勘違いでツイートして@shimizukawaさんにご迷惑おかけしてしまいました。申し訳ありません(汗
他にも、ツイートでいくつか教えて頂いた事もありました。リプライ頂いた方、ありがとうございます。

ビアバッシュ&LT大会

3名の方+αがLTしました。

  1. @tk0miyaさん
  • みんなLTをやろうよ!という内容でした。実際後の2名の方も名前の通った方でLT常連でもあります。
  1. @takanoryさん
    • ご自身の活動状況をLTされてました。「知ってますよね?」の連発でハードル高かったです(笑)
  2. @shomah4aさん
    • ご自身の活動やイベントの告知をされてました。横浜.pyは私も参加させて頂きます。

また、今回は私が初めて自発的にLTをやってみました!

今までは、ワークショップで何故かリーダー役に指名されて発表とか、人の後押しでハッカソンの発表をやったりしていました。
が、先日、社内での発表があまりにも無残であった為、そして自分はほっとけばいつまでも逃げてしまう性質なので、これからは許される限り勉強会ではLTをやって、人に伝えたい事を伝える、自分を追い込むという事をしたいと考えての事です。

テーマは、

「下には下がいる」

まだ感想を投稿していませんが前回の「Python mini Hack-a-thon」がきっかけで初心者が発表する事で他の初心者のアウェイ感を失くす事ができると教えて頂いた事がきっかけです。

時間もなく、その場で10分少々で作成したショボイ内容でしたが、なんとか発表できました。これが人の為になったかどうかはわかりませんが・・・

自分にとって不意打ちだったのが @takanoryさんからの「ブログは?」という言葉。
まさかこのメンバの中にブログを読んでる人がいらっしゃるとは思わなかったので、恥ずかしいやらなんやらで知らないフリして逃げようかと思ったのですが勇気を出して紹介させて頂きました。
@kashew_nutsさんもご存じだったようで(^-^;

所感
  • とにかくプログラミングスキル不足が感じられてしまってます。毎日数行でもいいからコードを書く事にしました。
  • ぼっち体質が全然改善されてません。いいから知らない人の所にどんどん入って行くようにしたいです。

1人アドベントカレンダー13日目「自社講習 めざせ!コマンドラインマスター」

自社講習 めざせ!コマンドラインマスター 2011/11/04 19:00 to 22:30

4週連続の自社講習のうち2回目。
この日は、1回目のテキストエディタ講習と違い、参加者が2名という残念な結果に。

概要としては、コマンドライン≒シェルの基本的な考え方を1つ覚えておけば、WindowsでもUN*Xでも通用するんだよ、という事を説明する為の初心者向けハンズオン。

内容

人数も少なかったので、さくさく進めていく事ができました。
受講者のスキルも高かったので身に着いたのではないかと思います。

しかし、このライン最低限ウチの会社の技術者全員にわかっていて欲しい・・・

1人アドベントカレンダー12日目「第6回アジャイルサムライ読書会 BIGLOBE道場」

第6回アジャイルサムライ読書会 BIGLOBE道場 2011/11/02 19:00 to 21:00

http://atnd.org/events/21228

NECビッグローブ株式会社様主催で大崎ゲートシティで開催。
外部の方に公開、募集したのが今回が初めてで、第5回までは社内の方のみで実施していたとの事。

それぞれの名前がわかるように、まず自分のネームプレートを書く所から。

構成は、BIGLOBE様のサービス紹介から、LT、次にワークショップで本の読み合わせはしませんでした。

最初のLTで@kanno_kannoさんの「アジャイルは会話である」が心に響きました。

休憩をはさんでワークショップ。アジャイルの経験歴でチームをバランスよくA〜Fチームまで作り

  • どうすればプロジェクトを失敗させることができるか?

というテーマでディスカッションをし、意見をまとめました。
私が所属していたEチームの結論は、こんな感じ。

PJを破たんさせる為には?大きな要因はいくつかありますが、私たちは「コミュニケーション不足」を取り上げました。
話し合わない状態を起こすためには、「ミスがあったら人(人格)を非難する事によりチームの不和を生じさせPJを破たんさせる事ができます。

後半のワークショップは、ワールドカフェという形式で、リーダーだけが残り他の人は別のテーブルに移動し、前のディスカッションの『プロジェクトを破たんさせる為の方法』に対する、アプローチやソリューションを検討するという物。

ここで私は色々な事を教わりました。

  • 個人の成果ではなく、チームの成果であるという事の認識があれば、個人のミスを非難するスパイラルに陥らない
  • scrumは上下関係なくフラットで考えるべき。チーム全員で考えて物事を進めていく→自己組織化
  • 問題を解決をするにはふりかえり
  • ウォーターフォールはリーダーが独裁者となって進める。良いリーダーであれば成功する。必ずしも悪い方法ではない。

余談としては私のいたEチームにはリーダーが初めにいたのですが、私がディスカッションの結果をつぶやくという事になったばかりに私がリーダー役に。
最後の発表も私が行うハメに(^-^;

所感

読書をするだけではわからない経験者の生の意見が聴く事ができ、また勉強会での初めてのワークショップという貴重な体験&発表までしてしまった(させられてしまった?)という実りが多い勉強会でした。