デバイス・ソフトウェア開発者がプロトタイプから生産へ迅速に移行するには

この記事は、Tech.Decoded に公開されている「How Can Device Software Developers Move from Prototype to Product Faster?」の日本語参考訳です。


デバイス・ソフトウェア開発者がプロトタイプから生産へ迅速に移行するには

編集者注: この記事は、システム/IoT 開発向けソフトウェア・ツール・スイートであるインテル® System Studio の設計を率いる Dinyar Dastoor の厚意により提供されたものです。Dinyar は、組込み、制御、IoT 製品分野において 25 年を超える管理経験があり、研究開発、システム設計およびデプロイメント、製品管理、販売、マーケティング、カスタマーサポートのグローバルなチームの構成および指導を含む、多くの専門知識を備えています。

2017 年にインテルに入社する前は、Wind River* で副社長および本部長を務めていました。インド工科大学カラグプル校で制御システム工学の修士号を、国立インディラ・ガンディー・オープン大学でオペレーションズ・リサーチの MBA を取得しています。


組込みデバイスの開発は、検出、計算、メモリー、通信テクノロジーの急速な発展に伴い、ますます複雑になっています。この記事では、タイムラインの短縮、制限されたリソース、品質とパフォーマンスの最適化の厳しい要件への対処など、チームとしてデバイス向けのソフトウェア開発を行う際のいくつかの課題を取り上げます。

少し戸惑われるかもしれませんが、インテルのエッジツークラウド・エコシステムを活用したソリューションが後に控えています。心配する必要はありません。詳細は、後で説明します。

複雑さはもろ刃の剣

インテル® 8051 ボードの初歩的なデバイスのライトを点滅させるアセンブリー・コードを時間をかけて記述していたのが、つい昨日のことのように思えます。コンパイラーの使用を開始したとき、しばらくの間、それまでの楽しさがすべて失われたように感じました。しかし、長いコマンドライン・ステートメントを入力する楽しみは残りました。その後、統合開発環境 (IDE) の時代になり、数回のクリックによる編集/コンパイル/デバッグと非常にビジュアルなワークフローに満足しなければなりませんでした。以前を振り返ると、私はソフトウェアのすべての行を常に完全にコントロールしながら、1 度にデバイスの 1 つのブロックを作成することを楽しんでいたようです。10 年も経たないうちに、私は、コードのすべての面を理解して手動で最適化するという楽しみを放棄しなければなりませんでした。

現在、その楽しみは、メッシュ状に相互接続されたデバイスの複数のスレッドを使用して複数のコアで動作している、数百万行のコードをどのようにして理解し最適化するかに移っています。コードの 95% 以上が数百もの未知の存在によって記述されているという事実は、率直に言って、怖いことです。しかし、ありがたいことに、私のデバイスは、単にライトを点滅させるよりもはるかに多くの価値を提供しています。

皆さんのソフトウェア開発者としての経験が大きく異なるものでないことを、私は確信しています。死の訪れや税金の存在が昔から変わらないように、ソフトウェア開発および (インフレ調整後の) 賃金の基本的な部分は実質的に同じままです。商業的には、複雑なソフトウェアを備えたインテリジェントなデバイスが市場で高価になる訳ではありません。そして、ソフトウェア開発は、時間、予算、品質の制約の中で価値を提供するという大きなプレッシャーの下に行われます。

開発者を締め付ける 3 つのプレッシャー

成功を収めるには、タイムライン、リソース、最適化の 3 つすべてに開発の労力を注ぐ必要があります。これは現代のあらゆる工業製品に当てはまります。しかし、ソフトウェア開発は多くの製造業とは異なります。最終的に作成される製品は、芸術と科学の完全なブレンドです。部品を共通化する自動車の生産ラインと異なり、ソフトウェア・プログラムは、開発者の意向を反映した、一意のさまざまな方法で開発されます。その一方で、ソフトウェアを最適化する機会は常に存在し、不具合が見つかることも少なくありません。大規模なコードベースと複数の機能を備えたハードウェアに対処する場合、時間やリソースの制約の中で、品質とパフォーマンスを最適化した、高品質のソフトウェアを提供することが課題になります。

ほとんどの (営利) 企業は、絶えずテクノロジーと市場の革新を取り入れ、適切な小売価格を維持し、激しい競合に対処しなければなりません。ほとんどの開発チームがタイムラインの短縮、制限されたリソース、厳しい最適化要件から絶え間ないプレッシャーを受けているのは驚くことではありません。多くのプレッシャーを受けているにもかかわらず、開発者は、不具合のないハイパフォーマンスなコードを作成することを要求されています。開発者チームがプレッシャーの 1 つへの取り組みに苦労するだけでも、開発全体に影響を及ぼし、製品は危険にさらされます。

開発のプレッシャーを緩和する

上記の話が現在置かれているプロジェクトの状況に当てはまる場合、プロジェクトに適したツールのセットを選択することにより、これらのプレッシャーを緩和できます。ツールは、面倒な作業を引き受けてくれる仮想のチームメンバーです。最適なツールを選択するため、3 つの作戦を立てることを推奨します。

  1. 独自の開発を行う場合でも、できるだけ自社開発ではなく購入を選択します。
  2. 開発のすべての段階をカバーしていることを確認します。
  3. 将来も利用できるツールを選択します。

すべての開発チームは、各プロジェクトで「自社開発か購入か」の決定に関与するべきです。独自の開発ツールを構築することに貴重な時間やリソースを費やすことは、一般に良いアイデアとは言えません。独自のツールを構築することは労力の半分にすぎません。絶えず変化するテクノロジーに対応しながら独自のツールを長期間維持することは非常にコストがかかります。「自分が労力をかけても最終的な結果の価値が上昇しない場合は、ほかの人にしてもらう。」ことを心がけてください。

