勉強会

#121 Python Developers Festaに参加してきた

さる7月の土曜日、Python Developers Festa(通称pyfes)に参加してきました。

Python Developers Festa 2012.07

僕が観測した時は、昨年の11月と今年の3月にも開催されていたpyfes。
しかし登録はしていたものの、諸処の都合によりどちらもキャンセルをせざるを得ませんでした…。

念願叶っての初参加です。

Python初心者ハンズオン

上記のリンクにもあるとおり、午前中は幾つかのハンズオンが開催されていました。
Pythonを業務で使ったことがない僕が初心者なのは疑いようもないだろうと考えて、初心者ハンズオン(Aのハンズオン)に参加しました。

初心者ハンズオンと言いますが、手取り足取り教えてもらうようなものではなく、以下の資料を参考に課題を解いていくというものです。

Python Developers Festa 2012.07 ハンズオン 初級

最初のsocketサーバに手こずってしまいましたが、何とか時間内にすべての課題を解くことができました。
ソースは以下のようにGistに上げています。

Python初級ハンズオン in #pyfes - Gist

やり方が素直じゃなかったり、同じようなことをやろうとしているのに微妙にコードが違ってるのは、その時の思いつきをコードにしているからです。
実際に仕事や個人プロジェクトで書くなら、良さそうな書き方に統一していると思います。

久しぶりにPythonにのめり込んで楽しかった!

発表タイム

ハンズオンが終了してから、15時くらいから発表タイムが始まりました。

つらつらと書いていくよりは、とても素晴らしいまとめブログがありましたので、そちらを紹介させていただきます。(他力本願)

Python Developers Festa 2012.07 に参加しました。 - kashew_nuts-tech

どの発表も素晴らしいなぁと思いましたが、その中で特に感銘を受けた3つを資料へのリンクとともに簡単に述べてみます。

Sphinxで翻訳してたら本が出てた話

「ドキュメント翻訳でもOSSには貢献できる」
この1フレーズが私の心にとても響きました。

知ってる人は知ってるかもしれませんが、私はF# という言語がお気に入りです。
みんなもっと使うようになって、仕事でも普通に使われるようにならないかなぁと思っています。

この言語を使おうとする人たちの助けになればと、このブログでも色々と記事を書いています。
しかし、自分の発する情報を含め、国内の情報だけではまだまだ足りません。
海外では、もっと情報は多いですし、働き口も日本と比べてとても多いです。
この良い流れを日本にも取り入れていきたいですよね。

そうした時に、翻訳記事を書くというのはとても大きな意味を持ってきます。
僕も機会があれば、ちょくちょく翻訳エントリを書いて、F#の良いところを伝えられたら良いなと思います。

勉強会を成長させる参加者になろう!

この発表は、勉強会初心者やまだ行ったことない人にぜひ聞いて欲しいものでした。
勉強会に行くって、どう良いことがあるの?誰にとって良いの?ということが分かりやすくまとめられていました。
参加者にも主催者にも、「情けは人のためならず」のように、とても良い効果を与え合うということに気づくことができました。
私もちゃんとフィードバックをして、よりよい勉強会を作るお手伝いがしたいですね!

それと、今まではさをんさんがイラストみたいなふわふわした人かと思っていたんですが、実物はめっちゃ格好いいお姉さまでビックリしました。
Pyfesステッカー、有り難く使わせていただきます(・∀・)

8ヶ月間、勉強会を開催してみて ~IT系コミュニティ1年生からの勉強会運営〜

