#yidev 第19回勉強会を開催しました

横浜 iPhone 勉強会

#yidev 横浜 iPhone 勉強会の第19回を開催しました。


新緑も色づき始めた に、横浜馬車道のI.S.O 横浜 でyidev 第19回勉強会を開催しました。

自分が主催を引き継いでからこれで 4 回目、人に恵まれなんとか無事にここまで開催を続けることができました。今回もまた新しい顔ぶれも加わって、おかげさまで楽しい会になりました。

yidev 第19回勉強会 : ATND

開催目線での振り返り

今回もまずは開催の目線で会を振り返ってみます。

会場準備

使わせて頂いている会議室は、基本はこのような机の並びになっています。

これを並び替えて使っているのですけど、どうしても机の配置が窮屈になってしまっていました。

これまで数回開催して行く中で『少しでも余裕を持った配置にできたらいいな』と思いながら過ごしていたのですけど、前回と前々回に少し早めに来られて準備を手伝ってくれた吉川さんと八十嶋さんによって素晴らしいアイデアが生まれました。

この方法なら気になっていた部分が僅かながらも余裕を持たせられそうで、なかなか良い感じがしますね。素敵なアイデアをありがとうございました。

実際にも悪い感じはしなかったので、次回もこの形で行ってみたいと思います。

時間配分

おかげさまでいつも楽しく盛り上がり、ついつい時間を忘れがちな yidev ですけれど、そこが自分の好きなところだったりするので、そうなってもいいように、というか安心してそうなれるように、今回も詰め込み過ぎずを心がけてタイムテーブルを組み立ててみました。

とはいえ、今回は正式な募集開始前の事前告知をした途端に発表枠がぜんぶ埋まるという盛況振りで、その後に声をかけてくれた方々にお断りを入れないといけなかったのが心苦しいところでした。

とはいえ、工面して入れて時間不足で駆け足みたいなことの方が、せっかく準備してきてもらって心苦しいところでもあるので、今回みたいな余裕を持たせるくらいな感じがちょうど良いのかもしれませんね。

枠に入れられきれなかった場合は、その次の開催のときに優先的に入れられたらいいなと思っているので、枠いっぱいでもぜひぜひお声をお掛けくださいませ。

やっぱりいろんな人の「楽しい」思いを聞かせてもらえるのって勉強会の醍醐味です。

そして時間を少しオーバー

そんな感じで余裕を十分持たせて臨んだ勉強会でしたが、思い掛けなく自己紹介が盛り上がって時間がわずかに不足しました。

自分がこんなオープニングスライドを持ち出したのが、そもそもの原因だったかもしれません。

#yidev 第19回勉強会 - オープニング from Tomohiro Kumagai

節々にヘンな狙いを散りばめてみたせいか盛り上がり、良いお話も聞かせて頂けたりしながら、その後の各参加者の自己紹介もちょっと盛り上がったりとかして、超過 30 分で楽しく自己紹介タイムが終了しました。

その後はみんな持ち時間をぴったり上手に使って進めてくれて、常に最初の 30 分オーバーで、無事に会は進行して行きました。最初の影響で最後は少し時間をおしてしまいましたが、今回はまさに自爆ですね。

それでも発表者の時間を削ることなく終えられて、ほっとひと息です。

発表内容の振り返り

それでは、今回の発表内容を振り返ってみましょう。

Programming Complex Algorithm in Swift

最初は @thousandnightsさん の『Swift を深く学習するために、難解な課題に挑戦してみよう』というなんともたくましい主旨で始まるお話でした。

Programming Complex Algorithm in Swift from Kaz Yoshikawa

課題はまさに「将棋アルゴリズム」という、掲げる主旨にふさわしい話題で、最初の最初に仕込まれたネタで笑いを誘い、途中の DEMO でサクッと王を取られたりとか、しかも途中で将棋よりも『日本語でどう名前をつけるか?』に焦点が当たったりして、難しさに偏ることなく楽しい流れが良い感じでした。

それにしても、案外『日本語でどう名前をつけるか?』の話題でけっこう盛り上がれたりとかして、そんなところもとても面白かったです。

CocoaPoder と 賢者の宝石

続いて @niwatakoさん の『Mac に Ruby 環境を構築する方法』のお話でした。

