Kotlin Fest 2018に参加してきました

Kotlin Festの感想ブログを読んでいて、やっぱり自分も書きたくなっちゃった。だから書く。

登壇依頼

DroidKaigiの発表の時、CfPを出すものだと思っていたので、何を書こうかなー?って思ってたのですが、一向にCfP出せる場所がなく、本当に大丈夫なのかな?と心配していたら、@satorufujiwaraさんから依頼を直接受けました。日時が土曜日だったこともあり、家族に確認を取り、なんとか了承してもらって参加することに決めました。登壇内容はHow to Kontributeを日本語でやってほしいという話でした。

もともとはHow to KontirbuteはOSSの話であるし、日本人だけにやるものではないと思っていて、英語でやるものだというイメージがあったのですが、藤原さんがそういうならと日本語でやってみようと思い、快諾しました。

登壇準備

準備は英語のプレゼンを日本語にしていくだけなので、簡単だと思ってました。が、初めてリハをやったときは52分(セルフィーなし)という記録を出してしまいました。これはプレゼン最中にふと思ったことを口にしてしまえる母国語だからで、これ重要だ!とかここで笑いを取りにいけそう!と思ったら口に出してしまい、グダグダに伸びるという状態でした。さすがに5分以上超過はまずいと、スライドを何枚か削り、メモを英語で書いていたので、あまり考える余地を作らせないために、日本語に書き直すなどの対処をしました。

スケジュール確定

スケジュールを知ったのはconnpassでスケジュールが公開された時です。公開された+LTと同じというのを同僚の某主催者から聞かされました。 カンファレンスでは基本早めにトークさせて下さいって毎回お伝えしているのですが、Kotlin Festでは時間の指定しなかったです。ただまさか最後になると思ってなかった+LTとセッションを同時刻にやると思ってなかったので、決まった時の本音は「それはないわー!」でした。

前日

完全に見落としてたのですが、ランチがないことにconnpassを見て気づきました。 で、せっかくだし、色んな人と話したいと思ったので、こんなツイートしました。

これツイートする前に結構文章推敲してて、それを嫁ちゃんが横で見ていて、ツイートしたらぼそっと「これで誰も来なかったらウケるw」って言われてまじでこれで来なかったらどうしようと泣きそうになりましたが、結果4人も集まってくれました!

ちなみに夜にリハする予定だったのですが、気づいたら、寝てて、3時くらいに「あ、この登壇終わったわ・・・」と愕然としてました。

当日(午前中)

時間通りに到着しました。ビルの入り口がわからなくて迷子になったけど。

登壇者の控室がものすごく広くて快適でした。快適だったんですが、これなら3つの会場にしてもらって、もっと色々発表あったら!と思ったけど、あまりに快適だったからやっぱりそのままがいいです。控室にもセッションの音とスライドが見えていて、登壇準備や練習をしつつ、聴けるという最高の環境でした。

オープニングは会場の雰囲気を確認したく、2列目で聴いてました。そしたら、LTと時間がかぶったためなのか、二回も紹介してもらっちゃって、もうテンション上がりまくりでした。

「Kotlinを愛でる」をプッシュしまくっていたので、じゃあ、ということで、タイトルにEmbracing Kotlinを追記しました。

ランチ

前日に募集したのですが、何話すとか、何も決めずに向かいました。 お店は朝迷ったときにビルの1階に肉のお店を見つけて、暑かったし、そこでどうでしょう!って即決しました。 初めて会った人ばかりだったのですが、一時間Kotlinの濃い話が出来ました。もっと時間あったら良かったのですが、本当に楽しかったです。 また登壇とかする機会があれば、スピーカーということネタにランチ募集しようかなと思いました。

当日(午後)

参加者と交流することが目的だったので、セッション一つも聴いてないです。(そのためPSIViewerがこの日二回目の登場だったのを知らなかった)

Yahooさんのブースでモブプロやるって言っていたので、参加しました。 モブプロはあと一人か二人自分のチームに入ったら、たろうさん、自分含めやってみたいなーと思ってたので、どういう感じになるのかな?ということで参加しました。 RESTのAPIを作るプロジェクトでした。Springの知らない機能を使っての実装だったので、あんまり口が出せなかったのが残念だったのですが、気になっていた、意見が衝突する場合、どう解消するのか?を知りたく、それまでの話からドライバの方が想定していたであろうControllerのメソッド名(findById)ではないもの(show)にしませんか?と叫んでみました。 まぁRESTのControllerのメソッド名はあんまり影響ないためか、参加者から挙がったものだからか、特に議論もなく採用されてしまいました。 あー!やっちまった!ということで

さすがに時間が短かったなーという印象です。登壇前の30分でしたし、参加者は席を取りたいし。 個人的には実際に意見がぱっかり割れた時にどのように合意が形成されるのかが知りたかったです。 RESTのAPIを作ることが目的になってしまっていた感じで、うーん、じゃあSpringのライブコーディングという形にして、モブプロではなくても良いんでは?となってしまいました。 でもモブプロを疑似体験出来て良かったです。設計するタイミングとかでの採用もいいなーという感じでした。

他にもmixiさんやCAさんのブースのPuzzler参加しました。mixiさんの方では、何問か間違えましたが、なんとか良い結果だったと思います。CAさんの方はさっぱり過ぎて、手元にIDEAないと無理でしょこんなん!という感じでした。楽しかった! ただ、CAさんの方、これせっかくやるならエンジニア一人は常時ブースにおいてほしかったです。ブースにいる方がふたりともエンジニアじゃなくて、このコードに関してーとか話そうとしたのですが、エンジニアじゃないので、またあとで来て下さい!と言われてしまって、うおー聴きたい!と消化不良でした。もっと話したかった!

ブースを一通り回ってから、控室に戻り、スライドの手直しをはじめました。控室で他のスピーカーの話が聞こえるの非常に良いのですが、あまりに面白そうな内容で気になってしまって、控室前の椅子に座って準備してました。トイレ前だったこともあり、結構色んな人に話しかけてもらえて、これはこれで楽しかったです。登壇前の緊張がほぐれたし、色々また勉強することが出来ました。

登壇2時間前くらいに自分のスライドの特にInspectionの実装コードのスライドがちょっとこのカンファレンスの空気と合ってないなーと感じました。 そこで、登壇時間が懇親会前ってこともあり、急遽いらすとやさんの飲み物、食べ物の画像をペタペタ貼り、Twitterで盛り上げようぜ!というスライドを追加しました。

残り時間少しということもあり、最後のリハをしました。控室で外向きながら小声でブツブツ話していたので、傍目から見たら相当やばい感じだったと思います。

登壇

登壇前15分に会場に行きました。 アダプターが合わず、かなり焦ったのですが、スタッフ、会場の皆さんに探してもらい、ちょうど良いものを10分くらい前にそろえてもらいました。本当に感謝です。 さらに想像通り、結構な方がLTの会場に向かっていました。そこで登壇者の控室で近くにいた、m3の方たちに控室で聴けるにも関わらず、空いてるから会場に来て下さい!とお願いしたら本当に来てくれてしかもかなり前の席を確保してくれるという神対応をしてもらいました。

登壇前めっちゃ緊張してたのですが、@mhidakaさん、@shanonimさん、@chiiia12さんが色々話しかけてくれて、結構リラックスしてやることが出来ました。

登壇中、いくつかのスライドで頭真っ白になってしまい、あれ?何話すんだっけ?とめっちゃ頭がフル回転したのは覚えています。 会場に聴きにきてくれた人たちの反応が暖かく、自分が思った通りのところでしっかり反応してくれていて、やっぱりKotlin界隈暖かくていいなーと。 懇親会のための気分盛り上げのいやすとやさんも反応が良くて、してやったり!でした。

photos.app.goo.gl

終わった後気づいたのですが、LT会場でも結構自分のことを紹介してもらっていて、さらにスタッフの機転でLT後に自分の会場もつないでもらったようで、本当にごちそうさまでした。

懇親会

懇親会ではパックマンルールが採用されてました。本当にこのルールいいですね。 懇親会だと仲良い人と話すことになりがちなんですが、空いているので、入ってきやすいし、輪を作ってる人も周りを意識している感じでした。 でももっとはじめましてな方と話したかった!

最後に

ものすごく楽しかったです。Kotlin Fest 2019も登壇したい!!! Kotlinをもっともっと愛でたい!!!!!!

Google IO 2018に行ってきました

まとめ

AIとJetpackとConstraintLayout

前提条件

会場で起こったことをつらつらと書いていきます。技術的な話は一切ありません。苦手な人は戻るボタンで戻って下さい。

前日

SFにはGoogle IO前日に到着しました。 飛行機内がガラガラだったため、平らな場所で足を伸ばしてのんびり出来ました。

f:id:shiraji:20180507163758j:plain:w300

1時間ほど寝れたのが良かったのか時差ボケはなかったです。筋肉のおかげかもしれません。筋トレしてないですけど。

着いてすぐにSFで仕事があり、SFO->SFにBARTで行きました。 先方と会議をしてから、CaltrainでSF->Mountain Viewへ移動。 このまま会場でBadge Pickupしたかったのですが、スーツケースが飛行機で壊れされちゃったので、

f:id:shiraji:20180509232348j:plain:w300

一旦AirBnBの宿泊先に行きました。プール付きでした。

f:id:shiraji:20180509232225j:plain:w300

一日目(Keynote)

セッションの予約はこのセッションだけは聞かないと帰れない!というKotlinの2セッションだけ前日までにしていて、あとはKeynoteを確認してから予約しようと考えていました。 前から聞いていたけど、KeynoteはAI一色。何をするにもAIが入っていた気がします。他にはJetpack周りが大きいかな?という印象でした。 自分の現在のタスクがAndroid開発から離れ、R&D的な仕事をしているため、知識を広げることに重きを置き、聞くセッションを決めました。 それと一回はコミュニティのMeetupに行きたかったので、二日目のOSS Community Meetupに行くこととしました。