ツールを決定する際は、開発の各セクションおよび段階を調査します。すべての開発段階に取り組む開発者のニーズを満たすツールがあることを確認します。複雑なソフトウェア・プロジェクトを作成するにはチームとしての協力が必要です。すべての段階を最適化して、プロセスの弱点を回避するように心がけます。

最も注意を払うべき点は、開発ツールが将来も利用できるように設計されているかどうか確認することです。テクノロジーの発展と市場の需要に終わりはありません。例えば、新しい機能を備えた新しいプロセッサーが登場したら、できるだけ早くコンパイラー、デバッガー、ライブラリーで活用したいと思うことでしょう。

現在および将来の革新

レジスターを操作してライトを点滅させることで得られていた私の楽しみは失われましたが、現在はソフトウェア開発者にとっての黄金期と言えます。ソフトウェア開発 (特に組込みデバイス向け) は非常に複雑ですが、インテル® System Studio のようなツールが複雑な開発への取り組みを支援するように特別に設計され、定期的に更新されています。

今すぐ、インテル® System Studio の無料評価版を入手しましょう。コミュニティー・フォーラムによるサポートを含む、無償の 90 日間の更新可能な商用ライセンスを入手できます。デジタル・セキュリティーと監視、5G、ネットワーク、産業、データストレージ、医療、小売、スマートホーム/シティー/ビル、自動車、オフィス・オートメーションを含むソリューションを、このツールスイートで適用および最適化できます。

将来のブログでは、インテル® System Studio を使用して開発されたデバイスおよび IoT ソリューションを詳細に説明する予定です。例えば、デバイスメーカーがどのように開発と検証サイクルを短縮しているか、システム・インテグレーターがどのようにソフトウェア・スタックを迅速に最適化しているか、また IoT アプリケーション開発者がどのようにエッジツークラウド・ソリューションのクラウドコネクターとセンサーへのアクセスを備えた新しい機能を効率的に提供しているか説明することを予定しています。

タイムライン、リソース、最適化のプレッシャー

開発者は、最新のプラットフォームとオペレーティング・システムをサポートし、プロトタイプから生産への迅速な移行を支援するツールを必要としています。それが、インテル® System Studio です。この包括的なツールスイートは、コンパイラーとライブラリーの最適化により、優れたパフォーマンスを達成できるように開発者を支援します。デバッグとトレース機能により、複雑な問題を簡単に切り分けることができます。また、拡張されたアナライザーにより、開発者は電力効率とパフォーマンスを向上できます。

インテル® System Studio 開発環境

広範な開発ニーズに対応するコンパイラーとライブラリー、アナライザー、デバッガー

上記の図は、インテル® System Studio Ultimate Edition の開発環境を示しています。
²Linux*、組込み Linux*、Wind River* Linux*、Yocto Project*
³UEFI*: Unified Extensible Firmware Interface


タイムライン: 高速で高品質な開発

ハイパフォーマンスなプロダクション品質のルーチンにより、製品開発期間を短縮できます。インテル® System Studio には、インテル® インテグレーテッド・パフォーマンス・プリミティブ、インテル® マス・カーネル・ライブラリー、インテル® データ・アナリティクス・アクセラレーション・ライブラリーが含まれています。

インテル® System Debugger は、ソフトウェア、ファームウェア、ハードウェア・コンポーネントのタイムスタンプ付きの関連付けされたトレース情報を含むログを作成して表示します。開発者は、ソフトウェアとハードウェア間の複雑な相互作用を解析して、製品をより強固にできます。

リソース: エッジツークラウドのコネクティビティー

スマート・コネクテッド・デバイスの開発者は、センサー・テクノロジーとクラウドサービスの進化に直面した場合でも、コードとアプリケーションを再利用する必要があります。エッジツークラウドの互換性およびパフォーマンスを保証するため、インテル® System Studio を使用している開発者は、センサーとデバイス、デバイスとクラウドの接続の複雑さを抽象化する IoT 接続ツールを利用することで、アイデアを素早く実装できます。コンポーネントには、高度なクラウドコネクターと 400 を超えるセンサーへのアクセスにより IoT アプリケーションの迅速なイノベーションが可能な、標準化されたオープンソースの抽象化ライブラリーとセンサー・ライブラリーが含まれます。

最適化: 高速な処理

パフォーマンスを素早く向上するには、開発者は hotspot を理解し、呼び出しカウントをモニターし、ソースコードに注釈を付け、アクティビティーをグラフ化する必要があります。これらの操作により、CPU と GPU のパフォーマンス、スレッドのパフォーマンスとスケーラビリティー、帯域幅とキャッシュの使用状況などに関する考察が提供されます。インテル® System Studio は最新のインテル® プラットフォームをサポートしています。開発者は、インテル® AVX-512 命令のような機能向けのスイートのコード最適化とともに、スイートに含まれるインテル® VTune™ Amplifier を使用することにより、パフォーマンスと効率を向上できます。


# # #

インテル® コンパイラーでは、インテル® マイクロプロセッサーに限定されない最適化に関して、他社製マイクロプロセッサー用に同等の最適化を行えないことがあります。これには、インテル® ストリーミング SIMD 拡張命令 2、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

© 2018 Intel Corporation. 無断での引用、転載を禁じます。Intel、インテル、Intel ロゴ、VTune は、アメリカ合衆国および / またはその他の国における Intel Corporation またはその子会社の商標です。

* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事