こちらもいきなり タコクラゲ の生態の話から入るという、ネタの仕込みに余念がなくて、しかもそれがかなり深いものだから、タコクラゲが本題でもぜんぜん通用しそうな勢いでした。生命って不思議なことでいっぱいですね。


さて、そんな発表の本題は Mac で上手に Ruby 環境を構築するためのツールのお話でした。

話を聞いて感想としては『ものすごくたいへんそう』という印象でした。各プロジェクトごとにメジャーバージョンを変えて維持できるという効果の威力はわかるのですけど、それを実現するために把握しなければならないことの多さが、うっかり間違えて操作したときの被害を甚大にしそうなようにも思えました。

これは、上級者が必要に迫られて苦悩した人が活路を見いだす、たしかに『賢者の石』かもしれませんね。

ほとんど Ruby に触れたことすらない自分には縁が遠そうですけれど、自分もいつか Ruby でこんな課題に直面したときに、今回のお話を思い出して苦労して、ありがたみを噛みしめる日がくるかもしれません。

OpenCV 3.0 on iOS

そして @shu223さん による、OpenCV という画像や動画を高度に処理するライブラリのお話でした。

OpenCV 3.0 on iOS from Shuichi Tsutsumi

この OpenCV というライブラリ自体は iOS 3 の頃からあったらしく、それが長年の沈黙を経て 3.0 としてメジャーアップデートを果たす間近、そんな今が熱い技術なのだそうでした。

自分は OpenCV という言葉を意識せずに過ごしてきたのですけど、これを使うと顔以外のものを、たとえば車やロゴなどを検出して追いかけたり、顔の映像からそれが誰かを認識したり、文字を認識させたり、画像から要らない部分を取り除いて自動修復したり、そんなことが簡単に実行できたりするそうです。

そんな OpenCV の魅力を垣間見れる、発表テーマに仕上がってました。相変わらずな、現場での実用性のとても高そうなお話ですね。


そして、この手の技術は @sonson_twitさん が専門に取り組まれているそうで、彼によりときおり添えられる専門知識に裏打ちされた見解がまた、話を深く、興味深いものにしてくれました。

そんな二人三脚な発表の感じがまた面白くて微笑ましい、とても楽しい発表でした。

今回の発表に込めた思いを垣間見られる 『堤さんご本人のブログ記事 も公開されていますので、興味の湧いた方はそちらもご覧になってみてください。

Swift で多層型で戻り値を返すことの是非と雑談

続いて @sonson_twitさん からは、2ちゃんねるビューア「2tch」の審査の裏話的なお話と、Swift による Functional Programming な話の 2 本立てでした。

Swiftで多層型で戻り値を返すことの是非と雑談 from Yuichi Yoshida

この頃の App Store の審査が厳しいという話を耳にするたび、なんだか完全に趣向的な偏りが見られるような気がしてちょっと不安を覚えるような。

先日に「爆発」という言葉が引っかかったみたいな話を耳にしたりして、ともするとそのうち「肉料理の写真があるからリジェクト」みたいなことにも成り兼ねなそうな不安も感じたりしながら。


そしてお話は Swift 言語のお話へと進みました。

自分はこの手の話題に興味があって、この頃ようやく Swift のお話も表に出てくるようになってきた印象ですけど、普段はほとんど触れる機会がなくて、とても嬉しいテーマでした。そしてお話を聞いていて、なにやら Slack というところで Swift について活発に情報交換されている様子みたいですね。


さて、お話の内容は『正常かエラーかを列挙型で扱って、さらにそれを演算子でチェインすると美しいコードが書ける。が、これが理想的な方法なのか』みたいな、問題提起を含む話題でした。

こういうみんなとの情報交換を目的にした発表って、勉強会らしいなって感じて好きだったりします。

なかなか難しいテーマでしたけど、幸い自分は以前に こちら でお話したような、演算子の奇妙な挙動に直面した経験があったので、主に演算子の部分についてお話に混ざることができました。

自分はメソッドチェーンは 3 つくらい続くと頭が追いつかなくなるせいもあってか、避けたほうが読みやすくなるのではないかと思ってますけど、囲碁とかの世界みたいに、その 3 手先も普通に読めるようになれば、また違った世界がみられるようになるのかもしれません。