一日目(セッション)

と、Keynoteでは考えておきながら、いくつか会場を間違えて入ってしまったので、結果的にAndroid中心に聞きました。

The future of apps on Android and Google Play: modular, instant, and dynamic

印象的だったのが、間違って入ったセッションの一つのThe future of apps on Android and Google Playで Dynamic Featureです。ざっくり概要としてはDynamic Featureの話の前提としてアプリサイズは小さく抑えたいよね。 ほぼ使わない機能は使う人にだけ渡せば良いよね?という流れから出来たであろう機能です。 実際、アプリを開発していて、この機能90%以上のユーザ使わないな。って機能結構あるので、非常に良いなーという印象でした。 code pushみたいな名前なので、戸惑う可能性があると思いますが、apkをGoogle Play内で分割しているという印象なので、Dynamic featureだけを更新するとかは出来ないようです。

Modern Android development: Android Jetpack, Kotlin, and more

他のセッション聴いていてもそうなんですが、今後Android開発ではJetpackが台風の目になるのは確実だなという印象を受けました。 ただ若干勇み足な感じもしていますが。。。詳しいことはすごい人に任せます。

一日目(セッション後)

アメリカで働いている同僚と落ち合いました。そこにいた色んな人とお話が出来ました。 そこまでほぼ一人で行動していたので、楽しかったです。日本の初めてお会いする方ともお話が出来ました。 マジックショーがあったので、それを見て、AirBnBの方へ戻りました。

そこから日本のチームと仕事してたのですが、なぜか3時までやってました。

http://livedoor.blogimg.jp/jigokuno_misawa/imgs/4/0/403d15ec.gif

惚れさせ155 「実質」

二日目(セッション前)

朝8時前にAirBnBを出たのですが、Lyftの車が全然来なかったです。値段が跳ね上がってました。初めてシェアして乗りました。 道路も混んでおり、降りた時点で8:30過ぎてました。 一緒に乗車していたロシアの方と降りた後話が盛り上がり、入り口でものすごい並んだので、二人でデバイスピックアップにいきました。 Android Thingsはパズルやらないとあげないーとかわいく拒否されたので、前日終わらせていた彼にヒントもらいパズル解くことにしました。 会場入り出来たのが結局9時前だったので、朝ごはん食べつつ、掲示されているブースを色々回りました。

二日目(セッション)

  • What's new in Android Things
  • [Meetup] Open Source community
  • Build real consumer devices with Android Things
  • TensorFlow for JavaScript
  • Web Components and the Polymer Project: Polymer 3.0 and beyond
  • Android Jetpack: what’s new in Android Support Library
  • ML Kit: Machine Learning SDK for mobile developers
  • Integrating your content with the Google Assistant using AMP and markup
  • The power of Headless Chrome and browser automation
  • Machine learning models + IoT data = a smarter world

この日はトピックがうまくバラけました。

Open Source Community

初日に参加を決めたOpen Source CommunityではGooglerのOSSの人たちと話せるということで、GoogleOSSにも関わりたいなーと思っていたので、ぜひにと気合入れていきました。 そしたら、すんごいふんわりいつの間にか始まっていて、勝手に話して良いよ?と言われ、うまく輪の中に入れなかったので、一緒に輪に入れなかった人たち+後から来た人たちと話しまくってました。 結局40分ほどずっと同じ人達と話してGooglerと話さなかったwでも普段かかわらないnode.jsのコントリビューターやUS政府のプロジェクトに関わっている人たちと話せたのは良い機会でした。OSSをやりたいけど、やったことがないという人たちにアドバイスとかもしてました。 プロジェクトへの参画動機や最初のコミットどこから?などみんな同じような考えをしていたのが印象に残りました。

TensorFlow for JavaScript

特に印象に残ったセッションの一つのTensorflow for JavaScript。お昼ご飯食べつつ、片耳で聞いているかーと思い芝生から聞いていたのですが、途中から楽しくなっちゃって食べずに話ばっかり聞いてました。 tensorflowの結果をブラウザで見える化したらすごい良いレスポンスだったので、JSでtensorflow出来るようにしてみたらしいです。 ブラウザで出来るというのはすごく敷居が下がって良い。さらに過去サーバでpythonなどで生成したモデルもそこで再利用出来るのも既存の資源が無駄にならないのも良い。 高校生や大学生が利用しているとか。AIを高校生の時点で学べるなんてなんて贅沢なんだ。。。 さらにこの日サーバサイドでnode.jsが使えるようになったという発表されました。python一色だったtensorflowにJSの流れが来ているので、今後注目だなーという感じでした。

Web Components and the Polymer Project: Polymer 3.0 and beyond

Polymerの発表もすごかったです。Polymer界では有名な二人が登壇するとあって、登場しただけで拍手出てました。ニワカなので、すごさがわからなかった。 内容はもう怒涛な感じでした。前日の睡眠不足から、このあたりで眠気くるよなって思ったんですが、寝てる暇ないくらいどんどん新しい情報をinput出来ました。 Polymer3.0が使えるようになったことと今議論進んでいる内容も含めて色々話が聴けました。このセッションのメモ「情報ありすぎてウケる」で終わってました。 動画確認してみてください。本当に怒涛です。

Android Jetpack: what’s new in Android Support Library

昨日からちょくちょくJetpackのFragmentという言葉が出ていたので、あーヤバそうだなーって思い、これを聴いて、パッケージが変わるのが確定したので、issueあげておきました。 https://github.com/permissions-dispatcher/PermissionsDispatcher/issues/472

書いた後にFragmentだけじゃなくActivityもじゃね?別のsupport libのクラスもじゃね?って思ったんですが、後で考えることにします。

二日目(セッション後)

前日に続き、仕事がふってきていたので、コンサートも参加せず、AirBnBで仕事していました。自分頑張りすぎだと思う。

賞賛して下さい。

f:id:shiraji:20180509205058j:plain:w300

三日目(セッション前)

朝は結構空いていました。3日目ともなるとみんな体力なくなるのかな?

まず朝初っ端からPermissionsDispatcherの対応に関してOffice Hourに向かいました。 ただ、残念ながら、support libraryの人たちではわからないと言われ、Sandboxへ行くように言われ、 行ってみたら、わかる人がまだ来てないとのことでした。 もうこの時点で結構時間を取られていたので、セッション終わった後にまた来ると伝え、場所を離れました。 たらい回しになったのですが、みんな良い感じで接してくれたので、特に嫌な思いをしなかったのが良かったです。

最終的にこのコメントになりました。

https://github.com/permissions-dispatcher/PermissionsDispatcher/issues/472#issuecomment-388219243

三日目(セッション)

How to Kotlin - from the Lead Kotlin Language Designer

Kotlinの神が初心者向けのKotlinの説明をしてくれました。 どんどんコードが短くなっていくなーって眺めていたら、coroutineの説明が出てきて

あー最早coroutineは初心者向けの常識なのかと驚きました。

Android Jetpack: sweetening Kotlin development with Android KTX

Jakeさんのセッション。 ktxの説明よりKotlinのライブラリを作るにはどうしたら良いか?という説明の方を目的に聴きました。 ktxの方の説明、力抜いていたのですが、ライブラリの話になって、急に@ExtensionFunctionJavaコードにつけたら、Kotlinが勝手にExtension Functionと認識して呼べるようになる だからこれをつけよう!って話していて、このアノテーションを出された時点で混乱して、ググっても情報なんら出てこないし、 どういうことだ?って思ったら、この発表の1時間前にKEEPにJakeさんが上げた内容の説明だったようです。

github.com

あまりに驚いて。

What's new with ConstraintLayout and Android Studio design tools

すごい。やばい。

セッションを見てないAndroiderは最初のほうは流していいから、早めに観たほうが良いです。 三日間のセッションで一番拍手が凄かった。

三日目(セッション以外)

三日目で人も少なかったし、アグレッシブに動き周りました。

  • Android Assistant
  • Android Auto
  • Design & Accessibility
  • Codelab
  • 友達が出来た+会えた

Android Auto

Android Autoは前から楽しみにしています。 一緒に並んでいた4人と車の中で説明をしてもらいました。 車のエアコンのコントロールを声で出来たり、Google Assitantを利用して、メッセージのやり取りなどそ実践してもらいました。 大きなサイズのものなのか、タブレットサイズで、画面が非常に見やすかったです。

f:id:shiraji:20180510145040j:plain:w300f:id:shiraji:20180510145110j:plain:w300f:id:shiraji:20180510145306j:plain:w300

NY Timesなどがサポートしているようで、音でコンテンツを提供できるアプリなどは最高だなーという感じでした。

Codelab

Codelabは多くの問題があり、Googlerに聴きつつコードを書ける場所だったのですが、ChromeOS with Linuxが気になってしまい、 マシンスペック見たり、コマンド触ってみたり、全くCodelabとは関係ないことをしていました。

帰国便待っている時に@ymndさんから聴いたのですが、実機確認が直接出来ないとのことだったので、開発機としてはやっぱり厳しいのかなー?と思いつつ、curlsshなども出来たし、サーバサイドの開発などには可能性あるかもなーとぼんやり考えてます。

友達が出来た+会えた

OSSのCommunity Meetupだけではなく、偶然話しかけてくれた人と仲良くなったり出来ました。

また、普段会えない人たちともお会い出来ました。道ですれ違って挨拶だけしかしなかった人が何人かいて、時間が足りませんでした。。。突然だと「あ、あ、」ってなってしまう。。。

その中でも特に印象が残っているのが、以前Kotlin Night Koltakaでリモートで挨拶させてもらった@ravidsrkさんと偶然隣の席になり、お話出来たことです。

