算譜王におれはなる!!!!

偏りはあると思うけど情報技術全般についてマイペースに書くよ。

2016年のKotlinまとめ #ktac2016

f:id:ngsw_taro:20121129063626j:plain

今年もアドベントカレンダーの季節がやって参りました。 ということでKotlin Advent Calendar 2016、1日目の記事です。

2011年にKotlinプロジェクトが発表され、2012年に実装が公開されました。 2013年は知る人ぞ知る言語という位置付けで、2014年、2015年は時折バズっては徐々にファンを増やしていった時期です。 そして、2016年最大の出来事は何と言ってもver 1.0のリリースです。 勉強会や開発事例、求人情報も増え、「実用の年」と言えるかもしれません。 本記事では2016年のKotlinにまつわる出来事を振り返りたいと思います。

Kotlinの成長

2月に新しいロゴとともに、ver 1.0.0がリリースされました。 さらに、同じタイミングでSpring BootのKotlinサポートがリリースされました。

3月にはAndroidにおける、Jack and JillやJava8に対してのKotlinとJetBrainsの姿勢について言及がありました。

5月にGradleのビルドスクリプトをKotlinで書けるようになるよという話もありました。

で、いろいろあって(特に目立ったイベントはなく)、現在はver 1.0.5までリリースされており、いくつかのバグ修正、改善とツールまわりの対応がなされました。 そして次のver 1.1のマイルストーンは、3番目がリリースされています。

ver1.1での目玉は、コルーチンのサポートでしょうか。 型エイリアス、Bound Callable Referenceも大きな改善です。 型エイリアスは、その名の通り型に別名を与えます。 Bound Callable Referenceは、例えばval f: (Int)->Char = "foo"::getのようにメソッドをレシーバと結びつけた上で関数化することができる機能です。

その他にもデータクラスの継承サポート、シールドクラスのルール緩和、委譲プロパティの対象拡大、ラムダ式の引数での分解などが加わります。

日本のコミュニティ

今年は今までで一番コミュニティが盛り上がった年でもあります。 connpassでKotlinを検索すると、現時点で47件もの勉強会がヒットします。 去年が7件であることに対し7倍近く増えています。

Sansanさん主催のKotlin勉強会は、非常に存在感が大きいです。 第1回が1月に行われ、そのときは幸運なことに、JetBrains Kotlinチームの人にご登壇いただきました。 第2回、第3回は勉強会スタート時からビール片手に発表を聞けるというスタイルで、なごやかな雰囲気で楽しかったです。 そして、今月13日に第4回が開催予定です!

今月、もう一つKotlin勉強会があります。 Rettyさん主催の勉強会で、今回はKotlinのテーマらしいです。 私は私用につき途中で退出しますが、登壇者枠、ブログ枠ともに空いているので、ぜひご参加ください!

関西にKotlinコミュニティ Kansai.ktが誕生しました。 やはり勉強会は東京に集中してしまいがちなので、活動を応援したいです!

Kotlinエバンジェリストを自称しているだけあって、登壇オファーをたくさんいただきました。 上記のSansan勉強会、Retty勉強会に加え、Kotlin/GoデベロッパーミーティングHacker TackleLightweight Language of Thingsたろうさんと学ぼうKotlin入門ビズリーチ社内勉強会関西Kotlin勉強会など、たくさんお声いただき、ありがとうございます。 登壇、執筆依頼はいつでもお受けしますので、お気軽にお声掛けください!

書籍

手前味噌ですみませんが、今年の7月に「Kotlinスタートブック」なるKotlin入門書を出しました。

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

おわりに

来年はさらに盛り上がるでしょう。 ver 1.1のリリースが控えており、JDK9、Spring 5.0などのリリースもあります。

前述の通り、connpassでKotlin勉強会を検索すると47件ヒットしますが、目指せ100件超え!ですね。 Wantedlyで「シゴト」をKotlinで検索すると現時点で112件ヒットします。 1年後には何件に増えているのか、楽しみです。

明日の担当は@lVlA0805さんです。お楽しみに!

LINEの新しいMessaging APIを試してみた

つい先日、LINEの新しいMessaging APIが公開されました。

business.line.me

以前、こんなものを作っていたこともあり、早速試してみました。

taro.hatenablog.jp

作ったもの

f:id:ngsw_taro:20161001213058p:plain:w240

最初の挨拶みたいなやつは、ダッシュボードから設定できます。

f:id:ngsw_taro:20161001213105p:plain:w240

ここらへんは以前と同じ機能。

f:id:ngsw_taro:20161001213107p:plain:w240

