DroidKaigi 2016に行ってきた #droidkaigi

聴いたセッションと感想

2/18

  • 基調講演 OSSの動向を捉えた実装方針 - CyberAgent wasabeef

Lightweight Stream API便利そうなので早速入れました。
View側の力の入れ具合は会社とかデザイナーとかサービス内容によって凄い異なりそうだけど、 本気で取り組んでる感があった。

  • 明日から使えるRxJava頻出パターン - kazy

とあるレシピサイトの例を題材にRxJavaを通信処理で利用する用途でのみに絞った発表内容で非常に聴きやすく分かりやすかった。 RxJavaに興味がある人で、まだ見てない人は動画で見たら良いと思う。

APIサーバーからのレシピ検索APIと、別の広告サーバーのキーワード連携広告APIと、お気に入り取得APIを全てリクエストして、 RxJavaを使って結果を全てうまく混ぜ込んで1つのリストにまとめて表示するという例を順を追って解説されていた。 combineLatestの使い方がわかる。

  • Fragments: Why, How, and What For? - Brenda Cook

結構初心者向けのFragmentの解説的な内容だった。

adbコマンドや、dumpsysの使い方が紹介されていた。dumpsysはしってたけど、adbにあんなに昨日あるとは知らなかった。 今度試したい。

  • 最速でリリースするためのAndroidアプリデザイン - 青山 直樹

デザイナーが1からマテリアルデザインを使ってアプリ開発に関わっていくときのうまいやり方という感じだった。 ここ最近の傾向としてデザイナーもコードを書いたほうが早いってのはあるけど、逆にエンジニアもデザインできる必要があるなと思った。 マテリアルデザインのドキュメント読み込んでみたい。

  • 用途に合わせたアニメーションの実装方法 - 住友孝郎

途中から後ろで見ていてあんまりちゃんと見られていなかった。 アニメーションを新規に書くときはwasabeefさんの基調講演でも紹介されていたFluentなAPIでかけるライブラリを使いたいと思った。

初日は最後のセッション聞かず、スポンサーブースでペアプロしていた。 punchdrunker.hatenablog.jp

2/19

  • 基調講演 第1部「Support Libraryノススメ」第2部「Support Library Internal」- Google Android Developer Programs Engineer Yuichi Araki

Support Libraryの中の人の発表。歴史とか、ほげCompatなんとかって使えばいいの?とか初心者向けなおさらい系の話から、 今作っている未リリースのMaterial Design用のライブラリなどを紹介していたりして非常に参考になった。 Support Libraryってなに?って人は是非これを最初に聞くと良いと思う。

  • View into the abyss - 森 真樹

AndroidのViewの仕組み(Measure -> Layout -> Draw)を解説した後、それに則ってSmartNewsでタブをめくる時のあのペラっとしたUIを作るために必要だった チューニング方法などを紹介していた。あのペラっとめくるのを実現するのは結構大変そうだった。

  • カメラアプリはじめの一歩 - mhidaka

Camera2 APIというAPIの話だった。ハードウェアと密結合な低レイヤーなAPIのみが提供されていて、かなり色々なことができるけど、 いい感じに動かすまでが大変そうな感じ。日本語の資料がほとんどないようなのでCamera2 API触ってみたくなったらどうがみると良い。

  • Advanced Kotlin for Android - 長澤 太郎

KotlinをAndroidで使った時に、Kotlinの機能を使ってこんな書き方ができるよ!集みたいなやつ。 拡張関数はSwiftのprotocol extensionのように使えるけど、もっと特殊な書き方ができたりしてちょっと怖い。

  • ライブコーディング・Androidのライブラリを作ってみよう - Masataka Kono(@mapyo)

既存の自分のプロジェクトをライブラリに切り出すまでの流れをライブコーディングで実演していた。 感想としては、ライブラリ化するのはそんなに大変じゃなさそうだし切り出せるやつがあればどんどんやったらいいなと思った。

  • Build your custom Rx Observable/Operator - hydrakecat

RxJavaでのOperatorとかObservableの実装を解説しつつCustom Operatorを作るには・・・?という話。 RxJavaのCoreは実はSubscriberだというのが、なるほどーって感じだった。

