ここ数ヶ月勉強会などで発表する機会がいくつかあったのですが、最近は技術系スライドをなるべく英語で作るようにしています。そこで英語でスライドを作るメリット・デメリットとちょっとしたコツについて、書きます。
第一回 Roppongi.aar(Android勉強会)を開催しました #roppongi_aar
9/29に六本木界隈のAndroidエンジニア勉強会である Roppongi.aarを開催しました。今回は発起人である @petitviolet が勤めてらっしゃいますFringe81さんが勉強会会場でした。
Fringe81さんステキな会場を提供いただきありがとうございました!
テンション冷めやらぬうちに、当日の発表スライドやツイート、今後へのフィードバックなどをレポートします。
英語を身につけたいエンジニアはmeetupでイベントを探すと良いかもしれない
先週日曜日に海外のイベント告知サービスであるmeetupからイベント(もくもく会)に参加したのですが、これ英語力つけたいエンジニアにオススメなんじゃね、って思ったので書きます。
meetupというサービスについて
日本だと勉強会等のイベント告知サービスはconnpassやatnd, dots.などが有名どころかと思います。自分も勉強会を探す時や主催する時は大体これらのどれかのサービスを利用しています。一方海外だとmeetupというサービスがもっとも有名です。サンフランシスコにいた時は、あらゆるイベントがここ経由で開催されていた印象がありました。手前味噌なんですが、USに来たら入れるべきアプリについて書いた以下の記事でも、meetupを入れてます。
機能としての差異はconnpassなどとそれほど大差ありません。あえていうなら、SNS機能が結構充実しているところでしょうか。
例えば、参加者をフォローする機能などがあり、イベント後に連絡取りたい場合などに活用できます。
また、参加イベントに対して自由にコメントする機能もあります。ちょっとした質問をする際に気軽に使うことができます。
特に英語圏を中心とした海外で利用されているサービスということもあり、日本で開催されるイベントの多くが外国人によって主催されていたり、英語が主となるイベントが多いようです。
(自分が参加しているグループ)
meetupからイベントに参加した経緯
meetupの機能にグループ機能というのがあります。グループに参加していると、そのグループで主催するイベントの告知が通知されて確認することができます。
その中でたまたまDev Japanというグループに参加していたのですが、そこでTokyo Developers Meetupなるものが開催されることを知りました。内容としてはいわゆるもくもく会のようなものだったのですが、休日にコーディングに集中できる場所が欲しかったので、参加することにしました。
(Dev Japanのコミュニティページ)
meetupに参加してみて感じたこと
meetupに参加してみて感じたこととしては、 "これ、日本で英語環境に身をおきたいエンジニアに最高な環境じゃね?" ってことでした。
思った以上にインターナショナル
今回の参加者は15名ほどだったのですが、場所を提供してくださった方と自分以外は全員外国人でした。さすがmeetupといったところです。参加者はフリーランスのエンジニア、転職を見据えてプログラミング勉強中の人、はたまた自分のように作業場所を確保したい人など様々でした。また国としても中国、シンガポール、ブラジル、スコットランドなど色んな国の人がいましたが、もちろん共通語は英語でした。
みんなとにかくしゃべる
とにかく始まった途端、初対面にも関わらずみんなぺちゃくちゃおしゃべりしながら作業していたのが印象的でした。
取り組んでいる作業とは別の仕事の話や、最近スタートアップ界隈であった面白い出来事などなんでもかんでも作業しながら話しまくります。ぼーっとしててもいきなり話しかけられたりします。
自分は最近勉強しているSwiftに取り組んだのですが、色々つまずくたびに隣に座っていたCookpadでiOSをやっていたというエンジニアに相談したり、おすすめの教材を教えてもらったりして、だいぶはかどりました。
(一枚だけ写真撮ってた。全然伝わらない現場の雰囲気...)
海外or日本にいる外国人の仕事事情なんか垣間見れる
今日本で仕事探しているけどVISAをサポートしてくれる会社がない〜とか
◯◯って日本の会社に入りたんだけど、中途はどうしたら楽に入れるんじゃろか?とか
外国人同士で日本での仕事事情の話を聞けて、これは全然日本人が日本の企業にアプライするのとは違うようで、面白かったです。
まとめ
今回日本では初めてmeetupを使ってイベントに参加したのですが、思った以上にインターナショナルな環境でしたし、もくもくする場でありながらアメリカっぽい雰囲気も味わえました。なので、
- コーディングもしつつ英会話なんかもしてみたいな
- 外国人のエンジニアの友達欲しいな
- 海外でのオポチュニティなんてないかしら
という方はぜひ一度meetupでイベントを探してみてはいかがでしょうか。
AndroidオールスターズでClean Architectureについて発表してきた&参考リンク集
先日dots.さんが主催するAndroidオールスターズという勉強会で、"Android Clean Architectureことはじめ"と題して発表してきました。
資料はこちらになります。
www.slideshare.net
また資料でお見せしたサンプルコードは https://github.com/tomoima525/CleanArchitectureSample になります。プリミティブな形でサンプルをお見せしたかったため、ほぼデファクトスタンダートとなっているRetrofitとButter Knife以外のライブラリは利用せずに書いています。
最低限の実装なので色々荒くなってるし、テストガーとか言ってたくせにテストも書けてないので、後ほどもう少しブラッシュアップしてテストも書きます。気になる方はwatchしていただければと思います。
設計とは(良いコードを書きたいっていう)意志であり、フレームワークなんて関係ねぇ
上記はUncle Bobさんの"Architecture is about Intent, not Frameworks"という言葉の意訳です。発表の最後でも話したのですが、結局のところ、設計はこの言葉につきるかと思います。
自分も、Androidの設計について色々調べ始めたきっかけは、1000行を超えるActivityやMVCと銘打ちながらもAndroid Frameworkが絡んでこんがらがってしまったコードをなんとかしたい、と考えたからでした。
今回は"The Clean Architecture"というUncle Bobが提案した設計思想をベースにした設計をご紹介しました。これ以外にも、MVVMやFacebookのFluxなど、様々な設計手法があります。一体何がいいのか迷ってしまいますが、これらのうちから一つ選んでまるっと採用する必要はなく、良いとこどりして出来る範囲で、コストに見合う形で、自分のサービスに取り込んで行けばよいのではないかな〜と思います。なので、資料でも、どこから手を付ければよいかの指針を書いています。
またチームで開発している場合、メンバーの意志を合わせていくことも重要になります。新しい手法を試す場合はチーム勉強会を開く、レビューで気をつけるなど、全員が同じ方向を向くように頑張らないと、設計が崩壊してしまいます。やっぱり意志が大事なんですね。
個人であれチームであれ、良い設計を通じて最終的には楽しく(ここ大事)迷わずサービスにフォーカスして作れることが一番だと思う次第であります。
Android Clean Architectureに関するリンク集
自分がAndroid Clean Architectureを学ぶにあたって参考にしたリンクをまとめておきます。もうちょっと学んでみたいと思ったら参考にしてください。
MVP
MVP for Android
自分が見つけた中で一番シンプルなMVPの実装です。Daggerなどのライブラリを使わずにシンプルにMVPのアーキテクチャを実装しています。
説明: http://antonioleiva.com/mvp-android/
ソースコード: https://github.com/antoniolg/androidmvpIntroduction to Model View Presenter
こちらもMVPのサンプルです。ただ、自分で作ったライブラリも利用しています。
https://github.com/konmik/konmik.github.io/wiki/Introduction-to-Model-View-Presenter-on-AndroidEffective Android UI
MVPの基本的な内容と、MVVMについても説明しています。
説明: http://www.slideshare.net/PedroVicenteGmezSnch/effective-android-ui-english
ソースコード: https://github.com/pedrovgs/EffectiveAndroidUI/
The Clean Architecture
- The Clean Architecture
Uncle Bobが提案したClean Architectureの説明です。平たく言うと、"ビジネスロジックをUIやフレームワークから開放しよう"といったところでしょうか。個人的には、この設計思想はとても優れたものだと思っています。
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
Android Clean Architecture
Architecting Android The Clean Way
恐らくClean Architectureをベースにした一番最初の設計なのではないかと思います。当初はシンプルな実装のようでしたが、今はDagger2, RxJavaを使ったものとなっています。
説明:http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/
ソースコード:https://github.com/android10/Android-CleanArchitectureClean Android Architecture
MVCモデルをいかに機能分割してThe Clean Architectureに持っていくか、についてまとめた資料です。とてもわかりやすく分割の過程がわかります。
https://speakerdeck.com/richk/clean-android-architectureこれから設計の話をしよう
@kgmyshinさんの資料。なぜ優れた設計をすべきかとAndroid で綺麗な実装をするための指針が大変わかりやすくまとまっている素晴らしい資料です。インフラ層の考え方などとても参考になります。日本語です。
http://www.slideshare.net/shinnosukekugimiya/ss-50705888
最後に:Androidオールスターズについて
その他の方の資料はこちらにまとめがありました。当日の感想ツイートなんかもまとまってます。他の登壇者の方たちの発表はレベル高くてめっちゃ勉強になりましたし、改めてほんと精進しないと、って思いました。 会場を提供いただいたshibuya dots.さんは8月に出来たスペースとのことで、今までの会場にない、家のような落ち着いた雰囲気の場所でした。写真はテンパってて撮り忘れたのですが、Webサイトをみていただくとわかるかと思います。運営の皆様、ありがとうございました!