動画で学ぶモダンなiOS/Androidアプリ開発技術
iPhone6sとiPad Pro発表されましたね。早くXCode7をstore配布して欲しいです。
スクラムチームで属人化させずにiOSもAndroidもRailsもAWSも全部やっていく話 - ainameの日記
この記事で、スマホアプリのチーム開発のことを書こうと思って先週はちょっとリリース前とか飲み会で忙しかったのであまり手がついておらず、どうやって書いてくかを考えてはいたけれど書いてこうとすると大分壮大になっていくので、ひとまず日常的な行いを少しづつ書きためていき、リンクで参照できるようにしておくことにした。
ということで今回は、社内で最近行っているプラクティスというか勉強手法で、動画でスマホアプリの技術を学ぶ方法を紹介する。
動画で学ぶ
近年、Youtubeとか動画配信環境が良くなったおかげで各種技術系カンファレンスの発表が綺麗な画質でネット上に公開されている。 特に海外のカンファレンスとか公開されていて、日本でもそんなに聴けないような話が聞けたりするので便利。 カンファレンス動画による学習方法というのは、本などまとまった情報にはまだなってないけど、特定の分野の最新情報などを入手するのに向いている。
ネットで公開されているSlideshareのスライドは大抵どこかで発表された際に利用されたスライドだが、 実際にはそのスライドを元に発表者は解説を行っているので大抵スライドだけを見るよりも情報量は多くなるし、 動画を再生している間は、 単にスライドぱらぱらめくるよりかは時間が掛かるがより効率的に学習できることが期待される*1。
モダンな技術と業務
iPhoneとかAndroidが世に出てから多分10年ぐらい経っているけど、JSのフレームワーク程ではないが未だに次から次へと新しいバージョンのOSやらライブラリがやってきたりしてアプリエンジニアはどんどん学び取っていかなければならない。
そんな時に例えば、自分自身がiOS/Androidの専任エンジニアならば常に各界隈へアンテナを張って情報集めれば良い。 しかし、いろいろな業務を兼任していると各分野への専門性を持つ余裕が少しずつ薄れていき、追いついていくのも結構しんどい。特に業務ですぐさま使わないような話題については特にそうなる。
なので、弊社では週に30分間、業務中に社内のエンジニア達が雑に集まってお茶とか飲みながら何でも良いのでiOS/Androidについて話す時間*2が持たれていて、新し目の話題について何となく議論したり談笑したりしている。もともと弊社には各技術に関して委員会制度があって各種委員会の定例MTGは存在してたが、この会はもっと緩いやつでだれでも参加して良いし何を話しても良い(業務として行っているのでもちろん自主性は問われる)。
このような会で出たトピックがすぐさま明日の業務で活かされるか?と言われるとほとんどの場合ノーだけど、スマホアプリ開発の技術サイクル的には数カ月後には取り込んでいることも結構あると思う。とにかく、何かをしようとした時に技術的な選択肢があるかないかでは結果が異なってくる。自分のチームはまだ日が浅いプロダクトを扱っているので、新しい技術はそれなりに取り入れていて、この会で取り扱っていたRealmとかReactiveXなどはすでに取り込んでアプリ開発に活用している。
動画とオフィス環境
最近、オフィスが増えて*3 自分の部署はそちらに移動している。新たな休憩室に、天井付きのプロジェクターとスクリーンが設置されたおかげでいつでも気軽に PC画面が映せるようになった。会議室みたいな息苦しいところではなく広々としたところにこういう設備あるのはめちゃくちゃ良い。これを使わないわけにはいかないと思い、動画をみんなで見る会というのを思いついたのでやってみた。
こんな感じ↓HDMIケーブルでつなげばプロジェクター自身から音も出せる。
動画を見る会の開催時間はもともと業務中に取っていた30分と、お昼休みの1時間併せて1時間30分を確保して上記の会に参加している人数名で挑んだ。
実践
最初は、自分のチームに最近RxJavaが入ったりしてきたので、ReactiveProgrammingについて学びたいなと思ってこの動画を観た。 発表は普通に英語なのだけど、最近のYoutubeはすごいのでほぼ完璧に字幕出してくれる。
ReactiveProgrammingについて、いきなりMonadの説明から入った時はびっくりしたけどPromiseの概念からStreamの導入とReactKitでのObservableの扱われ方など 初学者にとっては一回観ただけでは学習しきれないけれども、RxJavaを適当に使ってただけでは理解しきれてなかった概念が、他の視点から眺めることで ちょっとだけ理解が進んだような気がした。
40分程度の動画でも、内容が結構難しいので途中止めながらその場にいる人達で「これってこういうことだよね?」とか「今のわからなかったので誰か教えて」みたいに話しながら動画を進めていって結果時間いっぱいぐらいまで使って見終わるという感じになる。そんな感じですでに社内でかれこれ1ヶ月ぐらい開催しているのだけど、割と良い感じになっている。
他に観た動画としては、TyphoonというObj-CベースのDIフレームワークのチュートリアル動画とか、WWDC2015のSwift 2.0でのプロトコル指向開発、Valueセマンティックスの話、AndroidでFlow&Mortarの話、iOSのアニメーションの実装の話など。特にSwiftの動画2つは、Swiftを使うiOS開発者は全員観たほうが良いと思う。こういう背景知識があるかないかで設計がかなり変わってくる。
- Typhoon Framework Primer - YouTube
- Protocol-Oriented Programming in Swift - WWDC 2015 - Videos - Apple Developer
- Building Better Apps with Value Types in Swift - WWDC 2015 - Videos - Apple Developer
- FlowとMortarの使用について、Square製の2つのライブラリ - Realm is a mobile database: a replacement for SQLite & Core Data
- Power Up Your Animations! 💫 with Marin Todorov - Realm is a mobile database: a replacement for SQLite & Core Data
多人数で見ると良い
↑これは昨日の会で台風だったので人少なかった。
難しの技術系の動画はみんなで見ると効率が良い。基本、英語での発表などを見るわけだけど字幕を出してても英語のニュアンスがわからない時は周りの人に聴けばいい。それでもわからない時は前後の発表のスライドなどを元に話しの流れを確かめ合って、ここではこういう事が言いたかったんだね、みたいな結論がつけられる。ここまではテスト勉強を友達の家で集まってやるみたいなノリの話だけど、スマホアプリ開発の現場でやるとそれなりに相乗効果が得られて良い。
例えば、ReactiveProgrammingの発表を見ていた時にPromiseの例が出てきて、あっこれJSだとアレだよねとか、SwiftのProtocolの話を聴いている時でもJavaだったら〜〜とか型推論が〜〜とか、バックグラウンドの違う人間がその場に居るだけで自分だけでは出来ない解釈が得られて理解の進みがよくなると思う。
また、こういう話題を1人だけで見ずに、チームメンバーとかも交えながら見ることで、いきなり新しい技術を取り入れるよりか、PR出した時に「あーあの時のアレね〜」みたいになってくれたほうがやりやすい。
動画の探し方
題材となる動画の探し方だけどすでに↑で上げている通り、realm.ioのブログがすごく良い。 必ず動画+スライドがついて、音声をテキストに書き起こした奴まで公開されている。すでに結構な数が公開されているのでぜひ見ると良いと思う。動画設置場所がYoutubeなので字幕も出せるし、記事によっては書き起こし部分が日本語翻訳もされているのでおすすめ。
他に鉄板なのはWWDC。動画もスライドもスライド公開されているし、スライドも豊富だしサンプルコードも出してくれる。Swift系の話題は新しい技術を知るというよりか、プログラミング技術を学べる感じなので↑に上げた動画はぜひ見てみたら良いと思う。
他にも気になる話題は基本的にYoutubeで検索すると海外のカンファレンスとかが結構見つかるので、iOS/Androidにかぎらず何か検索してみると良い動画が見つかるかも。
Android系の話ももうちょっと観たいのでいい動画あれば情報ください。
まとめ
ということで、最後にお決まりっぽい告知書いておきます。
弊社全体でもスマホアプリエンジニアを募集しておりますし、「家族アルバム みてね」を開発している弊チームでも募集しております。今までRails書いてたけど、そろそろ次はアプリ作りたいなという人でも歓迎です。 興味ある人はTwitterで @ainame まで DM送るとか https://github.com/ainame に書いてるアドレスにメール下さい。