すごくしっかりと準備をして勉強会を運営してるんだなぁと感心しました。
それとともに、曲がりなりにも読書会を開いてる自分は、「ゆるふわ」という言葉を免罪符に、全然ダメだったなぁと恥ずかしくなりました。
せめて、前日のフォローに参加予定者への連絡くらいは しようと思います…(´・ω・`)

まとめ

Pythonコミュニティは結構前からTwitterなどで追いかけていましたが、僕が見ている他のコミュニティとあまり接点の無い方が多くて、ちょっとドキドキしていました。
でも、この独特の空気感はすごく居心地が良くていいですね。

ステキなイベントに参加できて本当に良かったです。
運営、発表者の皆さん、どうもありがとうございました(・∀・)
また機会があれば、こういうイベントに参加したいです!


あ、そう言えば9月にこういうイベントがありましたね!(演技派)

Python Conference Japan 2012

9月は函数プログラミングの集いや私用があったりして、行けるか微妙ですが、YAuthが通れば参加してみたいなぁ。
(まずは函数プログラミングの集いのYAuth認証をしないと…)

#118 Cafe.Spockに参加してきた

今日は、Cafe.Spockというプライベートな勉強会に参加してきました。

この勉強会は、Groovyのテスティング・フレームワークの1つであるSpockを使ってみよう、というハンズオン勉強会。
Groovy+Spockの組み合わせは、先日のTDDBC大阪でもJavaチームを席巻するほどの人気っぷり。
SpockやGroovyの事前知識はなくても大丈夫という謳い文句で、実際、その場で調べたり、主催者兼講師であるきょん君(id:kyon_mm)に聞けるものでした。

Spockの準備

Spockは、僕の場合は公式ページを参考に準備しました。

GettingStarted - spock

IntelliJを使う場合の設定は、大まかに次の通りでした:
  1. Groovyのバイナリをダウンロード
  2. JUnit4をダウンロード(きょん君曰く、Groovyに含まれてるから必要ではないらしい)
  3. SpockのCoreライブラリをダウンロード
  4. IntelliJ IDEAを立ち上げ、プロジェクトを作成する
  5. FIle -> Project StructureメニューからModuleを選択し、DependencyタブでGroovy、JUnit、Spockを追加する
たったこれだけです。

お題

最初に簡単にSpockでのテストの書き方をレクチャーされたあと、TDDBC大阪2.0のお題を実際にやってみました。

TDD Boot Camp 大阪 2.0/課題( #tddbc )

ペアプロするハンズオンだったので、最初に id:megascus さんと、ペア交代後は id:y_sumida さんと作業を進めました。
そして、制限時間までに出来上がったのが次のコードです。

Cafe.Spockの成果物 - Gist

Moneyクラスがあったり、さらにそれがFactoryメソッドを持っているのは、僕の趣味の問題ですw
まぁ、あとでリファクタリングしようと思っていたんですが、不測の事態によりその時間がとれなかったという…orz

不測の事態

その不測の事態というのが、テストコードの一番下のテスト(テスト名が意味不明のもの)になります。
なぜか、これにUnrollアノテーションを付けていると、テストが実行されず、exit codeが-1となってしまうというものです。
原因は不明で、@Unroll を外すとテストがちゃんと実行されるので、ひとまずそれでお茶を濁してみましたが、この解決のために20分以上も試行錯誤してしまいました…(´・ω・`)

いま帰ってきて、再び @Unroll を付けてみたら、何でかちゃんと動くし、わけがわからないよ。。

まとめ

SpockもGroovyも、ましてやJavaもほとんど分からないという前提で乗り込んでしまいましたが、Groovy + Spockはなかなか面白かったです。
特に、パラメタライズドテストの引数にリストを渡して、その引数にeachメソッドを使うことで、複数処理が一度にできた時はなかなか快感でしたね!

最初、メソッド名をUpper Camel Caseで書き始めてしまったのは職業病ですww

#117 TDDBC大阪のお手伝いをしてきました

すごく今更感溢れるエントリですが、6/2の1.0、そして6/3の2.0と、それぞれのTDDBC大阪にTAとして参加してきました。

そもそも、昨年11月のTDDBC福岡2.0でTDDBCに初めて参加したばかり。
役立たずのTAになるかもしれないことを覚悟の上で、それでも経験者として何か出来ることがあるんじゃないかと腹を括ったのが、人生2度目のTDDBC参加でした。

TAをやってみて

僕のサポート可能言語として宣言しても良さそうなのが、C#、Python、F#くらいしかなかったこと、そしてTDDBC大阪の両日共にJava(むしろGroovy推しのJVM勢)の参加者が多かったこともあり、言語サポートとしてはほぼC#のみというすごく狭い範囲でのお手伝いに終始しました。

それでも、TDD自体が初めてという参加者が多かったので、貧弱な知識と経験ではあったものの、少しはTDDのやり方と良いところを感じてもらえたかなぁと思いもしています。



1日ポッキリのイベントを、連日行うという特殊な形式になりましたが、1日目に上がった問題点の多くを掬い上げ、それを2日目で改善させられたというのは本当にステキなことだったと思います。
とは言え、予めそういうところを行動に織り込める状態になっていたら、1.0の参加者の皆さんに、もっとステキな体験をしてもらえたんじゃないかと思って、申し訳ない気持ちにもなります…(´・ω・`)

あと、1.0の懇親会でもっとピザ食いたかった…(´;ω;`)

初めてLTしてみた

それから、これはお手伝いとは関係のない話ですが、人生初LTというやつもここでやってきました。
TDDBC大阪1.0のランチタイムLT(これ、lunch time LTになって、なかなか面白いと思うのだが)ではお仕事でTDDやってみた的な話、懇親会での闇LTではF#とNaturalSpecについての話をしてみました。