はてなブックマークのコードを長年触っていく間に行ったこと(手が入ったのはここ1、2年が主?だったそう)。 Activity間で同じ処理していた時は全てモジュールに切り出してモジュールを呼ぶようにして、 呼び出し忘れはAndroidのLifecycle Callbackごとの呼び出しを管理するManagerを利用して開発を進めていった。 一旦抽象化を諦めて機械的にモジュールに切り出すのは結構割り切った実装な気がするけど、最初に重複コードを排除していくための活動としては良いと思った。

DroidKaigi自体の感想

初日のお弁当は良かった。2日目も業者一緒だったけど、温めないとちょっと食べづらいやつだった。 東工大の講義室を連ねる1つの建物を貸し切って開催していたけど、会場がそこまで広くなくて移動量少なくて結構良かった。 1つの教室のキャパも結構広いので満員でみたい人が全然入れない!!!みたいな感じにはなってなかったように思う。(それでも満員のセッションは普通にあったけど)

自分は、セッション終わるごとに弊社の企業ブースに行ってちょっとだけ手伝いしたりしていたけど、会場が狭めなのでちょうどい良い感じだった。 ペアプロはDroidKaigi公式アプリに開催中なのにPRを送るという感じで勢いがあり、楽しかった。企業ブースから3つぐらいPR出てた気がする。

DroidKaigiだけどiOSユーザ結構いた気がするし自分自身iOSユーザなので、iOS版の公式アプリを作るぞ!って機運があれば手伝いたい。 来年も開催されたら行きたい。

今後

ainame.hateblo.jp

前にブログに書いたけど、みんなで動画を見て勉強する会を会社で開いていて、 iOSは主にWWDCを見ていたりしたけど、Androidは特にやってなかった。

DroidKaigiはYoutubeに動画が公開されていくそうなのでちょっとずつ見ていきたい。

www.youtube.com

RealmSwiftを軽く使う

Swiftで趣味アプリを1から作ってみた。コードの中身とかアプリのUIの質は別として欲しい機能が実装できて満足している。 自分はコード書くの遅いほうなので、丸1日で何かしらちゃんと成果出たというのはすごい良い。

github.com

フリー素材のSEとAVFoundationのAVSpeechSynthesizerを組み合わせてSE付きのセリフを登録し、後から好きなように呼び出して再生できるようにした。 データの永続化にRealmを用いたけど、下のようなprotocolを用意しておくとMagicalRecordもびっくりするぐらい簡単にモデルの処理が記述出来るので、 雑にプロトタイプを作る場合はお勧めしたい。ジェネリクス体験だ。業務で利用する際には例外処理はちゃんとしといた方が良いと思う。

gist.github.com

他にもCustomのUnwindSegueで永続化前のRealmオブジェクトの参照を親のViewControllerに戻してやったり、 popoverのUIをiPhoneで実装してみたり、AVFoundationで色々したりと普段やらないことを何個か試せて楽しかった。

AVQueuePlayerとAVSpeechSynthesizerでそれぞれタイミングを合わせながら音を流すのが難しいので、 そのやり方は後で調べたい。

2015年振り返り

23:45までぐったりと寝ていて、23:52から書き始めたのですごいざっくりと振り返る

家族アルバムみてね

家族アルバムみてねを去年から開発していたけどちゃんと世に出たのは今年だった。 これまでずっとWeb開発ばかりだったけど、少人数チームの新規プロジェクトでiOS/Androidだけでなく、 RailsAWSなどのインフラまで全て担当するという感じで、似非フルスタックエンジニアにはなれた気がする。 今年の大半はみてねの開発について考え続けていたと思う。

7つの大罪アルスラーン戦記、鉄血のオルフェンズ

日5枠のアニメ面白かった

ジャンプ+

アプリで毎週ジャンプ読むようになった

Googleベストアプリ

そんな家族アルバムみてねがGoogleベストアプリ取れた。 喜ばしいけどまだまだ頑張りたい

渋谷区に引っ越した