彼はKontributeの動画を観てKontributeし始めてくれた一人で、さらに自分の公開しているプラグインもガッツリ使ってくれているようでした。 会社の環境構築フローに自分のプラグインを数個入れてくれていて、Find Pull Requestなんてあるよ?と説明したら、めっちゃ喜んでくれました。 最近これ動かないけど、どうしたの?とか、この機能公式に取り込まれたね!とか作った本人よりプラグインのこと知っててくれて本当に嬉しかったです。

最後に

Android周りはスゴイ人たちがわかりやすく説明してくれるはずなので、新しい出会いを求めることに努めて非常に良かったなーという印象です。 このIOでAndroid関係ないTODOの優先度最高なものがいくつか出来たので、何かしら形にしたいなーと思っています。

DroidKaigi 2018で登壇した&参加した

技術的な話は相変わらず一切ありません。いつものヤツです。 そういうのが嫌いな人は「戻る」ボタンをクリックして下さい。

前日

プレパーティーに参加しました。

ウーロン茶を持って、色んな人と話しました。楽しかった。もっと時間欲しかったです。

名札をもらったのですが、その後のコミュニケーション取るためにQRコード貼り付けました。

でも話しかけてくれる人自分をフォローしてくれている人だったので、これをスキャンしてくれる人誰もいなかったです。 DroidKaigi2019では何かしら連絡方法をこれで交換できるようにしてくれたら嬉しいなーと思います。

初日の午前中

午前中はwelcomeトークを聴いてテンション上がりました。公式アプリのコントリビュートもなんとか出来たので、きっと自分のアイコンもあったと思いますが、スマホ探していて見逃しました。

Kotlin User Groupのたろうさんから以下のイベントが発表されました!

これは楽しみです。登壇できるのかどうかは不明ですが、絶対参加したいです。

その後、申し訳ないのですが、自分の用意のため、午前中のセッションを聴くのを諦めました。

いくつか聴きたいセッションがあったのですが、録画で絶対聴くことにします。

自分のトーク

登壇は思い出したくないくらい苦い思い出となりました。以前別のイベントで話した時と同じでした。

自分の想定していたタイミングで聴いてくれた方の反応がない
↓
なんとかしようとなんとかしようと頭の中がぐちゃぐちゃになる
↓
トークに集中出来ず、話すことがぐちゃぐちゃになる
↓
いくつかミスが出だす
↓
もうこれ以上ミスしたくない、さっさと終わらせたいとなる
↓
早口になる
↓
余計反応がなくなる
↓
以下ループ

実際、メモにこのページでは○分くらいといくつか重要なところで書いてあるのですが、最初のポイント(3分)の時点で1分アヘッドしてました。パニック状態でした。最終的には7,8分アヘッドしてました。 終わった時オフィスアワーがなかったらトイレとかにかけこんで泣いてたと思います。50分枠をもらったのに、40分で終わってしまった。。。

別途内容に関しては記述します。

でも、オフィスアワーで質問を頂けて、こんな無様な登壇をしたけど、しっかり聴いてくれていて、本当に感謝でした。ありがとうございました。

ちなみにオフィスアワーで隣の席に日高さんがいたので、同じ時間帯ではなした記念でチェキしてもらいました。

f:id:shiraji:20180208140607j:plain:w300 f:id:shiraji:20180208140611j:plain:w300

初日午後

結構登壇が心に来ていて、疲れもあり、ほぼほぼ覚えてないです。録画を見直すつもりです。

2/8 16:50~

最後のセッションの頃には落ち着いていましたので、フィードバックコメントします。

マルチモジュールのすヽめ

kgmyshin さんのセッション。droidconSFでマルチモジュール今後来るな!と感じていて、日本語でも聴いてみたく聴講しました。

内容としてはマルチモジュールのメリット・デメリット、実現方法、実際のアプリでの適応方法などなど非常に充実していました。 モジュールの切り方のオススメが機能ごとに切るで、自分もマルチモジュールやるならこれだと思っていたので、すごく参考になりました。 Kotlinのinternalの使い方とか最高じゃないですかこれ!という印象でした。 あと、セッションにはなかったですが、Javaのプロジェクトを部分的にKotlinにしていくというのにも活用できるのでは?とも思いました。 マルチモジュール日本でも流行るなこれ!という感じでした。本当に良かったです。

パーティ

風船がつけられる情報があったので、なんか恥ずかしいし、逃げられないかなーと思ったけど、会場に入るところで一瞬で捕捉され、つけられてしまいました。スタッフさんすごい。でもこれのおかげで色んな人に声かけられたので、天邪鬼なこと考えないほうが良いですね。

去年目の前で寿司が打ち切られたこともあり、最初から寿司狙いにいきました。うまかったです。色んな人と話してから、2皿目狙ったのですが、さすがに考えが甘かったです。さっさと行けば良かったです。サビ抜き注文にも対応してくれていたみたいなので、ワサビそこまで得意ではなかったしワガママ言えば良かったです。次回はそうします。

パーティでは、セッションを聴いてくれた人たちや自分のことを知っている人たちといっぱい話せました。Kontributeに関して質問がきたのですが、自分の言語能力が低くてうまく説明が出来ず、走ってMacをかばんから引っ張りだして説明させてもらいました。楽しかったー。

他にも去年のDroidKaigiからお会いしていなかった人たちにも会えたし、本当に楽しかったです。

二日目のセッション

スケジュールをガチガチに決めていなかったので、ふらふらーと気になるセッションに参加していきました。

2/9 10:30~

Moving Forward with JUnit 5

PermissionsDispatcherでコミッターとして仲良くさせてもらっているmarcelschnelleさんのトーク

始まる前に挨拶をさせてもらいました。

内容はJUnit5のプロジェクト構成からJUnit4との違い、そしてAndroidプロジェクトへの適応(UnitテストとInstrumentテスト)でした。JUnit5はまだまだ後で良いかなーとあんまり詳細を勉強しておらずふわっとした知識しかありませんでした。この発表を聞いてJUnit5のPlatform/Jupiter/Vintageの違いやその相互の関わり方などが明確になりました。

一番衝撃だったのがJUnit5はフルスクラッチで書いているそうなのですが、その理由のうちの一つのCoupling。JUnit4のプロパティ名を変更しただけでJUnit4が使い物にならない状況だったらしい。面白すぎる。もっとお話聞きたかったです。30分が一瞬で終わってしまいました。楽しかった。Thanks, Marcel!

2/9 11:20~

企業ブースにいて、セッション聞いてないです。聴講予定していたセッションがあったのですが、色んな人と話していて、いつの間にか開始時間を結構過ぎていました。参加者と話すの楽しいです。

2/9 12:50~

アプリを成長させるためのログ取りとログ解析に必要なこと

cattaka_netさんのセッション。 ログって本当に良い思い出が無くて、住友さんが関わっているアプリではどういう対処をしているのか知りたかったため聴講しました。 簡単にまとめるとログからユーザ全てのアクションが引っ張れるくらいにはしなさいという内容でした。 また、それを成すために全てのアクションなどにもログを出すようにしていました。正直衝撃的でした。 何かうまく無駄を減らしているのかな?と実は考えていたのですが、しっかりと丁寧に積み重ねているようで、何をするにもコツコツが重要だよね。と改めて教えてもらいました。

2/9 14:00~

ここの時間帯も聴きたいセッションが多かったのですが、Twitterで流れてきたAndroid Things codelabがどうしてもやりたくて、参加しました。 でも14:50~のGraphQLは絶対聞かないとまずいという認識だったので、途中で抜けるかーという軽い考えで参加しました。 が、実際はいつから参加しても良いし、特に座学がある訳でもないし、脇道それなければ、20分くらいで終わる簡単な内容でした。 でも、周りにGooglerがいっぱいいるのに、そんな即終わらせてももったいないことしたくないと、脇道に逸れまくって色々質問しまくりました。 結構無茶な質問してたのですが、真摯に対応してもらいました。終わった後に

これもらいました。Raspberry Pi 3持っていないので、どれ買おうかなーと画策してます。

2/9 14:50~

すばらしきGraphQLのSEKAIへようこそ

gfxさんのトーク。 GraphQLはあんまり前提知識がなく、どうやって書くのかなー?と疑問でした。 聴講している人たちもほぼみんなGraphQLを本番投入している人がいなかったようです。

内容としてはGraphQLのしっかりとした説明で、編集エディタとしてGraphiQLの説明があり、そのデモ映像で、おおおお!と思わず声が出ました。

聴講前はIntellijプラグインとかでもあるのかなー?と思ってたのですが、まさにこれ!というものだったので良かったです。 ちょうど次のタスクでサーバサイドのAPIとか作る予定なので、GraphQLまじでありだな。という印象です。 (残念ながら、クライアントサイド担当じゃないので、gfxさんのRejectKaigiでの発表の方利用します)

2/9 15:40~

gRPCとProtocol Buffersで作る、一味違う通信周り

RPCは以前から使っていて、(RESTにしようかー?って話があったのですが、なぜかずっとRPC+JSONだった)gRPCに興味があった。 Protocol Bufferは以前から把握していたので、その連携方法などなどを知りたく聴講しました。

RESTの向いているケース、RPCの向いているケースなどを実際に使われているサービスなどを踏まえて説明して頂きました。 あんまりAPIフルスクラッチから作る経験がなく、こういう比較で実は検討していなかったので、詳細を知ることが出来てよかったです。 結構新しい視点でAPI設計を考えられるようになりました。 また、RPC使っているものはアクションを中心に考えられていたので、案外筋が悪いものでもなかったなーと振り返ることが出来ました。

Protocol Bufferとの組み合わせの具体的な実装の説明があり、自分がまさに知りたい点の説明があったので、大満足でした。 一点しまったなーと思ったのが、GraphQLの話の後だったので、悩むネタが増える〜!(歓喜)という点でした。

2/9 16:50~

ARrrrg! The Google AR Android Demo Application deciphered.