お昼のネタは、その前夜に、それまで準備してきていたネタが本会で話すべき内容かどうか怪しくなってきたため、急遽用意したものでした。
いきなり拵えた内容にしては、意外とそれなりのものになったかなぁとは思います(少し薄っぺらくなったのは反省点)


で、温めていたネタを闇LTに投下しました。
アレをお昼にやってなくて、本当に良かったと思っていますwww

謝辞

このTDDBC大阪への参加に至る中で、色んな人に僕自身がサポートしてもらえました。


直前の5月末まで、仕事の都合で福岡におり、大阪への移動と宿泊先をどうしようか悩んでおりました。
1週前まで、新幹線移動+東横インということで(お財布的に)歯を食いしばろうと思っていました。

そこを、@irofさんのご厚意で2泊もさせてもらえたのです。
その副作用で、前日も夜行バス移動に切り替えられたという経緯があります。

本当に助かりました。ありがとうございます!


そして、そもそものTA参加自体で躊躇していたところを、1.0主催者であり両日共に会場提供で尽力していただいた@bufferingsさんに背中を押してもらえたことがとても大きいです。
エンジニアとしての自分と在り方に思い悩んでいた自分が、ひとつ、殻を破ることが出来たきっかけになったと思います。

あの声を拾ってくださって、本当にありがとうございました!


もちろん、参加された講師の皆さん、他のTA陣、会場を提供していただいた楽天さんにもとても感謝しております!
つーか、楽天カフェテリアまじでキレイ!あそこでイベントが出来て本当に幸せだ! #ステマ

さいごに

これからも、TDDBCで僕にできる限りのお手伝いはしたいなぁと思いました。
直近では、夏頃にTDDBC横浜2.0があるそうなので、もし人手が足りないようなら僕の日程を調整できないものかとは思っております。


また、もっともっと外に出て行くというのもやっていこうとも思っています。
LTだったり、そのうちセッションだったり。

まぁ調べ物や準備のために使える時間が、これまでより減ってしまうのはハンデではありますが、全く出来ないわけではないですからね。
特に、F#のコミュニティをもっと活発にできたらなぁと、草の根レベルで何かしらの貢献はしていきたい。
その時は、ネタにも走るつもりではいるけれどww

#99 第1回東京F#読書会を開催しました

勢いだけで、こんなものを開催してしまいました。

東京F#読書会 20110902 - PARTAKE

これは、名古屋でF#の読書会が開催されると聞いて、横浜の人と佐賀の人が羨ましがっていたところ、とんとん拍子に開催の方向で話が進んだのでした。

多くて10名程度の参加者だろうなと見込んで告知したんですが、想像以上に早く定員が埋まり驚きました。
ことF#の勉強会に関しては、名古屋と札幌の後塵を拝することの多かった首都圏ですが、意外と需要はあるんだなと実感しましたねヽ(´∀`)ノ

参加者

当日の参加者は、Twitter IDで以下の方々です。(申込順、敬称略) 
私が一番ビックリしたのは、Somaの中の人である@nakamura_toさんに参加していただけたことでした。
ドンちゃんも取り上げたソフトウェアの作者さんがふらっと参加するこの状況に、 「東京こわい」と思ったのは内緒ですw

内容

一応、主催者ということで告知や会場押さえはしたんですが、できれば参加者の皆さんに自由にやってもらいたいなと思って、条件は「F#であること」だけの縛りにしました。

この場を借りてお詫びいたしますが、本も読まずに雑談ばかりしててごめんなさいww
F#や関数型言語に造詣の深い方が参加者に数名いたので、彼らと一緒にあれやこれや喋ってばかりいました。
しかしまさか、「プログラミングF#」を最初の1ページさえ読み終わらないとは思ってなかったwww

雑談の内容

この時の雑談は多岐にわたりました。
私も追い切れないかもしれないので、@nakamura_toさんのブログを参考資料に上げさせていただきます。