シェアハウス解散ってことで、改めて一人暮らしになった。 渋谷区富ヶ谷いいところ。

来年も宜しくお願いします。

渋谷区に引越した

ここ2年半ほど卓球ハウスという目黒区にあったシェアハウスに住んでいたのだけど、この度シェアハウスそのものを解散するということで渋谷区に引っ越した。

2013年の6月末からシェアハウスをしていて、@gong023が大江戸RubyKaigiでシェアハウスしませんかと自分に声かけてきたのがその発端だったと記憶している。 当時、大学を卒業してそのまま学生の頃から住んでいた、大学からはめっちゃ近いけど狭くて駅から遠くて不便な場所に住んでいたのでたまたま引越したいと思っていた時期だったから 二つ返事でOKした*1そっからいろんな人に声かけたり物件探したりなんてのをやっていった。

住んでいる間は、住人全員がエンジニアなため他社ではこうやっているだとか最近こういうの作ったみたいな話ができてエンジニアとしては結構良い環境だった。 トルネでアニメが撮り貯められていきリビングで快適に見られて前よりもアニメを見るようになったり、たまにインターネットから人が遊びに来たりして面白かった。 家賃はシェアハウスにしては高かったがそれ相応の広くて良い家だった。あれと同じレベルの家に今後住むことって今後あるのか・・・?ってたまに考えけど都内だとかなり難しいかもしれない。 良い体験だった。

今回は、特に貼り付ける鶏肉を両手で持つおじさんの画像は特に無く引き続き転職せずに今の職場で働き続ける感じ。 会社が去年ぐらいから渋谷駅から3km圏内に住むと住宅手当3万円が支給されるようになった*2ので渋谷区に引越て消耗することにした。 このタイミングでの引越でマイナンバー周りがとにかく面倒くさかったが、とりあえずマイナンバーの通知書持って引越先の役所に持って行くといろいろ説明してくれたり対応してくれました。

渋谷区の富ヶ谷という地域の物件に決めて、最寄駅は千代田線の代々木公園駅だが、バスで渋谷駅まで通勤したり徒歩で往来できる。 卓球ハウスに住んでいた時からバス通勤をしていたのだが、バス通勤になると満員電車を避けられるのでとても良かった。 今回の物件を決める際の条件にもバス通勤可というのを念頭に入れて物件を探した。 富ヶ谷〜神泉近辺に住んでいる人いたら飲みにきましょう!!

引越て2週間ほど経ってインターネットがようやく開通して洗濯機とベッドは家に設置されたがシェアハウスに引越する際に もともと一人暮らししてた時に持っていたものはほとんど捨ててしまっていたので再び一人暮らしする際に必要なものはわりと揃っていない。 部屋が狭いので部屋に物を置くのは完全に部屋が片付いてからだなーと思っていたらもう年末になってしまったがようやく片付いた。 シンプルな部屋にしていきたい。

最後に、例のやつです。 www.amazon.co.jp

see also:

京都に引っ越した - ✘╹◡╹✘

*1:共同生活自体は学生時代に大学寮に住んでいたので特に苦になることはなかった

*2:ちなみに卓球ハウスは渋谷駅から約3.5kmに位置していた

emacsでSwiftを書く

SwiftOSSになったことで、いろんなところでSwiftを使えるようにこれからなっていくと思う。 そんなわけで、XcodeでだけじゃなくEmacsでもSwiftがかけると嬉しい。

メジャーモードは昔からある。

補完はどうやらRealmの中の人こと、jpsim氏のSourceKittenってツールによって実現できるらしい。 どうやら、XcodeリバースエンジニアリングしてわかったXPCというプロトコルでsourcekitdと通信できるCLIらしい。

SourceKittenを使った補完のためのプラグインはすでにある。 auto-complete-mode, company-mode用はそれぞれあるが、前者はpackage.el対応してないし実際に試してみたけど通信が同期処理となっていて emacsが固まるしsourcekittenに与える引数が間違っているように見える。後者はcompany-modeを現在導入していないので試していないけど非同期に通信しているように見える。 copmany-modeのもダメだったらauto-complete-modeで動くやつを自分で書いてみたい。