ARCoreは今後関わる分野だなーと思ったので、聴講。 この辺りで結構体力が限界で、PCの電池も限界がきていて、後ろの方で聞いていました。 これが失敗で、コードの説明を丁寧にしてくれていたのですが、コードが読めない! Room6は縦長だったので、出来たら後ろの人にもスライドが見れるようにしてくれたら良かったなーと。

内容はスライドが読めなかったのでなんとも判断できませんでした。また録画で確認したいです。

2/9 17:40~

コードで見るFlutterアプリの実装 (セッションの説明ではQ社になってましたが、大丈夫なのだろうか?)

大ファンのkonifarさんのセッション。 Flutterのことはkonifarさんのつぶやきで知っていて、以前からちょこっと触ってました。iOSアプリがリリースされ、実際に触ってみて衝撃を受けたので、聴講しました。

自分で結構独自でWidget作ってへー動くねー程度だったので、ここまで手厚いGoogleからのサポートがあるのは激アツでは?という印象を受けました。 iOSアプリがあれほどしっかり作れるなら今後日本でKotlin Nativeより流行る可能性ありそうという印象でした。 このトークは初心者向けということもあり、Flutterとりあえず触ってみるかーという方はこのスライド読むだけでとりあえず形には出来そうでした。

あと、トークの最初のほうでがっつり聞いている人の心を掴んでいて、スピーカーとしても勉強させてもらいました。

2/9 18:30~

Gradleプラグインを作って開発効率を改善しよう

GradleプラグインOSSでのコントリビュートや実際にリリースまでしたことあったんですが、正直本当にこの開発手法で良いのか?とはっきり知りたかったので、DeployGateでGradleプラグインの開発知見が多いだろうtnjさんに色々聞いてみようと聴講しました。特に知りたかったのがdebugger周りでした。 最初いきなり、リリースしたのになんでいるの?と言われてしまい、あー間違ったかー?って思いました。実際、最初のほうGradleプラグインの初歩的な作り方で、あーあーって感じでした。

それで急にtnjさんがこれ""要らないですね。PRお待ちしております!とおっしゃって、

うし!せっかくだしやるかー!ってtnjさんのgithubのアカウント見つけて、repository一覧からたぶんこれだなーっていうrepositoryを見つけ、実際にコード検索してみたら、該当のコードがあったので、fork->clone->branch作成->commit->PR!とやりました。(しっかりと聴いてました)

ちなみに前回のDroidKaigiに引き続き、Kaigi中にPR投げる実績をこれにより解除しました。

で、PR投げるくらいのタイミングでデバッグとかどうしているの?という話になって、自分がどうしても知りたかったdebuggerの使い方を説明がありました。 デバッガの準備2/3のスライドのRemoteのConfigurationを毎回していないのが原因だったようです。 この情報もらえただけでこのトーク聞けたことに大満足です。今までログ吐いて確認ログ吐いて確認と非常に大変だったのでGradleプラグイン開発極力避けてきましたが、おかげで捗りそうです。 また、そこからはGradle Plugin Portal公開までのステップを一歩一歩説明されており、最近リリースするまでやれてなかったので、最新の動向が知ることが出来ました。

その他

セッションと関係ないけど、印象的なイベントリストアップしておきます。

運営の良さ

去年これ呟いていたんですが

しっかり対応されていました。しかも前回ガムテープだったのが、今回はプラスチックカバーになっており、電源タップにも優しい。

あとKotlinConfで良かった点をつぶやいていました。

やってくれたらなーと思ってましたが、全部揃ってました。ただ、自分が登壇したRoom6ではディスプレイがうまく表示されないという問題がありました。 Keynoteにはプレゼンテーションモードにすると動画が同期されず、スクリーンで何が起こっているのかわからない問題があります。 これの対応のため、ディスプレイが欲しかったので、なんとかなりませんか?と無茶なお願いをしたら、別の器具を特別につけてもらいました。 本当に神運営でした。ありがとうございました。(対応してくれた人の名前を聞くの忘れていました。。。)

登壇内容をまとめてもらった

初めて一枚にまとめてもらいました。嬉しかった。

でもこれを見て、Intentionの部分の説明詳細すぎて響かなかったのが良くわかりました。Androidに詳しい人達なので、Android StudioのIntention作り方とかにすれば・・・(あれ?それCfP通らなかったヤツ・・・)

Roman Guyさんと話せた

憧れな人と話せた。

プレパーティーで話しかけようと思ったんだけど、すごい囲まれていて、無理で、アフターパーティーは見つけられず、諦めかけていました。 でもDroidKaigi終わり際にソファーでのんびりされているところを見つけたので、他の人との話に割りいり、強引に話しかけさせてもらいました。 KotlinConfで登壇したこと、Kotlinのデータサイエンスへの展望、kotlin-mathの将来について話しました。 せっかくだから今の話、issue上げてよ。と言われたので、時間作ってあげてみたいです。

Kontributorsと会えた

色んなKontributorsと会えました。 すごい前から会ってみたいなーと思っていたtommykwさんにもようやく会えました。(KotlinConfにも参加してたのにお会い出来なかった。。。) 自分のトークに関しても直接色々感想を教えてくれました。嬉しかった。 KontributorsでCode Labとかやります?という話が出来ました。15人くらい集めて一気にみんなでKontributeとかしたい。Kotlin Developers Conference Japanでチャンスあればぜひ!

Twitterエゴサーチで見る2017年まとめ

今年本当に自分のエンジニア生活が一変した年だったので、書き留めておく。

が、普通に文字だけで書いたら、ただの長いエモいものになってしまった。そこでエゴサーチ縛りにしてみました。

まず2017年まとめの前に2016年のことを書かないと始まらないので、2016年のことから。

2016/11/21

自分の生活はこのツイートで良くも悪くも変わった。

前職の人たちは本当に良い人たちばかりで、特に批判などせずに、暖かい目で見守ってくれた。

一番怖かったのが前職の上層部に知られ、首にされ、家族に見放される場合だった。 そこで、嫁ちゃん意を決して伝えてみた。

自分「〜〜こういうことがありまして」
嫁ちゃん「あ!ガチャ!セフィロス(FFイベント)だ!」
自分「転職するつもりです。」
嫁ちゃん「がーん。出なかった・・・。チッ!エースってなんだよ。」
自分「聞いてた?」
嫁ちゃん「ショックや・・・てか話終わったなら洗濯物干してよ早く。」
自分(しぶしぶ洗濯物干しに向かう)
嫁ちゃん「てか首になっても、私がフルで残業して、(自分が)バイトでもしてくれたら生活困らんでしょ?」
嫁ちゃん「そんなことよりセフィロス出なかったほうがショックだわ。エースってなによー。」

男気溢れる嫁ちゃんでした。抱いて!

1, 2月

さて、こんな感じで、2017年を迎えました。

初旬で転職活動がようやく完了しました。慎重になっていたと言うより、スケジュール調整で手間取ってしまった方が大きかったです。こんな自分に声をかけてくれる会社には全て会わなければ!と思い、20社会い、そこから面接に入っていたので。でも本当にどの会社も今からでも行けるほど良い会社ばかりでした。

(Twitterとタイトルにあるにも関わらずですが、相手がいるため、この辺りツイートは一切しておりません)

background/foregroundチェック用のライブラリを出していた。これAAC使ったほうが良いのかな?deprecatedにすべきかも?

他にもDroidKaigiアプリにコントリビュートいくつかキメました。

3月

DroidKaigiそんなこんなで、"自腹"で初参加でした。

本当にようやく参加出来たし、勉強いっぱい出来て、しかもすごいエンジニアの人たちといっぱい関われたので、幸せでした。

フラグも立てた。

DroidKaigiの幸せに浸っていたけど、KotlinConfの存在に気づく。

この日のうちに、Speakerを目指し、動き出す。

4月

人生初のCfP提出。(How to KontributeのCfP)

そういえば、前職の若手達からPRがまだ来てない。OSS頑張っているだろうか?(そもそも彼らがコントリする価値があるRepoを自分が持っていないけど晒しておきます)

5月

現職に初出社。初日は神戸本社。

一ヶ月でWeb業界との違いに色々心がざわついた。

いろんな仕組みをいろんな会社が作っていて、諸々やばそう。しかも規模でかそう。くらいのざっくりしか一ヶ月で把握できない状況だった。正直焦りはあったけど、まずは足元しっかり固める為にとにかくシステムに関わる人と話した。

初めて執筆に関わった。

リリースされた日にそのままボストンへ。

6月

ボストンで武者修行。海外でフルタイムで働けるかどうかちょっと心配だったが、いい人が良く、仲良くさせてもらった。 スクラムをしっかりやったのは実は初めてだった。特に苦なく、進められた。

途中KotlinConfのCfPが通った。KotlinConfを無事に終わらせるが今年の最重要事項に設定した。

ボストン空港で結婚指輪を盗まれ、テンション最低となり、帰国ツイートせずに帰国。そのため何人かに、日本にいるんです?と混乱させてしまった。

7月

5月入社して、社内のことがほったらかしだったので、人事周りやら、いろんな案件に顔を出しつつ、タスクこなす日々。

社外向けの発信をしなきゃね!ということで、調査開始。

最終的にMediumに落ち着く。

8月

PermissionsDispatcherのコアなメンテナ達と初めての会食。これは本当に楽しかった。もっと英語うまくなりたい。

9月

7月初旬から始めて実を結ぶ。

でもここからブログより優先度あげて、最近リリースしたアプリに集中することにしたので、ブログの発信が途絶えた。

ツイートしていなかったけど、Android Tokyo Meetupに参加。日本で初めて英語の登壇をした。

10月

CA.kt #3で登壇した。

この登壇は忘れたくても忘れられない。いい勉強させてもらった。

人生初、献本して頂いた。(まだ感想書いてない・・・すいません。)

11月

11/2 KotlinConfに登壇した。

