SDKとは?APIとの違いやデバイスSDKについて解説!
SDKはソフトウェア開発をする上で必要なものをまとめて提供しているものです。例えばスマートフォンアプリではAndorid SDK、iOS SDKなどが存在しアプリ開発に必要なものは一式揃っています。また、パソコン向けのソフトウェアではMicrosoft Windows SDK、MacOSではApple社のOS一式が対応しているXcode、ゲームソフトではFBX SDK、UDKなどが存在します。この記事ではSDKに関する基本的な内容からつながるものとして、さくらのモノプラットフォームが提供しているデバイスSDKについて解説します。
SDKとは?
SDK(Software Development Kit)とは、ソフトウェア開発する上で必要なプログラム、API、サンプル、設計情報などの文書をまとめてパッケージ化したものです。ソフトウェア開発キットとも呼ばれ、ゼロベースでソフトウェア開発を行うときと比べて効率的な開発が可能になるため、アプリ開発や既存システムへの機能追加などの目的で、様々な開発現場で利用されています。
SDKのメリットとデメリット
SDKのメリットは開発にかかる手間や時間を削減できる点です。ゼロベースでプログラミングをして開発をする際は大勢の人員が必要で、時間もかかってしまい、エラーやバグの確認作業も比例して時間がかかります。しかしSDKを利用すれば、少人数の開発現場でも開発工数を削減して短期間の実装も可能になります。
一方でSDKのデメリットは、SDK自体にバグが入っていることや動作が重くなってしまうことです。また有料のものもあり、サーバの通信回数や通信量に応じて設定されるので、利用するまでに確認する必要があります。
SDKとAPIの違い
API(Application Programming Interface)は、ソフトウェアの一部の機能を利用して他のサービスと連携するために利用します。SDKが開発に必要な一式が入っているソフトウェア開発キットであるのに対し、APIはソフトウェア機能の一部を共有するものと考えればわかりやすいかと思います。Web上で公開されているWebAPIの例としてはGoogle、facebook、twitterなどがあり、これらのよく使われるサービスは多数のAPIを公開しており、開発者はAPIを利用して効率よくソフトウェア開発が可能になります。
SDKを利用した開発環境で開発効率を上げ、他のサービスと一部連携をしたい場合はAPIを利用するといった使い分けができることもメリットです。
さくらのモノプラットフォーム
当社が提供している、さくらのモノプラットフォームは「IoTシステムの構築を楽にするプラットフォーム」「IoTデバイス開発のための設計情報」「マルチキャリア対応通信回線」を一貫して提供するIoTプラットフォームサービスです。さくらのモノプラットフォームではプラットフォームを利用するための設計情報を公開しています。
さくらのモノプラットフォームの
デバイスSDKについて
当社のIoTサービスである「さくらのモノプラットフォーム」ではIoT開発に必要なプラットフォーム、設計情報、通信回線を提供していますが、設計情報の中に「デバイスSDK」が存在します。デバイスSDKは、プラットフォームに接続するデバイスのファームウェア開発をお手伝いするためのサンプルファームウェアやサンプルプログラムを公開しています。
設計情報を公開する理由
より多くのIoTサービスが生まれ、より多くのデバイス、クラウドアプリケーションからさくらのモノプラットフォームを利用していただきたいと考えています。
そのために、IoTサービスの開発でさくらのモノプラットフォームを少ない手間で評価して欲しい、開発の手間を減らしたい、という観点で実際に動かせるハードウェア(開発キット)と実際に動かせるファームウェア(デバイスSDK)とクラウドアプリケーションに相当するプログラム(クラウドSDK)を商用サービスの開発に制限を加えない自由なライセンスで公開しています。
※ソフトウェアに関してはオープンソースライセンスであるMITライセンス、開発キットの回路設計情報、基板設計情報については商用利用に制限の無いライセンスで公開しています。
設計情報(デバイスSDK)
設計情報の中でも、プラットフォームに接続するデバイスのファームウェア開発をお手伝いするためにデバイスSDKを公開しています。
デバイスSDKの主な機能
- 開発キット(モジュール SCM-LTEM1NRF)で動作するサンプルファームウェア(FW)とサンプルFWを利用するためのサンプルプログラム
- さくらのモノプラットフォームのクライアントライブラリとライブラリを使用するためのサンプルプログラム
公開しているデバイスSDKの内容
現在、デバイスSDKとして公開しているサンプルFW、モノプラクライアントライブラリと対応するサンプルプログラムを紹介します。
サンプルファームウェア(FW)
サンプルFWはUARTからのコマンドでさくらのモノプラットフォームとのやり取りを行うアプリケーションプログラムです。外部に用意したマイコン(MCU)等から操作する構成になります。開発キットに書き込み動かすことでさくらのモノプラットフォームの機能の利用の他、公開されたソースコードをもとに独自のプログラム開発に使用していただけます。
サンプルプログラム
M5Stackのスケッチ、Nucleoのプログラムからコマンドを発行しさくらのモノプラットフォームの機能を使用するサンプルプログラムです。
M5Stackサンプル | 外部のマイコンとしてM5Stack BASICを使用するサンプルプログラムです。Arduino IDEからM5Stackへ書き込みます。具体的な手順についてはマニュアルページを参照ください。 |
---|---|
Nucleoサンプル | 外部のマイコンとしてNucleo F411REを使用するサンプルプログラムです。Cube IDEでビルドしNucleoへ書き込みます。具体的な手順についてはマニュアルページをご参照ください。 |
さくらのモノプラットフォーム Client library for nRFConnect
さくらのモノプラットフォーム Client library for nRFConnect(以下、クライアントライブラリと記載します)はさくらのモノプラットフォームのクライアント機能を提供するライブラリです。ターゲットはnRF9160 & nRFConnect SDKの組み合わせとなります。
サンプルプログラム
クライアントライブラリの仕様例です。Nordic nRF9160DK、Nordic Thingy:91、SCM-LTEM1NRF(開発キットのLTEモジュール)に対応しています。
py-monopla
py-monoplaはRaspberry PiなどのLinuxが動作するデバイス向けのクライアントライブラリです。MITライセンスの元に公開されたオープンソースプログラムですので商用利用など利用用途による制限はありません。py-monoplaの簡単な説明と実際にRaspberry Pi 4で付属のサンプルプログラムを動作させるまでの手順をご紹介をしていますので次のページをご覧ください。
さいごに
さくらのモノプラットフォームの『技術・ビジネス・人・物を、ひとつにつなげるIoTの道具箱』の実現のため、クラウドサービスとしての機能の提供、拡充、運用と同様に自由に使える開発情報の提供にも力をいれています。今後も内容の拡充を進めていきますのでぜひご利用ください。
サンプルアップデート情報
さくらのモノプラットフォームはライブラリやファームウェアをGithubで公開しています。
nRFConnect
py-monopla
IoTコラムでは、さくらのIoTに関係するビジネス向けの内容や身近な例、通信技術の説明や当社エンジニアが取り組んだ開発サンプルなどを掲載しています。