はじめに LINE株式会社の松野です。 先日、LINE BOT API Trial Accountが発表され、熱狂的に世界中のデベロッパーに迎えられました。今まで契約を締結した企業デベロッパーしか開発することができなかった LINEのBotアカウントを個人でも簡単に開発できるようになったからです。 そういった中で、なぜ我々がLINE BOT API Trial AccountのSDKを開発するに至ったのか、そしてどうやって1週間でリリースできたのか。その経緯について以下に解説させていただきます。 Bot SDK を作ることになったワケ LINE BOT API Trial Accountが公開されてからまもなく社内でもたくさんのエンジニアたちが 開発にとりかかりました。 そこで、彼らは気づいてしまったのです。。 この API を使ってボット作るの大変なのでは?? と。 特に、Java などの静的言語の場合には、JSON をマッピングするためのクラスをゴリゴリと書く必要があります。LINE BOT API Trial Accountの場合には、API のエンドポイントも多く、やりとりするメッセージタイプもたくさんあるため、テキストメッセージ・画像・スタンプ・リッチメッセージ etc. と、幾つものクラスを実装する必要があります。LINE Developers に書いてある大量のテーブルからクラスを起こすのは極めて苦痛であり、 これは大変だ! と思ったわけです。 社内チャットでそのような話をしていると、他にもそのように感じている人間が何人もいることがわかりました。 そして、いろいろ話しているうちに LINE BOT API Trial Accountを多くの人に使ってもらうには SDK を公開するしかない!!! ということになりました。 さて、そうなってくると、エンジニアをかき集めて一気に各言語の SDK を書こうということになります。メジャーかつ社内で優秀なエンジニアが集められる言語を中心に開発しようということで、まずは何はなくとも弊社の開発の中心であるJava と Perl の開発を行うことにしました。さらに、Ruby, PHP は手を上げるエンジニアがいたため、またそれ以外にも静的言語である golang の開発は必要だろうという話になり、それぞれ開発を行うことにしました。 開発は始まってしまうと早くて、一週間程度で各言語の実装が出揃いました。 SDK を書くにあたって、心がけたところは以下の5点です。 各言語の API メソッド名などを揃える 言語ごとにあまりにもインターフェースが異なっていると、ユーザーにストレスを感じさせることになります。 各言語に精通したエンジニアを集めて書いてもらう 各言語のコミュニティの標準的な作法に則ってリリースしてもらうことが好ましいため、各言語のモジュールレポジトリにすでにリリース経験のあるエンジニアが開発することにしました。 品質を担保するために、レビューを徹底して行う 各言語の lint 的なものを設定して、良い品質を保つようにしました。 セキュリティチェックを行う 依存モジュールをできるだけ少なくする 依存モジュールをできるだけ少なくする 依存モジュールが増えれば学習コストが上がります。 Rubyの ActiveSupportのようなロードするとグローバルに組み込みクラスに影響を与えるようなライブラリは利用しないようにしました。 そういうわけで、LINE BOT API Trial Accountがリリースされました。めでたい。 Trial Bot SDK for Java の構成 以下、自分が担当した Java SDK の構成について解説します。 サポート対象の Java バージョンは 8 としました。LINE BOT API Trial Accountは Trial ということもあり、新しく環境を作るケースが多いと考えました。 Java の場合、module は細かくわけるのが一般的なので、細かくわけていきました。どの粒度に構成するかは悩みどころですが、無理のない粒度で分けました。 line-bot-model (…)
↧