11/4 KotlinConfの登壇ネタをブログに書いたら、初めてホットエントリーに入った。

11/5 DroidKaigiのCfPが通過

この数日、神すぎでは?

念願のdex.fmにも出演した。今まで何回か名前だけ出してもらっていたので、ようやく。でも収録聞いたら、笑ってるだけだった。。。すまんな。

12月

KotlinConfのフィードバックもらった。

9月の社外向けブログが出たくらいから本格的にアプリ開発着手。入社後初の新規アプリリリース。新規でアプリ作りに関わったの数年ぶりかも?楽しかった。

2017年反省点

登壇にこだわり続けた一年だった。とにかく登壇を意識していた。非常に良い結果になったし、このまま続けていけるなら続けていきたい。 しかし、コードのアウトプットが激減した。優先度を下げたのも事実だが、もうちょっと良いやり方がある気がする。

2018年の登壇予定

1/18 どこでもKotlin #5

1/26 DroidKaigi Prelude

2/8 DroidKaigi

2018年の目標

一回登壇を経験したので、流れも掴めたし、登壇の方の負荷も減ると思うので、コードのアウトプットと両立させたい。 (ただ、Kontribute以外の登壇ネタが見当たらないので、自然にコードのアウトプットが増える気がする。)

最後に

それにしてもこの一年、本当に色々ありました。。。

勉強会に何回か出ることも出来て、初めてお会い出来た人がいっぱいいました。

来年も引き続きよろしくお願いいたします。

LT1回しかしたことなかったエンジニアがKotlinConf 2017に登壇したお話

KotlinConfに登壇しました。海外カンファレンスでの登壇はなかなか出来ないので良い資料になればと時系列で出来事全て書き残しておきます。 (そしてまた海外カンファレンスで登壇出来る日が来て、このエントリーを自分が見直す日がくることを祈ります)

だいぶ長いし、エモいし、技術者としてのコツとかはないので、こういうのが嫌いな方は戻るボタンを押して下さい。ほぼ推敲もしていない雑文です。

こんなポエムで批判とかされると嫌なので、批判する可能性がある方はぜひ時間を浪費せず、戻るボタンをクリックして下さい。

またKotlinConfの内容は一切ありません。別途記述します。

KotlinConfが開催されることが発表

開催のアナウンスされたのが3/15あたりで、3/28に何かKotlinに関することを検索していたら偶然サイトを見つけて、KotlinConfの存在に気づきました。

そのすぐ後、登壇者はタダ!に気づきました。

当時まだ転職前で、トラウマになりつつあるカンファレンス参加。。。

転職直後でしかも海外カンファレンスにいきなり行かせてもらえるか不明だったのでこれは「CfP通っちゃったんで行きますね!タダだし。」とするしかないと自分の中でCfP出すことにしました。

(でも正直に言うとrefundされるか不明でしたが、どうしても行きたかったので、チケットはその日に購入していました。NGと言われたら会社休んで行ってしまい、また「海外カンファレンス自腹。転職したい」と呟けば誰か拾ってくれるんじゃね?と楽観的でした。そんなフラフラして良い業界でないことは承知しています。)

CfP

3/28のうちにCfPが通りやすそうな事柄を自分なりにリストアップしました。

  • Kotlinの機能に関してはJetBrainsや日本のKotlin勢には勝てるわけないので、そこに注力するトークは厳禁
  • JetBrainsが話せないことにする
  • 自信があることにする
  • 自分が話すことがベストだと思うような内容にする

これに当たる項目として以下の2つが思いつきました。

それから4/1にまでに特に自信があったHow to KontributeのCfPを作るために以下のことをしました。

  • 有名海外カンファレンスのセッションの説明を読み漁る(Google IO、WWDC、RubyKaigi、DroidKaigiなどなど)
  • How to Kontribute (for Japanese) - Shiraji's Blogのサブタイトルごとにセクション分け
  • ブログの英訳
  • 有名カンファレンスの説明を参考に楽しそうな雰囲気の説明を記述
  • 主催者にしか見えないメモ欄にはそれぞれのセクションで何を話すのか2,3文で概要を記述

その後、数日放置して、4/7にもう一度読み直し、これで落ちたらどうしようもないやろ?という気持ちになったので祈りながら申請しました。

人生初のCfPでした。

その後、4/30までに追加で3つほどCfP出しましたが、どれも落ちました。というか今思えばあのレベルのカンファレンスで2つとか通るわけない。。。

CfP通過まで

その後5月に転職し、会社がKotlinConf費用全部出してやるよ!by上司という言質を取りました。 (※広告※ 弊社太っ腹なので、興味ある方、弊社に来てください!英語出来ると尚可) そこでKotlinConf何が聞けるかなーと楽しみになりました。その後、Google IOでKotlinがGoogleにもサポートされることが発表され、KotlinConfの注目度がものすごく上がり、これはますます楽しみだなとなりました。

Google IOを受け、Kotlin助走本を出しません?というありがたいお誘いを頂き、5/29にそれがリリースされ、それを見てからボストンの出張に行きました。 ボストンではひたすらAndroid開発をしていました。

