Jump to section

SDK とは

URL をコピー

SDK はソフトウェア開発キット (Software Development Kit) の略称で、プラグラムや API、開発ドキュメント等を含む、アプリケーション開発に必要なツール一式を指します。開発作業に必要なツールが一式含まれているため、開発者がゼロから開発を行う必要がなくなり、開発の効率化やコストの軽減を図ることができます。通常、これらのツールは、ハードウェア・プラットフォームやオペレーティングシステム (OS)、またはプログラミング言語などのメーカーによって提供されます。

Java SDK である Red Hat の OpenJDK についてはこちら

OpenJDK のライフサイクルおよびサポートポリシー

SDK は、特定のプラットフォーム、システムまたはプログラミング言語のアプリケーションを作成するのに役立ちます。組み立て家具を購入すると、それを組み立てるためのツールキット、つまり袋に入った工具がパッケージに含まれてきますが、SDK はアプリケーション開発におけるツールキットのようなものだと考えてください。SDK には、作業に必要な構成要素、つまり開発ツールが含まれており、このキットに含まれるものはメーカーによって異なります。 

通常、基本的な SDK には、コンパイラ、デバッガ、および API (アプリケーション・プログラミング・インタフェース) が含まれますが、以下が含まれることもあります。

  • ドキュメント
  • ライブラリ
  • エディタ
  • ランタイム/開発環境
  • テスト/分析ツール
  • ドライバー
  • ネットワークプロトコル

優れた SDK は、特定の製品とそのエコシステム向けに新しいアプリケーションを作成する際に開発者が必要とする可能性があるコンポーネントをすべて提供します。中には、少しでも早く作業に取り掛かれるように、サンプルや基本的なテストプロジェクトを含む SDK もあります。

ソフトウェア開発キットには、Java 開発キット (JDK)、Windows 7 SDK、MacOS X SDK、iPhone SDK などがあります。具体例として、Kubernetes Operator SDK は、独自の Kubernetes Operetor の開発に役立ちます。この SDK には、高度な API、スキャフォールディングとコード生成のためのツール、一般的なオペレーターのユースケースに対応する拡張機能が含まれています。 

SDK と API の違いとは?を一言でいうと、SDK は API を含む、新規アプリケーションの開発用にパッケージ化された開発キットであるのに対し、API (アプリケーション・プログラミング・インタフェース 、Application Programming Interface) はソフトウェアやサービス士をつなぐ (連携させる) インターフェースを指します。

ほとんどの SDK には、コマンドラインを使って新しいモバイルアプリケーションやプロジェクトをソーステキストレベルで接続するためのツールとして API が含まれており、多くの場合、サンプルコードも含まれています。サンプルコードは、基本的なプログラムの構築方法を学ぶのに役立つサンプルプログラムとライブラリを開発者に提供します。開発者はそれを使って複雑なアプリケーションを容易に最適化あるいは開発したり、必要に応じてデバッグや新機能の追加を行ったりすることができます。

一部の SDK には、API の使用方法に関するドキュメント、チュートリアル、FAQ、サンプルグラフィックが含まれています。これは、開発者が新しい SDK の使用方法を学ぶのに時間がかかることがあるからです。このため、競合を抑えて、提供するプログラムが開発者に選ばれるためには、直感的なプログラミング・インタフェース、つまりユーザー・インタフェース (またはより充実したドキュメント) が有利に働きます。

同様に、SDK は、企業が開発者に自社の製品を紹介し、そのプラットフォームや OS で統合開発環境を使用してリアルタイムにアプリケーションを作成するように働きかけるための優れた手段になります。このため、ほとんどの SDK は無料で使用することができ、開発者はダウンロードしてすぐにプログラミングを開始できます。 

一部の SDK、特に、アルファ版やベータ版の段階にある新製品やアルゴリズムが公開されていない (オープンソースではない) ソフトウェアの場合には、使用前にルールや規約への同意および提出が必要となる場合があります。また、その SDK で作成されるソフトウェアが条件の異なるライセンスでリリースされないよう、ライセンス契約の対象となることもあります。

開発者は作業で使用する SDK を選択する際、これらの点を考慮する必要があります。具体的には次のような点です。

  • プロプライエタリー・ライセンスで提供されている SDK では、オープンソースソフトウェアの開発はできません。
  • General Public License (GPL) で提供されている SDK でプロプライエタリー・アプリケーションを開発することはできません。
  • プロプライエタリーコードの要素を持つプロジェクトに Lesser General Public License (LGPL) を適用する際には繊細な取り扱いが必要です。 

オープンソース・アプリケーションは、アマチュアから専門家までの幅広い人々によって継続的に開発されています。それは、SDK を使用して新しいデザインや拡張機能をコーディングし、コミュニティの他のメンバーと共有できるからです。 

Red Hat は、アプリケーション開発における最高クラスのツール、ソリューション、サービスを、The Open Source Way (オープンソースウェイ) で統合しています。アプリケーション構築プラットフォーム (Red Hat OpenShift) 、ビルド用ランタイム環境 (Red Hat Runtimes)、そして開発、デバッグ、テスト、デプロイに必要なすべてのツールを備えたアプリケーション開発環境 まで、Red Hat がご用意しています。

 

関連資料

記事

ステートフルとステートレス

あるものがステートフルかステートレスかは、別の何かとの通信の状態が記録される期間と、その情報をどのように保存する必要があるかによって決まります。

記事

Quarkus とは

Quarkus は、Java 仮想マシン (JVM) およびネイティブコンパイルのために作成された Kubernetes ネイティブの Java スタックで、Java をコンテナに最適化します。

記事

サーバーレスとは

サーバーレスは、開発者がサーバーを管理する必要なくアプリケーションを構築および実行できるようにするクラウドネイティブ開発モデルです。

クラウドネイティブ・アプリケーションの詳細はこちら

製品

統合されたテスト済みのサービス一式を備えたエンタープライズ・アプリケーション・プラットフォームであり、ユーザーの選ぶインフラストラクチャを使ってアプリケーションを市場に投入するために活用できます。

リソース

トレーニング

無料のトレーニング

Developing Cloud-Native Applications with Microservices Architectures