こんにちは、プラットフォーム技術戦略室の和田です。
このたび、OPTiM Cloud IoT OSを利用するためのツールのOSS公開をはじめました。今回は、その経緯と、作成したOSS公開チェックリスト(第1版)をご紹介します。
経緯
OPTiMでは、AI・IoT・Robotics活用プラットフォームサービスである「OPTiM Cloud IoT OS」(以下 CIOS)を提供しています。
CIOSは、弊社が提供している各種AI/IoTサービスの共通基盤です。
また、CIOSはOEMとしてもご提供しており、OEMしたプラットフォーム上で各産業向けのキラーアプリケーションの開発も進んでいます(他のアプリケーションベンダー様が開発されているアプリケーション、OPTiM自身が開発に携わっているアプリケーション、いずれもあります)。
このような状況下で、CIOSをより簡単に利用するツール(OpenAPIのスキーマ定義/SDK/CLIなど)が各チームで密かに(?)育てられていることが、社内の情報共有の場で分かってきました。
せっかくのこういった資産を、特定チームに留めずに広く活用して育てていくには、インターネット上に公開されているのが一番 気がつきやすいと考えました。さらに、これらのツールは、社外公開しているAPI仕様などを元に作成可能で秘匿情報が含まれていないことから、いっそのことOSS(Open Source Software)として公開してCIOSの認知度向上や利用促進に繋げられればと考え、今回OSS公開に挑戦しました。
第一弾として、Passport.jsのCIOS Strategyを公開しました。詳細はこちらの記事でご紹介しています。
また、第二弾として、GolangのSDKを公開しています。
OSS公開チェックリストを考えてみた
OSS公開にあたっては、そのリスクを考えなければなりません。「OSS公開」のリスクとして、情報開示により他者に模倣されるリスク、他社の権利を侵害している証明に利用されるリスクなどが挙げられます。今回 公開にあたってのチェックリストを作成し、社内の知財チーム/知財関連の顧問をしていただいている会社さんにもご相談して、リスクは低いと判断してOSS公開を決めました。「OSS利用」リスクについてはよく言われますが(GPL汚染など。。)、「OSS公開」のリスクを考えてみる機会はなかなかなく良い経験になったと感じます。
またWeb上の情報を探しても、OSS利用ガイドラインや社内での利用方針を解説されている記事などは見受けられますが、OSS公開にあたってのチェックリストはあまり見当たらなかったため、今回考えてみたチェックリストを記載してみます。
なおこのチェックリストは現時点のものであり、今後随時 改善していく予定です。何かフィードバックなどあれば、
OPTiM TECH (@optim_tech) | Twitter
へのReplyなどでぜひいただけるとありがたいです!
公開対象
- OSS公開することで、OPTiMプロダクトの利用を促進すると期待されるものであること
- OPTiMプロダクトの未公開の内部実装が含まれず、既に公開済の情報(API Referenceなど)を利用して開発できるものであること
- 社内でユーザがついており、最低限メンテナンスを継続できると期待されるものであること(少なくとも公開時点の期待として)
これに合致しないがOSS公開したいものが出てきた場合は再検討する前提で、いったん対象をこのように定義しました。
チェック項目
今回は利用してもらうことを目的とした公開のため、Apache License 2.0(またはMIT License)を採用することにしました。また公開場所はデファクトスタンダードであるGitHubを選択しました。
- secret_keyなどがrepositoryに混入していないことを確認したこと(git log含めて)
- 依存ライブラリのライセンスなどに抵触していないことを確認したこと
- 社内のリポジトリなどへの依存やドキュメントへのリンクが残存していないことを確認したこと
- LICENSEファイルにライセンスが表記されていること(Apache License 2.0またはMIT Licenseとする)
- READMEに記載の(またはREADMEからリンクで辿れる)手順でbuildおよび実行ができること(目的: 利用者が敷居低く利用できるため)
- READMEに概要、利用方法(実行サンプルなど)、サポート/フィードバック方法が記載されていること
おわりに
自社で開発しているプラットフォームの周辺に社内外でエコシステムが育っていくのは、プラットフォーム開発冥利に尽きると感じます。
OPTiMではCIOSを一緒に育て、盛り上げてくれるエンジニアを募集しています。(もちろん、CIOS開発以外のエンジニアも募集しています!)