6/13朝起きてなぜか普段しないメールを確認したら[ACTION REQ'D] Congratulations!...というタイトルのメールがあり、「スパムか。Gmailにしては珍しいな。しっかりしろよ」ととりあえず開いてみたら、以下のメールがきていました。

本当にこれクリックする前で、震えてクリック数回失敗しました。ボストンにいるエンジニアたちに話したら、まじかよすげー!となって嬉しかったです。

その数日後、日本人(最終的にはアジア人)の誰も登壇しないことが判明して、辞退する方法ってないの?とおえっとえずくことが何回かありました。

登壇準備

それから数日後よく考えたらこのトピックJetBrainsが広告にしたいだけで需要ないだろうし、会場に行ったら誰もいなくて、何もせずにアメリカで旅行出来るんじゃね?という発想に切り替わったので、とりあえず準備することにしました。 (ここは反省点。需要がないという考えでいくと後で響く。CfP勝ち抜いたという自信を持つ。落ちた方に失礼。)

その前にまず、自分の発表経歴を書いておくと2017/06時点での登壇回数は「1回」です。その1回もIntellij plugin勉強会@サムライズムさんでCustom Inspection - SSSSLIDEの話をさらっとLT5分で話した程度です。実際は3分半くらいで終わった。今スライド見てみたけど、コンテンツがない発表でした。。。

そのため、KotlinConfまでにどこかで登壇経験しないとたぶん本番トーク中に死ぬということが明らかでした。そこで、助走本などで関わりがあったCAの@satorufujiwaraさんCA.kt #3 - connpassに出させて欲しいと依頼しました。 他にもTokyo Android Meetup (東京都, 日本) | Meetupで英語のスピーチを外国人向けにしていることを把握していたので、PermissionsDispatcherでのつながりでお世話になっている、@hotchemiさんとイベントの管理者の@niko_yuwonoさんに連絡をして、登壇させてもらうようにしました。

改めて、枠を作って頂き、本当にありがとうございました!

この時点でTokyo Android Meetupが9月終わりに、CA.ktが10月中旬になるだろうということになったのでそこから線を引きました。

  • 7月: 話す内容確定。スライド完成
  • 8月: 練習
  • 9月: 練習
  • 9月末: Android Tokyo Meetup
  • 9月末~10月中旬: Android Tokyo Meetupの反省点修正+練習
  • 10月中旬: CA.kt
  • 10月中旬~11/2: ひたすら練習

普段登壇されている人からしたら非常に余裕のあるスケジュールですが、長いトーク、初の登壇でしかも海外カンファレンスで英語でと考えたら自分にとっては異様に短いくらいでした。 ただ、話す内容はブログでもう書いてあるから、極力早めにすすめて練習に時間を割こうという考えでした。

7月中旬くらいに予定より早めに話す内容が確定。ほぼほぼスライドも頭の中では確定しました。ここまでは良かったのですが、問題が発生しました。

www.nintendo.co.jp

Splatoon2がTLに流れまくります。一時Twitter見ないようにするか?と思ったのですが、情報収集に必要なため、無理でした。 嫁ちゃんに呆れられ、買って良いよと言われたので、初めてSplatoonを買いました。めちゃくちゃはまりました。 そして、準備が滞ります。完全に社会人失格です。

8月中旬に盆休みで家を離れた際にSwitchを家においていき、Splatoon断ちをし、8月後半でなんとかスライドが形になりました。

仕事ではあんまり遅延させたことがなかったので、挽回方法がわかりませんでした。でも引き続きやばいなーと思いつつ、Splatoonとプレゼンの練習しました。

9/20事件

Android Tokyo Meetupを1週間後に控え、Kotlinプラグインの中の人がこんなツイートをします。

実は、登壇が決まったタイミングからKotlinへのコントリビュートやコミットの確認などを怠っていました。プレゼンするんだから!とSplatoonの時間をそちらに割けたはずですが、言い訳していました。

たぶんそこまでプレゼンに影響ないだろ?と思いつつ、コミットを調べていきました。事態のヤバさを正確に把握したのが9/22

その間、実は世界中のkotlinコントリビューター誰一人ビルド出来ない異様な状況になっていて、 中の人が「古いバージョンでも出来るから今のところ古いバージョンでやってくれていいよ?」とさすが欧米!と思うくらいな発言をしてきました。そんなんKotlinConfの時にはもう落ち着いているだろうし、練習の意味がなくなるやん!!!と苛立ちました。 なんとかコミットを全て確認し、ドキュメントが間違っていたので、修正PRを投げ、設定が一つ吹っ飛んでいたので、そこも修正PR投げ、プレゼン資料を修正し終わったのがAndroid Tokyo Meetupの前日でした。

すごい軽い感じでツイートしていますが、この一週間はエンジニアとしてやれること全てを出し尽くした感じです。またこれ以降build.gradle.ktsの監視とKotlinConfまでに今後こういうことが起きないように祈りました。無宗教ですが。

Android Tokyo Meetup

付け焼き刃でしたが、なんとか一通り話せるまでになったので、登壇しました。(会社で修正後のスライドを使って練習させてもらった。上司にはリソースの振り方など完全に任してもらっていた。ありがたい。)

同僚ではない人前で話すのがLT以来でしたが、案外うまく出来ました。フィードバックももらい、修正点がいくつか上がりましたが、これ以上ないほど上出来な感じで、「オレやれば出来る子じゃん?」と調子に乗り、Splatoonに戻りました。

CA.kt #3

修正をいくつかし、動画を16:9用に撮り直し、準備万端で登壇しました。

(余談ですが、英語で画面遷移などを全て説明してもわかりにくいし、飽きる。興味を持ってもらうために、デモか動画かで悩み、デモをやってみたら、ビルドで10分かかりPCがフリーズしたので、デモを諦めて、動画を多用することにしています。デモをKotlinConfでもちょくちょく見かけましたが、本当にすごいです。。。)

しかし、Tokyo Android Meetupは発表者との距離が近く、会話形式にほぼなっていたため気づきませんでしたが、一人で舞台の上で話すことの孤独さにここで初めて気づきました。 何が驚きかと言うと、思った以上に反応が返ってこないんです。(ただしTwitter上では盛り上がってくれていました。) 反応がないため、通じているのかどうなのかわからなくなり、パニック状態に陥り、何を話せばいいのか思い出せず、スライドのメモを読み続けるしかないと判断し、とにかく早くこの舞台から降りるために早口でひたすらスライドのメモを読み続けました。 しかもいくつかメモにかかれていないことがスライドに書いてあったりで、すっ飛ばした内容があったりともうそれは酷い内容でした。録画されてなくてよかった。 終わった後、こんなくそな30分を100人弱の方に見せてしまった。本当に申し訳ないという気持ちになりました。

なので、CA.ktを観た方は頭を打って当時の記憶を消して頂き、KotlinConfの動画も観て下さい。CA.kt #3にshirajiは登壇しなかったことに。

悪い点ばかりではなく、良い点もありました。

  • 動画があると、しゃべりがダメでもなんとか持つ
  • メモさえあれば、真っ白になっても挽回可能
  • 日本人技術者はTwitter好き。しかも結構しっかり聴いてくれているし、反応がTwitter上ではしてくれる。

CA.kt #3から当日まで

まず何がいけないのかを整理しました。

  • 反応がない場合、パニックになる
  • メモが不完全
  • 練習時間が足らなすぎ

ここで、一つ明らかになりました。Splatoonです。Splatoon断ちを決めました。そして、まずはメモとスライドをリンクさせました。 反応がない場合の件はそもそもTwitterみんな観てるんだから反応なくて当たり前だわ。という結論に至ったので、日本人相手ならそういうもんだということにしました。今後も日本人向けの登壇はそういうものだと割り切ることにしたほうが良さ気です。 また、外国人相手の場合、どうしたら反応をもらえるのかを考えたところ

  • 熱中させる
  • 真剣さ、誠意を見せる
  • 好奇心をくすぐる
  • KISS(Keep it simple stupid)
  • 巻き込む

くらいのことをやれば反応が良かっただろうと考え(野球の川崎選手のMLBでの対応を参考にした)

  • 一文が長い話を短文にする
  • 最初に質問をして、反応が来る前に、ah?と言って強制的に巻き込む

当たりに修正しました。(ah?のほうは当日他の点ですでに巻き込めていたため、当日使わなかった。)

前日

朝の10時にSFに到着し、白山さんとデートをしました。 その後、あんまり公に言って良いのかわからないのですが、スピーカーディナーがありました。船の上で。 Android開発者で有名な人を挙げて下さいと言ったらあの神思い出しますよね?彼ももちろん参加していましたし、今まで雲の上の存在だった人が目の前にいて普通に雑談していました。

その中で自分は無名だし、英語のコミュニケーション下手だし、そもそも何を話せば良いのかわからず、ポツンとしてしまいました。(JetBrainsの人が声をかけてくれたりして、なんとか楽しめました。)

そのまま何も発生せず、歩いてホテルまでみんなで帰ったのですが、そういえば元々このトークに需要なんてないし、コミュニケーション力ないし、なんで自分こんな調子こいてこんなところにおるの?アホなの?と泣きそうになりながら帰りました。

ところが、ホテルに入る直前で、急に @queencodemonkey さんに「あなたがいそがいさん?」と呼び止められ、「How to Kontribute聴きたかったのだけど、私の時間がその後(正確にはスケジュール変更が直前にあり、同じ時間になった)で練習しなきゃいけないから聞けないんだよ。残念。絶対録画観るね!」と言われ、そこで初めて日本人以外の人に話聞きたいと言われたことに気づいて、おっさんなのにガチ泣きする寸前になり、お礼を言って、泣く前に部屋に戻りました。

(日本人と記述していますが、日本にいる開発者のことを総称しています。簡単に言うと自分のことを知っている人=日本人として定義しています。誤解がありましたら、申し訳ありません。)

そして、日本の知っている人が来てくれると言っているんだし、CA.ktのリベンジしなきゃいけないし、そもそも選んだJetBrainsがいけないわけで何があっても俺のせーじゃないし、もうどうにでもなれや。という感じになりました。

当日

朝起きて、まだ上の状態でよっしゃーーーー!とやる気になり、一回練習して、会場に向かいました。 会場では午前中のセッションを聴いて、レベルの高いセッションを聴いてしまい、アカン!とまた気持ちが沈みました。

そこで、午後からの聴きたかったセッションを捨て、練習し直すことにしました。自分の発表会場の近くで一通り練習し、改めてレベルの違いに気づいてしまって、逆にやる前からほぼパニック状態に。

もう終わったわ。と思っていたら、偶然JetBrainsのエバンジェリストHadiさんがゆで卵食い始めたところを見つけて、ここしかないと、話しかけました。

自分「緊張しまくっているんだけど、どうすれば?」

Hadiさん「プレゼン失敗したとしたら、何を失うの?」

自分「吐く?」

Hadiさん「それはあかんw」

自分「まぁ吐いても特に自分には問題ないかも。何も失わない?」

Hadiさん「やろ?」

(ちなみに英語なのでこんなアホな会話ではないですが、Hadiさんと話すといつも自分はこんな感じのラフな会話に脳内変換しています。)

気持ちが楽になりました。吹っ切れて、写真撮ってもらいました。

その後、嫁ちゃん+息子くんからの激励もありました。

体が本当に楽になりました。

トーク

一つ前のトークが終わり、舞台に上がり、プレゼンが写ることを確認、マイクを体につけてもらい、時間まで待ちます。

ひたすら待っていると緊張するので、ジャンプしたり、とにかく体を動かしていました。 そのあたりで、日本人エンジニアが前のほうの席を陣取ってくれて、写真撮ってもらったりしました。 これが本当に気持ちよくて、なんでKotlin界隈はこんな良い人たちばかりなんだ。最高だわ。と思いました。

この時点で海外の方もちらほら会場に入ってきてくれて、え?まさか自分のトーク需要あったの?となりました。

最終的に始まるまでには後ろ側の席も埋まってしまって、もう有頂天でした。

そこで、「日本語英語だからな!嫌なら別の部屋いけよ!」とマイク入ってないのに大声で叫び、聴講者から「そんなん気にせんわーぼけー」という反応があり、あ、この反応あればいけるわと確信しました。 (ただし、この発言のせいで下に見られた可能性も捨てきれないため、あまりこの手法はよくなかったかもしれません。)

実際、動画が公開されればわかると思いますが、自分が狙っていなかったところでも笑いが起きたり、反応が非常に良かったです。 特に嫁ちゃんのことを言ったときの反応が良かったのが正直驚きでしたし、最初のほうで反応がもらえたので、これはまじでイケるぞ!と気分が乗れました。 また途中でアドリブで笑わせられるところないかと考えて、実際に即興でやってみたら案外笑ってもらえて、今思えば何しているんだということも実はしていました。

でもやっぱり緊張のせいか早口になってしまったようで予定より5分ほど早くトークが終了してしまいました。 前日に早口になっちゃうかも?と冗談で入れた、自撮りしようぜ!スライドがあったので、冗談なしで、本当に自撮り+客席撮影登壇中にさせてもらい、時間を稼ぎ、質問タイムを短くしてなんとかしのぎ(ただし、間違った回答をしたため、中の人にその場で修正してもらっていますw)、登壇終了となりました。

終わった後、本当にトークが良かったから写真撮ってと海外の人に写真撮ってもらったり、質問を個別で対応したりしました。特に難しい質問ではなかったので、なんとかなりました。。。

感想

登壇後や翌日、カンファレンス会場を歩いていると、急に知らない人に呼び止められ、すごく良かったよ?や握手して!なんて言われました。こんなことされる日がくるなんてなーという感じです。 また、Hadiさんに2日目に呼び止められ、「見間違えではなければ、お前のトークまじで投票結果良かったようだよ。見間違えでなければ。」と言われました。たぶん見間違えです。

証拠画像

なんと自分の記念すべき登壇の写真を撮り忘れるという失態を犯しましたが、わざわざ自分のセッションを聴いてくれた方に写真を頂いたので、ここに挙げさせてもらいます。

@yusukeさんから頂いた画像の一枚

f:id:shiraji:20171104193102p:plain

@shanonimさんから頂いた画像の一枚

f:id:shiraji:20171104192744p:plain

ngsw_taroさんから頂いた画像の一枚

f:id:shiraji:20171103084927j:plain

その他良かった点

そろそろブックマークされるのが落ち着いただろうし、ひっそりと追記(11/8アメリカ西海岸時間)。

発表日のPC2台持ち

人が多く、場所が足らないためなのか、控室がなく、電源もありませんでした。そのため、別のセッションを聴く時のメモ用マシンとトーク用マシンを2台持って行きました。これで特に気にせずに別セッションを楽しめました。

スライドのスクリーンが発表者側にもあった

動画の説明時に振り返って説明する必要があると思って準備していたのですが、前を向いても発表者がスライドのスクリーンが見えるようにディスプレイが置かれていました。本当にこれが助かりました。

マイク

腰に機器をつけてもらい耳にかけるタイプでした。首を動かしたり、移動してもマイクが音を拾ってくれるので、ジェスチャーがしやすく助かりました。

アダプター各種

不安だったので、アダプター各種を持って行きました。活躍はしなかったですが、重くもないので、発表時は必ず持って行くのが良いかなと。

証拠動画

www.youtube.com

スライド

photos.google.com

DroidKaigi2017参加してきた。自腹で

やっぱりブログ書くまでがDroidKaigiかなーと思うので、ブログにしてみます。

自分は基本的に勉強会参加をしないのですが、半年ぶりくらいに勉強会参加しました。実は今回がDroidKaigi初参加です。

以下の自分に関係が深かった項目について感想を記載していこうと思います。

  • DroidKaigiアプリ
  • 参加者との関わり
  • 運営
  • セッション
  • After Party

DroidKaigiアプリ

PR21、計34コミットしました。

数だけ見ると結構したっぽいですが、楽しみたいというスタンスで参加していたので、一人での開発をせずに複数人で開発するスタイルでやったことと雑プログラマーなのでコードレビュー後の修正コミットが多かっただけです。

二日目のウェルカムスピーチでPRの数が296個という話が出ていたので、絶対閉会前に300届かせるぞ!と、こにふぁーさんがモデレーターの休憩時間に横に居座って、聞く事が出来なかったResource Refactoringを直接教わりつつ、PR2つ重ねて300PRのキリ番取りました。

途中Kotlin導入議論にも参加出来たし、本当に楽しかったので、また次回があれば絶対関わりたいなーと。(Kotlinのコントリビュートしているくせに賛成しないのどうなの?って言われるかなーとビクビクしていました。)

参加者との関わり

2日続けてボッチ飯を決めましたが、パーカーのおかげで話してもらえましたし、写真まで撮ってもらいました。

ただ、もっと多くの関わったことがない人とも話したかったのです。自分のコミュ力が低すぎでした。モノやTwitterに頼ればなんとかなると信じたのが敗因です。次回はもっと目立つモノにしよう。

運営

イベント期間中運営にこうしてくれたらいいのになー。というつぶやきを2つしました。

一時間後に対応してもらいました。実際に当日出来たセッションがアプリに反映されているのはすごい。

6分後に公式アカウントから反映させてもらうという返事をもらいました。

速攻でいい返事をもらえて、ワガママ言うな!とか言われなかったし、ツイートして良かったです。

セッション

聴講したセッションは以下です。

今回は以下の観点でセッションを選びました。

  • 自分が知らない情報が出てくる
  • どうしても聞きたい項目がある
  • 大穴狙い

チラ裏でやるべき内容かもですがある発表者さんから「発表者さんらにとってはフィードバックとして欲しい」とのことなので書かせてもらいます。

(ただあくまで私の感想ですし、全てのセッションが素晴らしかったので、ネガティブな意見も批判をしているわけではないのでご容赦下さい。)

How to apply DDD to Android Application Development

あんざいさんという方がどういう方なのか聞いたことしかなかったのとDDDに関しては自分も昔から色んな著作を読んで興味があったのでウェルカムセッションの時からルーム3を陣取り聴講しました。

内容としてはDDDを全く知らない人に対して最初の一歩になるような内容でこれを聴いたらDDDやってみようか!と思える内容でした。また新しい単語をチラ見せして、後で説明するなど魅せ方もうまく、感動しました。

50分と長いためダレちゃいそうなのですが、中盤にあった「よくある勘違い」でそこまでの振り返りもしてくれ、その後の話にもすんなり入れたのがさらに良かったです。セッション聴きつつTwitterやりまくるスタイルの自分ですが、何一つツイートせずに集中して聴かせてもらいました。大満足でした。

Android Security 最前線!!

セキュリティに関して知識が乏しいので、初級者〜中級者向けということで聴講しました。実装方法の説明をしつつ、セキュリティの説明をされていたのですが、初級者もターゲットであるなら、出来ればそこ分けてもらい、説明をしてから実際のコードはこう書く!という形で聴きたかったなと感じました。コードを追うので手一杯で実際に聴きたかったセキュリティの話を聴き逃してしまったり、セキュリティの話を真剣に聴いていたらコード追えなかったりしてしまいました。。。

しかし、例えば知っていたカスタムCA証明書問題であればコード読んで非常にワクワク出来たので、やっぱり自分の不勉強のせいだなーと反省させられたセッションでした。

Androidリアルタイム通信アプリ作成Tips

リアルタイム通信の実装方法を紹介しつつ、軽く実装の説明をしてくれるセッションでした。白山さんが言いたいことがいっぱいありすぎるのか、かなり早口でついていくのに必死でした。。。

それぞれの通信方法の特徴やサンプルコード量の配分などが良かったです。30分ではなく50分のセッションでこの量の説明だったら最高でした。

内容としてはリアルタイムの通信方法を検討するならぜひ参考にしたい内容でした。早口のハラハラ感もあり、楽しかったです。

あと、このセッション前の絡みが面白かったのでまとめて呟いたら、ちょっとばずってました。

Android定期実行処理入門

定期実行処理といえば、AlarmManagerだろ?と時代に取り残されているので、勉強のために聴講しました。

AlarmManager以外のモノは聞いたことはあるけど使ったことがないものばかりで、その特徴をしっかりと説明してくれて助かりました。

残念ながらセッション中にあるコードの説明がうん?どこのこと言ってるんだ?と置いて行かれてしまったので、途中で追いつくのを諦めてコードのプレゼンって難しいなーとぼんやりしていました。たぶんハイライトや説明している部分だけコードを見せてくれたらもうちょっとついていけたかもと思います。

内容自体は非常に充実していたので、録画見つつ、スライドを落ち着いて読み返したいなと思います。

解剖 Kotlin ~バイトコードを読み解く~

Kotlinバイトコードを読み解くということで、実際概念としては知っていましたが、あんまり深くバイトコードに注目したことがなかったので、聴講しました。

このセッションの狙いが初学者の恐怖心を取っ払い、第一歩を踏んでもらおうという感じなんだと思いますが、本当にわかりやすく、話し方もゆっくり落ち着いていたので、理解しやすかったです。スライドのコード量も一度に出る量が少ないことや簡単なコードでひと目見ればわかるようになっていて、感動しました。Kotlin始める前に知りたかったなーという内容が多かったです。これをKotlin始める前に聴けた人たちは本当にラッキーだったのではないかと。

「KotlinはJava。」

もちろん、自分のようにある程度Kotlin知っている人でもKotlinの細かい部分を知ることが出来たので、聴けてよかったです。

オフラインファーストなアプリケーション開発

やっぱりオフラインは重要なのであることとzakiさんにお会いしたことがなかったので、聴講しました。

内容はRealmありきな話になってしまっていて、正直それならRealmをセッション説明に入れてほしかったなーと思いました。特に自分のようにRealm入れられない状況の人に対してはちょっとツラいし、他との具体的な比較がなかったので、それじゃあRealmを入れてみよかという判断が出来なかったです。Realm以外でのツラい実装をして、その上でRealmなら〜という話であればうおおお!ってなったかもしれません。

セッションの内容は中の人ということもありRealm自体の魅力を非常に感じられるセッションだったし、少し前のセッションでRealm Mobile Platformをオススメされていたこともあり、状況が変わるなら絶対検討しようと思わせてくれました。

React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか

React Native自体触ったことがないので、このセッションを聴いて判断しよーと思い聴講しました。

Reactの説明からReact Nativeの説明にするっと入っていくところがおお!確かに!とわかりやすかったのが印象強かったです。セッションのテンポや流れもロジカルで聴いていて納得感も得られ、楽しかったです。

非常にセッションが良かったので、実際にDroidKaigi後にReact Native触ってみました。即時反映されるし、手にしっくりくる感じでした。聴いてよかったセッションの一つでした。

What’s New in RxJava 2.0

RxJava2.0への移行はある程度把握していたのですが、実際に作業を実施したことがなく(RxKotlinが2.0に正式対応していないため。現在はRxKotlinは対応中。)ライブラリのコードを読む時くらいしか利用機会がないので、これを機にしっかりと把握したいと思い、聴講しました。

Rxの初歩的な話から始まり、RxJava2.0で一番意識するようになるBackpressureの話に続き、RxJava1とRxJava2の比較があったりと流れも良かったです。スライドはシンプルで、でもアニメーションを効果的に使われていて、非常にわかりやすかったです。今までふわっとしていたBackpressure対応もこれで完璧に出来そう!と自信が持てるようになりました。

Android ORMの選び方

元々自分もORMに興味があって、Ormaを作ったgfxさんがどういう観点でORMを選ぶのか興味があったので聴講しました。この日もウェルカムスピーチを捨てて、Room3の最前列確保に走りました。

セッション内容はORMの解説から始まり、自分がまさに知りたかった観点の説明、その点でのそれぞれのライブラリの比較をしてくれました。時間が押していたので一つライブラリの説明を飛ばしたりと時間調整もうまくさすがだ!と感心しまくりでした。

内容もOrma万歳!なのかと思ったら、しっかりとOrmaの問題点を発表していたりと第三者目線での解説に徹していたように思えました。自分のORM選定にも自信が持てるセッションでした。

個人で11個のアプリを公開した結果

超激戦区のこの時間、どうするかなーと一つ前のセッションが終わってからも考えていたんですが、質問をしたくなるようなセッションとしてこのセッションを選びました。(結局質問しなかったけど)

11個それぞれの開発動機・数値・感想などを聞きました。他にも個人で開発する時のTipsやアイコン特に気にすんななど、知らないことばかりでした。終わった後に自分ももっとアプリ出してみたくなりました。またアプリとは違いますが、Intellijプラグインいっぱい開発していて、メンテどうするか?問題をかかえていたのですが、実際に使うようなやつはそのままやって使われていないようなプラグインはバグFixくらいだけやればいいかなーと気持ちが楽になりました。

11個と量が多かったのでWearアプリとか似てるアプリをまとめちゃっても良かったのではないかなと思いました。こういう失敗も含まれたセッションって貴重なので聴けてよかったです。

How to search and improve performance

初心者~中級者向け+使ったことあるツールだったので、あんまり期待せず、でもEaster Eggの問題点をという話だったので選択ミスだとしてもいいかなーという気軽な感じで聴講しました。

が、はっきり言って、このセッションが一番衝撃的でした。

まず、ANRなどのパフォーマンスに関わる説明があり、その後、実際のEaster Eggの問題を見せつつ、ツールを使って問題を突き詰め、改善していました。

セッション内で自発的に「感嘆の声」と「拍手」が巻き起こっていたのが印象的でした。30分という短いセッションでしたが、出来れば50分にしてもらい、もう少し細かいステップでの問題解消の説明が聴きたい気分でした。

スライドだけでも素晴らしいのですが、セッション聴けなかった人はぜひビデオで確認してもらえたらなーと思います。

セッション後に個別で静的解析とツールを組み合わせる場合の使うタイミングなどの質問をさせてもらいました。知っているコードならまずはコードを読み込んでからやると効率があがる。全く知らないコードであれば即ツールを使ったほうが早いとのことでした。

Can You Read Your Tests? Clean and Useful Android Testing, with JUnit and Spock!

Testコードって冗長的で長くなるし読みにくいからコメントやメソッド名に頼ることが多くてこれほんとうに正しい方法なのか?と疑問に思うことが多かったので、テストの書き方を再度勉強するために聴講しました。

英語のセッションを聴くのが久しぶりで、かつ、元々コード量が多いコードから減らしていくという内容だったので、スライドを読むのも結構大変で、必死でついていきました。 が、やっぱりついていけず漏れていた部分が多かったです。

AssertJとか使っていたり、結果的に実際のテストコードが短くなるのは良いのですが、メソッドで切り出した部分も全て表記してほしかったなという印象です。

セッション終わり際にCode Smellをまとめてくれたのは良い指標かなと感じました。Spockの説明はさすがで、ぜひ導入してみたいなーと感じました。

2つのアプリ、1つの設計のデザイン指針

Quipper社のデザイン指針が聞けると思い、しかも自社サービスのデザイナーは一人なので、どういうことをすればより良いデザインのサポートが出来るだろうかと思い、聴講しました。

そして、最初のほうで会社やアプリの説明だったので気が緩んでKotlinの開発始めてしまい、それが完全にミスだったっぽく、ワンソースプロダクトの定義を聴き逃してしまいました。それをずっと引きずってしまい、申し訳ないのですが、あまり理解できませんでした。フレーバーで分けてるってことなのか、デザインのソースを一つにしていて、それを各種アプリで分けているのか?ブランド違う?うん?という感じで完全にやっちゃいました。

またビデオとスライドを確認してみます。。。

本当に申し訳ありません。

Smoke and Mirrors in Android UI

Google Photoなどの動きをどう作るのか興味があり、聴講したかったのですが、他のセッションの並び列と勘違いして、聴くのを諦めた時のツイートです。

発表者さんに拾ってもらい、Fireside chat始まる寸前に退席して聴講させてもらいました。(Firesite chatもぜひ聴きたいので録画公開何卒!)

Google PhotoのRecyclerViewをピンチイン・アウトすることによってグリッドの数を増やしたり減らしたり、一つの画像をローテートしたりして、最終的に画面全体に表示する機能があるのですがその機能の実装方法でした。

セッションでもよく出ていましたが、本当にこんな気分でした。

improved magic gif

具体的な実装方法はActivity一つ、FragmentなしでRecyclerViewを重ねてそれを出し分けするというものでした。またViewOverlayを利用することで画像を一枚バーン!と出すようです。

他にもローテートのためのPivotの設定方法など細かい部分をわかりにくくならない限界のところで説明してくれていました。海外では普通ですが、スライドには載っていない話が多かったので、本当に生で聴けて良かったなーというセッションでした。

発表者さんとはAfter Partyでもお話させてもらい、これがベストプラクティスだということの確認も出来たし、実際Googleもそういう実装をしているからデビオ確認してみなよというアドバイスも頂きました。

テスト0から目指すクラッシュフリー率99%

テストがないプロダクトにテスト文化を根付かせたいと思ったので聴講しました。

セッション内容はActivityにあるコードをテストするなんて無茶でしょ!という話からdelegateなどで切り出し、テストしやすいコードを作ってテストしていこうぜ!という話でした。

残念ながら、テスト文化を根付かせたいという理由で聴いていたので、それが抜けてしまっていてあー!となりました。ただ、セッションの内容自体は素晴らしく、テストしやすいを意識して開発するという視点は本当に大事だなと認識しました。

セッション後に話しさせてもらったのですが、そこのお話はマイク使って話して下さいよ!と何度もお願いするほど良いクオリティでした。その話のほうが実は刺さって、テストがないならまずUIテストで画面録画しまくっちゃえとか、まずは始めることが大事(要約)というような話でした。知っている方のセッションだとこう気軽に質問出来るのでありがたいなーと。

ちなみにこのセッションでも始まる前に雑談があって、その話も結構面白かったです。場の温め方がうまいなーと感心でした。Androidの筋肉枠の一つは完全に白山さんな印象です。

全体的に

セッションの説明を読んで期待してから聴くので、このセッション説明と違ったりすると若干ネガティブな感想になってしまいました。ただ、自分の視点からはネガティブってだけで、予備知識があったり、別の人からすればすごい良かったり役立つ内容ばかりだったはずなので、ただの一観客の話だと軽く流してもらえたらなーと思います。。。

Droidkaigi終わった後にこんな生意気なツイートしているのですが

冷静にこうやってコメント書いていると、自分がスピーチしたら、来てもらったAndroiderの30分を無駄にしてしまうのでは???という気持ちになりました。実際にあれだけの人の前でスピーチ出来るの本当にすごいです。

After Patry

After Partyでは本当に名前をあげたら半端ない数の人と話すことが出来ました。主催者の日高さんと初めてお話することも出来て感激でした。

そして、Kotlinやりだして一年ちょいですが、ついに日本のKotlerの憧れの的のたろーさんと話すことが出来ました。今までKotlin触ってて良かったなーとしみじみしました。

ただ、嬉しすぎてテンションおかしくなってしまって、あとでこんなツイートしています。

またKotlin勢揃うチャンスがあったら絶対撮ってもらいたいです!

他にも自分が作ったdatabinding-supportを使ってくれていて、さらに修正PR送ってくれた方ともお話出来たのも本当に嬉しかったです。自分が作っているものを使ってくれている人がいた!!!って。本当に励みになりました。

まとめ

スタッフの皆様ありがとうございました!また来年よろしくお願いします!

(名前を極力出さずに書きましたが、発表者の方と運営の方はどうしても必要だったので、書いてしまいました。もし消して欲しい方は@shiraj_iまでメンション下さい。即消します。)

jitpack.ioではまったところまとめ

まとめ

以前から色んな箇所で取り上げられているjitpack.ioですが、ドキュメントに書いてない機能であったり、書いてあってもよくわからない機能がいくつかあったのでまとめてみました。

そもそもjitpack.ioって何か?とかどう使えばいいのか?は以下のリンクを確認して下さい。

qiita.com

以下の機能の説明をします。

  • compile指定以外
  • Multiple Module
  • SNAPSHOT version

compile指定以外

compile指定以外ももちろん問題なく動きます。

例えばよく使う、aptの場合

apt 'com.github.$USER.$REPO:$Module:$VERSION'

Multiple Module

一つのレポジトリ複数のmoduleを扱うことがあります。

その場合、jitpack.ioにアクセスし、repositoryのURLを貼ってみます。例えば、自作ライブラリでやってみます。

github.com

        allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }

    dependencies {
        compile 'com.github.User:Repo:Tag'
    }

