プログラミング

『背水の電子工作プログラミング』【1日目】CPU選択に失敗すると高確率で挫折します

今日は『背水の電子工作プログラミング』の1日目としてCPU選定の話をしたいと思います。

電子工作にしろ、実際の製品にしろ現実の情報をデジタルに変換するにはCPU(Central Processing Unit=中央演算装置)などのICが必要になります。

実際の製品開発では、満たすべき仕様から考えてCPUの選定をしていくのですが、言葉でいうほど簡単ではありません。

何も考えずにCPUを選定してしまうと、後々様々なトラブルに見舞われて、高確率で挫折します。今回は私自身の経験も交えて、CPU選定に起因した挫折の要因をまとめてみたいと思います。

CPU選択に失敗すると挫折します

挫折する理由としては以下のようなことが考えられます。これがすべてではないですが、最低でも意識しておきたい項目をまとめておきます。だいたい以下の4つくらいが挫折の要因かな、と思います。

  1. 高価なツールが必要
  2. 開発環境の構築が困難
  3. 入手が困難
  4. 実機への転用が困難

順に詳しく見ていきましょう。

①CPUを購入した後に高価なツールが必要だということが分かった

これは私もよくやってしまった失敗なのですが、CPUをいざ購入して使ってみる段階になって高価なツールが必要であることを知る、というパターンがあります。

お金が…

以前はよくあったのですが、雑誌の付録などについている基板にCPUが搭載されている場合。雑誌を購入するだけで使い始めることができるということで使い始めるのですが、いざ開発を進めていくと開発ツールが評価版になっていて、パソコンをつないだ状態でないと使えないということが判明したりします

また、実際の製品に実行可能なプログラムを書き込むには専用のダウンロードケーブルが必要な場合も多いです。それ自体は2~3万で市販されているものなので、将来いろいろなことができて、仕事にもつながるのであれば初期投資として考えることができますが、何も成果を生まないとなれば結構問題です

あとは、パソコンなしでスタンドアローン(単独)で動かそうとすると、ラインセンス契約を結ばないといけないことが判明…とか。

あるいは90日などの一定の評価期間中はおおかた開発ツールの機能は使えるが、90日を過ぎると一切何もできなくなる開発ツールとかもあります。せっかく開発したプログラムもコンパイル(ソースコードから実際に起動することのできるアプリケーションの実体を生成する処理)はおろか、シミュレーションすらできなくなって、開発資産がまったくの無駄になってしまうケースもあります

これらは無料のツールで顧客を集めて、正規のライセンスフィーを獲得するビジネスモデルなので、それ自体は批判されるものではないのですが、正直「最初にちゃんと説明してほしい」とも思ったりします。

初心者のうちはそういうことが分からないので、ついつい身近にあるものに手を出してしまいがちです。CPUを選定するときは、最終的に高価なツールを買う羽目にならないかどうか十分に調べたいものです。

②開発環境の構築が困難

これは最近では少なくなりましたが、ひと昔前は往々にしてあったのが、プログラムの開発環境の構築自体が難しい、というケースがありました。

今ではRaspberry Piなど安定して動作するLinux搭載のボードなどが一般化していますが、少し時代をさかのぼると、こんなに安定して動作するLinuxボードは一般的ではなりませんでした。

OSの動作が不安定であるだけでなく、開発環境の構築に関してもフリーのツールをネット上でかき集めてきて、OSやブートローダー(OSをメモリに転送したりする機能を担っているアプリケーション)自体をコンパイルしないといけない等、開発環境をまともに構築すること自体が困難でした。結果、「そもそもOSの起動がうまくいきません」という段階で解決策が見つからないという事態に。

こういう状況に陥ってしまうと、誰のせいにもできないし、相談もできません。正直ツラいです…。

私も何度も開発を途中であきらめた経験があります。初心者の段階でこういう挫折を味わってしまうと、「組み込みって難しい」とか「プログラミングって難しい」という印象を強化してしまい「プログラミングってだから嫌い」ということになりかねません。

開発環境の構築が困難なものには最初のうちは特に手を出さないでいただきたいと思います

ただ、どの環境が構築が難しいかどうかも初心者ときははおろか、ある程度経験を積んでも見抜けないことがあります。事前に調べることで、開発環境の構築が困難でないかどうかを検証するようにしてください。