戻り値については、成功か失敗かの二者択一なので enum がきっと適切なんだろうなと思いながら、それと合わせてよく登場する Box に少し違和感を覚えたりします。

違和感と言っても、なんで Swift の列挙型はジェネリックを含む値を素直に 2 つ以上持つことができないのか、そんな疑問からくる違和感ですが。

こんなとき『なんで Swift はそうなっているんだろう?』と肯定的に眺めてみると綺麗な何かが掴めることが多かったので、この件ももしかして Box 以外の最善の手がどこかに潜んでいるんじゃないかと、なんとなく思ってみたりしていました。

Advanced Realm in Swift

そして @kitasukeさん からは、自作の UI コントロール「PagingMenuController」のお話と、純粋な Swift で使える Realm についてのお話でした。

Advanced realm in swift from Yusuke Kita

Realm というのは、今をときめくデータベースシステムのひとつですけれど、それがいよいよ Swift に純粋に対応したとのことで、どんな感じに良くなったかですとか、どの辺りに注意して使うと良いかとか、具体例を添えながら分かりやすく紹介されていました。


それにしても、発表資料の全てが英語で記述されていて、先を追いかけるのが得意な人はやっぱり英語も自在に操れるのね、と思いながら眺めていました。

自分はどうも英語を不自由なく使えるようになれる気がしないんですよね。ドキュメントの英語ならまだ読めることも多いのですけど、それでも手に負えない文がたくさん出てきたりとか、人とコミュニケーションを取る英語になると意味を微塵も汲み取れなかったりするのが大半だったりするのでした。

ここまでくると勉強するとかしないとか以前に、そもそも何かを根本的に勘違いしているのかもしれない予感がします。幼い頃に BASIC で、配列の存在を知らずに A1, A2, A3, ... と 100 個くらい頑張って変数を作ってたみたいな。

と、話が大きく逸れましたけれど、英語ができるかどうかもけっこう大きな違いを生みそうですよね。この頃になってそう感じる機会が増えました。

Introducing @import Framework

そして @dealforestさん からは、Xcode 6.3 で使えるようになった LLDB にフレームワークをインポートして使えるというお話でした。

これを使うと LLDB でのデバッグ時にフレームワーク内に定義された定数や列挙子を使ったり、コマンド実行時に型のキャストを定義に従って行ってくれるという機能ですが、これを毎回手作業で実行しなくても使えるようにするにはどうしたらいいか、そんな工夫のお話でした。

さまざまな工夫も打ち砕かれ、結局は Xcode のプラグインを作ることに行き着いたという力技でしたけど、プラグインに可能性を見つけたあとで、実際にそれで実現させられてしまうあたりが流石でした。


そんな機能を組み込んだ Xcode プラグインは、今は dealforest/Tuna の一部として提供しているとのことですので、気になる人は使ってみると楽しいかもしれません。

そればかりでなく、この Tuna というプラグインは、強力でありながら日陰に隠れがちのブレークポイントに陽を当てる強力なツールになっているので、そちらもぜひ活用するとデバッグが面白くなりそうです。

Replia : デザインからコードを生成するツール

そして最後に @hirobeさん から、とっておきのデザインツール Replia の緊急発表と、それにまつわる技術についてのライトニングトークがありました。

Photoshop apis from Kazuya Hirobe

Replia というツール、Photoshop で作成した画面デザインから簡単に、Objective-C や Swift のコードに変換したり、ダイレクトに Storyboard を作成できてしまうツールで、そのパワフルすぎる様子にもはや会場は話題騒然でした。

勉強会の当日はまだ近日公開な Replia でしたけど、満を持してついにリリースされましたので、興味のある人はぜひチェックしてみてくださいませ。

Replia

まとめ

今回も和やかムードで楽しい時間を過ごさせてもらえて、とても幸せ心地でした。

次回はまた 7 月のうちくらいに開催できたらいいなと検討しているところですので、よろしければどうぞご参加くださいませ。発表者も 5 名ほど募集させて頂くと思いますので、話題を温めて頂いて、話すことが決まったらぜひ、募集前でもお声をかけてくださいませ。


それでは最後に、今回の勉強会に関するリンクを幾つかまとめておきますね。