[F#] 東京F#読書会第1回に参加してきました - taediumの日記

  • F#でnullを触るとどうなるの?
    ⇒やばいよ!
  • Noneって、使い方を間違えるとNullReferenceException出るよね?
    ⇒None.Valueしたら発生した!
  • 名古屋Scala勉強会はGoFのデザインパターンとScalaの関係について議論しているらしい
    ⇒関数型言語であることで勝手に出来上がる/不要になるデザインパターンって何があるの?
    ⇒StrategyとかCommandとか…
  • F#にScalaのtraitみたいのってあるの?
    ⇒ないと思う。mix-inはあまり必要になったことがない
    ⇒ビジネスロジック内で処理の内容を動的に変えたくなることもある
    ⇒変更したい処理を関数として渡すのはどうか?
    ⇒変更したい処理がたくさんあると面倒である
  • Scalaってbetter Javaとして見られるようになったけど、F#もbetter C#なの?
    ⇒F#が得意なところ、C#が得意なところがあるから、ある程度の棲み分けは可能
    ⇒ScalaはOOPからFPに近づけた、F#はFPからOOPに近づけたイメージ
  • F#にはStructural Subtypingはないよね?
    ⇒ないと思う。interfaceを使ってやるのではないか
    ⇒面倒だけど、頑張ればやれないこともない
  • F#の関数合成 羨ましすぎワロタ
  • パイプライン演算子いいよね!
    ⇒OCamlにはデフォルトではないもんね
    ⇒Scalaにもない。作ることは出来るよ
  • 逆方向パイプライン演算子、あれ何?
    ⇒引数の適用順序通りに並べてる印象
    ⇒アイアンメイデン何やってるか分からない
    ⇒アイアンメイデンこわい
    ⇒名古屋こわい
  • F#の勉強会というと、名古屋や札幌を連想する
    ⇒地域と言語って相関があるよね
    ⇒東京はPHPerとRubyistが多い印象
    ⇒Javaerは日本中に分布してるよね
    ⇒.NETerがどこで頑張っているのか知りたい…

大体こんな感じだった気がします。
スルーしちゃったネタもあるような気がしますが…。

てか、「F#ネタ縛り」を謳っておきながら、Scalaの話とか盛り上げちゃってごめんなさいm(_ _)m笑

今後のこととか

この東京F#読書会ですが、参加者の皆さんにも楽しんでいただけたようで、今後も続けていこうと考えております。
名古屋のF#読書会は第1回の2週間後に第2回を開催する方向のようです。

名古屋F#読書会 20110915 - PARTAKE

しかし東京組はどうやら隔週で開催・参加する余裕はなさそうでした…。
ので、月1回のペースで続けていこうと思います。 
まだ日程は決めていませんが、2週間前くらいにはハッシュタグ#tokyofsharpと共に告知できるようにするつもりです!

業務連絡

第1回に参加された皆さま。
当日も確認させていただきましたが、第1回でご用意できなかった飲食代のお釣りは、第2回にてお返しいたします。
各人でレシート発行してもらうとか、部分決済できるよう事前に取り計らっておくべきでした…すみませんm(_ _)m

まとめ

F#の風は名古屋や札幌の方が強く吹いているように見えていましたが、どうやら東京近辺でも力強く吹きぬける素地はあるようです。
今後もF#(あるいは他の関数型言語とも絡んでいくかも)を首都圏で盛り上げて行けたらいいなと思います!

最後に

May the F# be with you...!
(F#と共にあらんことを…!)

#96 SCM Boot Campに参加したよ!

SCM Boot Camp in Tokyo(1次応募)

参加してきました。
勉強会の感想をブログに書くのは初めてのことですね。
まぁ、今後もやるかどうかは全くの未定ですがw

イベントの目的


以下、概要の引用です>>>
近年のソフトウェア開発においてSCM※1の重要性が増していますが、SCMで重要になってくる「DVCS※2の概念・思想・パターン」を学習する機会はなかなかありません。
今後のソフトウェア開発に活かせるよう、講演と演習を通して「DVCSの概念・思想・パターン」を学んでもらいたいと思います。

※1 SCMとは?
Software Configuration Management(ソフトウェア構成管理)の略です。 ソフトウェア開発プロジェクトの成果物を管理する方法論です。

※2 DVCSとは?
Distributed Version Control System(分散バージョン管理システム)の略です。 Git, Mercurial, Bazaarなどのアプリケーションが該当します。
今回のイベントで参加者の皆様に実際に操作してもらうアプリケーションです。
<<<引用終わり

ソフトウェア開発において欠かすことの出来ない「バージョン管理」に着目した、ハンズオンを含む勉強会でした。

お仕事でソフトウェア開発をしている人なら、何かしらのバージョン管理システムを利用しているのではないでしょうか。
え、"BusinessApp_20110730.zip"でも良いかって?

君みたいな人にぜひ参加して欲しかったよ(´・ω・`)

参加した目的


私が参加した目的というか理由は、発案時から見ていて面白そうだと思っていたのが1つ。

もう1つは、個人的にGitとMercurialを使っていたんですが、使っているうちに
「同じDVCSなのに、同じようなやり方で出来ない or やりにくい。何だか想定される使われ方が違う気がするぞ」
と思ったからです。

Gitはけっこう情報が手に入りやすく、そのお陰で個人使用でも使い慣れてきました。
ですが、Mercurialは果たしてどう使うべきなのか、参考となるものがなかったのです。
なので、GitとMercurialの思想、構造、使い方などの違いを勉強させてもらおうと思ったわけです。

ちなみにお仕事では、良くてSubversion、そうでなければVの付く、あの名前を言ってはいけないVCSを使っています…。

イベントの雰囲気


SCM Boot Camp in Tokyo #scmbc

こんな感じですww

それじゃ分かりにくいという方に説明します。

まず、DVCS毎にテーブルが分かれているので、参加者は申込時に選んだDVCSの座席に座ります。
1テーブル4〜5人掛けで、Bazaar : Mercurial : Git = 1 : 3 : 6でした。
私はMercurialを選んでいました。

午前中からの前半は講演やLTがメインでした。
ただ、未経験者には(たぶん初級経験者にも)高度な内容が話されることもありました。
ここで分からないところがあったら、サポートの人たちに質問したり、関係書籍を読んで勉強してみると良いんだと思います。
ちなみに私は途中から思考停止していましたww

午後は実際にマシンとDVCSを使った演習でした。
お題は「各DVCSのチートシートを作成すること」です。
GitチームはGitの、MercurialチームはMercurialの、BazaarチームはBazaarの、といった具合です。
この演習が色々と大変だったようで、ここから #scmbc のつぶやきが激減します。
私たちのテーブルも他聞に漏れず、コンフリクトからのmergeやBitBucketへのpushなどで手こずりました。

なお、私たちのテーブルには文殊堂さん(@monjudoh)がサポートに入ってくれました。
サポートの皆さんはいずれもすごい方々ばかりでしたが、まさか文殊堂さんから直接Mercurialの使い方を学べるなんて、俺は引きが強い!笑


以下に私たちのチームで作業したBitBucketのリポジトリを上げておきます。
https://bitbucket.org/Gab_km/scmbc/changesets
私の持っているBitBucketのアカウント上に作りました。

学んだこと


今日は本当に良い勉強をさせてもらいました。
GitとMercurialの違いも何となくレベルですが分かってきました。
特に、ブランチのあり方を勉強できたのが大きかったです。


ぼっち開発ではGitを使うことが多いのですが、Gitはブランチが軽い、つまり作ったり扱ったりするのが簡単です。
(「ブランチが軽い」は、bleis-tift(@bleis)先生の言葉です。とても言い表していると思います)

ですが、Mercurialのブランチはそうでもありません。
作るのはそう重くないですが、履歴の切り貼りは簡単ではなく、またGitと違ってMercurialのブランチを削除できません。
なので、Git脳のままMercurialで作業していると、「あ、Mercurialでは上手くやりにくい」となっていたのでした。

Mercurialでは、Gitのようにrebaseを使って履歴とブランチを整理するのではなく、updateとmergeを使って整理するべき、というのが正解のようです。


またmergeのやり方も、正方向の(普通の)マージ(トピックブランチからdefaultブランチ(Gitならmasterブランチ)へのマージ)だけでなく、逆方向マージ(defaultブランチからトピックブランチへのマージ)も有効に使うのが良いと分かりました。

色んな人が突っ込むdefaultブランチにマージすると色々とアレ(ex. 競合が発生しやすい、競合解決中に他の人がマージできない、etc)です。
ですが、各人のトピックブランチにdefaultブランチをマージさせれば、競合は発生しにくく、発生したとしても自分のブランチなので修正は容易です。
さらに、逆方向マージを終えた後にdefaultブランチにマージすれば、競合は発生しないはずです。
すごい!(・∀・)

イベントを終えて


こんな素晴らしい勉強会、正直言って初めて参加しました。

企画してくれた方

サポートしてくれた方

メイドさん

また、いろふさん(@irof)さんも昨夜急遽イベントのサポートに招聘されたとか…w

ここに挙げた方々のお陰で、本当に素晴らしいイベントになったんだと。
会場を提供してくださった日本オラクルさん、イベントをバックアップしてくれたDevLOVE、Shibuya.tracの協力も大きかったと思います。
てか、どう考えてもサポートメンバーのレベルが高すぎです。
本当にありがとうございました。(敢えて省略しない)


あと、イベントの濃さのためか、会場には技術書を書かれた or 翻訳/監訳された方が多かったです。
恐るべし、SCMBC…。

最後に


俺もウサミミ付けたかった…><
プロフィール
あわせて読みたい
あわせて読みたい
記事検索
Project Euler
なかのひと
アクセス解析
Coderwall
  • ライブドアブログ

トップに戻る