無料で手に入れられる環境であれば、評価ボードやCPUを購入するまえに、自分で扱えるものかどうか、試してみるのも良いでしょう。

③そもそもデバイスの入手が困難

笑えない話なのですが、開発を始めてある程度完成させたのは良いが、気が付けば選定したCPUが市場から消えている…なんてケースもあります

あまり具体例を出すのは避けたいのですが、市場に登場したときには華々しくデビューし話題になったものでも、時代の評価に耐えられず市場から姿を消すモノも多くあります。費用対効果の出ない製品というのはチップベンダーの立場としても作り続けることはできないため、こういうCPUは製造中止扱いとなり市場で入手することが極めて難しくなります。

当然、私たち一般のユーザーはそこで挫折することになります

また、そのようなCPUはほとんど誰も使っていない、ということなのでいざというときに情報収集に苦労します。やはり、多くの人が使っているデバイスというのは、トラブルに対する対処法などもネットにあがっていることが多いので、自力で不具合を修正したりして完成させるという意味でも、多くの人が使っていて、市場で入手しやすいデバイスを使うのは必須の要件になります。

よく、IT系のライターさんなんかが新しいデバイスが出たときとかに「○○を使ってみました」ということでレポートを雑誌等に書かれることが多いです。もちろんまだ誰も使っていない段階で記事にしたほうが話題になるのはわかるのですが、時代の評価を経ていない分、簡単に廃れてしまうリスクもあります。

目新しいデバイスに惑わされることなく、特に初心者のうちは使い倒されて生き残ったCPUを選ぶようにしてください

④評価基板上に搭載されている機能の実製品への転用が困難

評価ボードの入手性も良く、試作品の開発がうまくいったとします。それを実際の製品に適用したいと思ったときに、実製品への転用がスムーズにいくかどうかも重要視したいポイントです。

評価ボードというのは、搭載されたCPUをユーザーに素早く評価してもらうために作られていることがほとんどで、それこそ採算を度外視して作られていることも多いです。評価ボードの値段よりも、搭載されているCPUの調達コストのほうが高い…なんてこともザラにあります。ではなぜメーカーはそんな安い値段で評価ボードを作るのでしょうか。

CPUを作っているメーカーの立場になればわかることなのですが、とくかくメーカーとしてはそのCPUを使ってほしいのです。そこで評価ボード上にプログラマー(書き込み器)の機能を搭載してみたり、周辺機能を充実させてみたりと至れり尽くせりのことが多いです。いざ、実機に転用しようとすると書き込み機能の部分に特別なプログラムが書かれていて、そのままでは転用できない、とか使用していたOSが評価版で製品への応用には別途ライセンスが必要という理由でそこからまたハードルが上がってしまいます。

当講座としては、『背水の電子工作プログラミング』をうたっていますので、実際に開発したプログラムを現実の世界で使える、という可能性を常に残しておきたいと考えています。現実の世界に対して何のインパクトも与えることができず、作ったこと自体に満足して終わってしまうってやっぱり嫌じゃないですか。少なくとも私はそうです。

開発がうまくいけば、いつでも実製品やサービスへの応用ができるかどうかを念頭に置いてほしいと思います

本講座のキーデバイスはNXP社のLPC1768搭載のmbed対応ボード

本講座では、以上のことを考慮しまして、NXP社のLPC1768搭載のmbed対応ボードというものをキーデバイスに選定します。独断によるものですが、ここではとりあえず、この決定を受け入れていただければと思います。

mbed対応ボード

mbedというのは英ARM社から提供されている「IoTデバイスプラットフォーム」として、IoTにおけるソフトウェア互換性を含めた、ラピッドスタート(つまり素早く開発ができるということ)な開発プラットフォームです。その開発環境に対応したボードをmbed対応ボードとしています。mbedは現在注目されている、クラウドへ接続するIoTデバイスの実現などに利用可能な多くのライブラリも含んでいます。

この講座でmbedをキーデバイスにしたのは、いままで述べてきたような初心者が挫折する原因になりかねない障害がこれと言ってないことと、開発がとにかく簡単に始められるので、確実に最初の一歩を踏み出したい目的からするとベストな選択だと考えたからです

紙面も長くなってきましたので、次の回でmbedがどうして最初のデバイスとして良いのか、mbed対応ボードを使うメリットを中心に解説したいと思います。