SDK の開発と維持の難しさ

V
3 min readJul 11, 2017

SDK を使ったことがあっても作ったことがないので、SDK を作るぞとなってもまったくの手探り状態だった。

必要な SDK は ブラウザで利用するための JavaScript で書かれたSDK 、iOS で利用する Swift で書かれた SDK、そして Android で利用する Kotlin で書かれた SDK が必要になった。

そして残念ながら自分には今回求められるような SDK を設計したり開発したりする能力はない。

SDK というのはとても専門知識が求められるし、特に設計が重要だ。使う側の人が簡単につかえて、さらに汎用的に書かれている必要がある。

どう考えても、難易度が高すぎる。

まずは社内で開発できるところまでやっていこうということになり、 JavaScript の SDK は JavaScript が得意な社員が書いてくれた。

シンプルでとても使いやすく、サンプルも充実している。ドキュメントもささっと書いてくれた。本当に凄い。

さて、次は iOS だということで、Swift の勉強から始めた CTO が設計をしっかりしたものを作ってくれた。この設計は後に JavaScript 側にも取り入れた。

ただ課題はいくつか残った。今回利用したライブラリはのビルド周りはやっかいだった。複雑な上に開発速度が早すぎて、世の中の情報に頼れない。またビルド方法もバージョンが少しあがって別物になったりする。

ということで、簡単に扱えるようにビルドツールを作ろうということになった。

iOS と Android 用のライブラリをビルドするツールができた。ちゃんとバージョン番号でタグをうち、管理できるようにした。ツールの開発には Golang をこっそり採用してみた。

さて、iOS や Android の SDK を作る以上、アプリを巻き込んで落ちてはいけないし、組み込みやすく単純である必要がある。また、カスタマイズもしやすくと考えると、iOS SDK も引き続き発展させていく必要があり、終わりが見えない。

ということで、 Android 側は社外の人にお手伝いしてくれる人にお願いすることにした。現在絶賛開発中で Kotlin で Android SDK を開発してくれている。

また、iOS は課題も多く、環境固有の問題もあるため本業(普段から iOS で仕事している人)の人が必要ということで、お手伝いしてくれる人を確保した。

結論として、SDK を作る場合は専門家の知識が必要になる。またいろいろな SDK を利用した経験も必要になるため、社内だけで完結するのは難しい。

SDK を開発する場合は社外の力を借りることを前提としておいたほうが良い。

--

--