DroidKaigi2016セッションと資料にまつわるあれやこれや

2/18-19のDroidKaigiで、Android Studio 2.0のInstant Runについて話してきたので、少しその補足というか背景とかを書いておこうと思うます。

(DroidKaigi自体はいろんな人といろんな話ができてちょう面白かったのだけど、これじゃただの小並感なのでその辺は他の人にお任せです。)

 

speakerdeck.com

DroidKaigiは、2015には一応CFPにXamarinネタを投げてみたけど採用されず(CFPにも「とりあえず使い方から.NETっぽいリアクティブなコードとか書くよー」とか適当なことしか書いてなかった)、参加申込も寝て起きたら瞬殺で終わっていて、結果的にノータッチだったのでした。

今年も当初は参加予定すら無かったのだけど、CFPがそれほど集まっていなくて、たまたまInstant Runの調べ物をしていて、これくらいなら軽くしゃべれて、新しいモノ好きにはウケる話かなーと思って、投げてみたら通ったという感じでした。(最終的にはえらい数のCFPが届いていましたが。)

今回はまずそれなりのストーリーラインがほしいなと思い、まずスライドの下地となる話をちゃんと書こうと決めました。それが最終的にはコレです。

qiita.com

多分それなりに長期的に役に立つ読み物になるんではないかと思います(自己評価)。

実のところ大半は3ヶ月くらい前にgistでまとめてあったのだけど、とりあえずDroidKaigiまで待ってから出すことにしました。インスタント実行の部分 (Part III)をどうするか決めていなかったためです。

この部分は、実のところちゃんと調べないと分からなかったので(今でもだいぶうっすらとした情報量のはず)、話に入れるかどうかも決めていませんでした。30分しかなかったし。割と直前まで迷いました。ただ、ビルドの話だけにするとどうしてもオチが弱かったので、それならInstant実行のあるべき姿をプッシュする方が面白いかなと思って、滑りこませることにしました。Xamarin関係の言及が多くなってしまったのは、完全に副作用です。仕事でもないのにわざわざ宣伝なんてうんざりだし。Continuousがオープンソースでなければ完全にカットするところでした。

DroidKaigiではInstant Runおじさんとか言われたりしてたけどw、あれ自体にはあんまし思い入れはない、というか普段はXamarin Studioで日々fast deploymentしているわけで、自分にとっては新しくないわけです。ついでに言えば、YAPF(横浜Androidプラットフォーム部, 当時)で Xamarin.Androidの話をした時にその基本的な仕組みをちょっとだけしたこともあるので、実はInstant Runの基本的な仕組みは、ごく一部の(?)Androidersにとっては、完全に新しい話ではなかったりします。Android SDKが追い付いてきて、お、やったね?という感じです。

(ちなみに、従来の Xamarin.Androidのfast deploymentでは、dllの変更はすぐに反映されるけど、生成されるACW(java interop部分)に変更が生じると、Javaビルドタスクが実行される→APKが生成される→再インストール、となってfast deployment効かないじゃん!ってことになっていたので、最近はその辺を改善する仕事をやっていたのでした。*1

まあ仕事中に得られた知見は発表のごく一 部にしか活かせず*2、基本的には仕事と無関係なJavaとGradleの調べ物の産物です。

セッション全体的には、しゃべりがちょっと早すぎたかな?とは思ったものの、まあ内容がやや詰め込み気味だったのでいたしかたなく(だいぶ削ったのでした)、伝えるべきことは伝えられたかと思います。

…次回、DroidKaigiかは分かりませんが、似たような機会があったら、また.NETやXamarinとは全く無関係な調べ物と話をしたいですね。

*1:2/20に初登場したアルファ版 では、アプリケーションのcsproj に<FastDeploymentType>Assemblies:Dexes</FastDeploymentType> というプロパティを追加してやると、その辺が機能するわけですが(今こっそり隠し機能を暴露した!)、くだらない政治的な紛争の結果、この辺はまだ リリースノートにも載っていません(!)。秘密ってほどのことではないけど

*2:Bazelに似たようなコードがあることを教えてもらった程度。Instant Runの発表直後にそんなの見つけてくるmonodevelopハカーこわい