こんな感じで入れればいいよ!と言われるので、そのままやるとコケます。

Multiple Moduleなので、以下のように指定が必要になります。

compile 'com.github.$USER.$REPO:$Module:$VERSION'

これはドキュメント通りhttps://jitpack.io/docs/BUILDING/#multi-module-projectsなのですが、一つドキュメントに記載されていない事項があります。

例えば、自分がコントリビュートしている、PermissionsDispatcherの場合

github.com

compile 'com.github.shiraji.permissionsdispatcher:permissionsdispatcher:2.1.1'
compile 'com.github.shiraji.permissionsdispatcher:permissionsdispatcher-processor:2.1.1'

このように指定する必要が出てきます。

つまり

compile 'com.github.$USER.$REPO.toLowerCase():$Module:$VERSION'

が正しいフォーマットです。

SNAPSHOT version

SNAPSHOTバージョンはweb上では一つしか選択できないようなUIです。

ドキュメントにもbranch-SNAPSHOTと記載されているので、-SNAPSHOT付きのブランチを作成してもweb上では反映されません。 しかし、ブランチが存在していさえすれば利用は可能のようです。

例えば、v1.1.1-SNAPSHOTというブランチをリモートに作成してあるとしたら、以下になります。

compile 'com.github.$USER.$REPO:$Module:v1.1.1-SNAPSHOT'

ドキュメントにも書いてあるけど、webUIには反映されないから気をつけてねってことです。