ボタンを出してユーザに選択させるメッセージを試したかったので、 雑なアイデアですがクイズ的なものを実装してみました。

感想

「Kotlinスタートブック - 新しいAndroidプログラミング」を執筆したよ〜

こんにちは、Kotlinエバンジェリスト(自称)のたろーです。 「Kotlinスタートブック - 新しいAndroidプログラミング」というタイトルで、国内初となるKotlin入門書を執筆させていただきました。 リックテレコムさんより出版されます。7月17日発売予定です!

タイトルに「Android」と含まれていますが、Kotlin文法もがっつり解説しているので、Android開発者以外にも十分役立つと思います!

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

本書の内容

Kotlinというプログラミング言語の解説書です。 3部構成になっています。

第1部

導入部分です。 概要・背景、Hello Worldなどで、Kotlinとはどういうプログラミング言語かを簡単に紹介します。 そして文法や機能を俯瞰するために、分数クラスを作るガイドツアーがあります。

第2部

Kotlinの文法や機能を詳細に解説します。 ラムダ式高階関数に初めて出会う人のために、順序立てて丁寧に解説しています。 Null安全、クラスデリゲーション、変位指定などのKotlin独特の機能も、注意深く、例を交えながら説明しています。 教科書としてだけでなく、リファンレスとしても役立つでしょう。

第3部

KotlinによるAndroidプログラミングを解説します。 単純な例ではなく、実際のアプリ開発でのKotlinの使い方を学ぶことができます。 また、KotlinコードからJava APIを呼び出したり、Java用ツールやフレームワークからKotlinコードが呼び出されたりといった相互運用性についても解説しています。 Dagger2, Ankoなどのライブラリや、テストについても言及しています。

付録

本紙では拾いきれなかった細かいトピックを解説します。 例えば、リフレクションや演算子オーバロードの対応表などです。

書評

LINE BOT「親切なDおじさん」を開発したよ〜

f:id:ngsw_taro:20160413080231j:plain:w240

LINEのBOT APIがTrialとして無料で個人で使えるようになったので、さっそく試してみました。

つくったもの

某テーマパークのアトラクションの名前をつぶやくと、その待ち時間や運転状況を教えてくれるBOTを作りました。 その名も「親切なDおじさん」! 検索用IDは公開していませんが、一部の友人には教えています。 完全にネタで、実用性があるかと言われると...なさそう。

このBOTよりももっと便利な「夢と魔法の待ち時間」というAndroidアプリを趣味で作っているので、 実際にパークで活用したいなら、そちらをぜひ。

最初の構成

さくらのVPSを利用しているので、そこに載せるつもりでした。 Let's Encryptという、無料でSSLサーバ証明書を発行できるサービスを使えば上手くいくものだと思っていました。 が、他の多くの方々と同じように、Let's EncryptがLINE APIで使えないことがわかり、自分のサーバでやることを諦めました。

アプリ側は、Kotlin + wasabiで開発するつもりでした。 wasabiは、Kotlinで記述されたKotlinのための、Sinatraインスパイア系Webフレームワークです。 まだ開発途上にあって、生のリクエストボディを取得できない問題があって(調査不足かも。ご存知の方教えて><)使うのを断念。。 次にSparkApache Sparkじゃないよ)という、これまたマイクロなフレームワークを使おうとしました。 実際使ったのは今回が初めてでしたが、素直で使い易い印象を受けました。

結局

Herokuを使いました。 これでSSLはクリア。

次に、サーバのIPアドレスホワイトリストとして、LINE APIのダッシュボード上に登録する必要があります。 すなわちIPアドレスが固定である必要があります。 どうやらHerokuはIPアドレスが変わってしまうことがあるらしいので、Fixieというアドオン?というかサービスを経由してAPIを叩くことにしました。

で、次に問題になったのが、Java(Kotlin)でのSSL対応プロキシ。 面倒だし難しいしで、結局Javaからは離れることにしました。 最終的に、生JavaScriptExpressに落ち着きました。

雑感

SSL証明書固定IPアドレスさえ乗り越えれば、API使うだけなので簡単でした。

現状、TrialのLINE BOT APIには制限があるし、マネタイズとか難しそうでオモチャの域は超えないから、Herokuやらに課金するモチベーションにはならないかもです。

個人的には、通常ユーザとBOTが対等じゃないのが好きじゃないですね。 Twitterみたいに、通常ユーザとしてアカウント作って、そいつが自動で動く、みたいな方が面白いし、何かと融通効きそう。

あと、グループトークにBOTって追加できるんですかねぇ?