ハードウエアの設計支援アプリ
プログラミング言語を学習してそれを使って実際にアプリを作ることはとても大切です。実際に「使える」アプリを作ってみることで、プログラミングに関する知識が深まります。
プログラミング以外の経験が生きる!
実際に役に立つプログラムを開発するためには、プログラミング以外の経験が生きる場合がたくさんあります。 理由はシンプルで、プログラミング以外の仕事や作業の経験から、プログラミングで何か解決できる課題や作業の効率化をできるケースが沢山あるあるからです。
私自身のことになりますが、元々はソフトウエアではなく、ハードウエア系の仕事をしていました。ハードウエアの設計にも CAD をはじめとした色々なソフトウエア(アプリ)を利用しますが、そうしたアプリでカバー出来ない作業もたくさんあります。そうした作業を助けるためのアプリを作る事ができると仕事の効率がアップして設計上の誤り(ミス)も少なくする事ができます。
設計データをコンピュータで扱うように!
ハードウエアの設計作業も、コンピュータで扱うようになると設計データ自体のやり取りもコンピュータと相性が良くなってきます。つまり、ソフトウエアのアプリで色々な事を処理できる部分が多くなります。
以前は、ハードウエアの設計図(回路図)は紙に書いていましたが、最近は紙に書くことは稀で、殆どがコンピュータ上で設計図(回路図)を入力するのが普通です。設計図(回路図)の設計情報は、基本的に部品間の接続情報になります。設計図(回路図)を入力するアプリは、部品間の接続情報を「ネットリスト」と呼ばれる接続情報に変換して、レイアウトや製造の為の情報として利用します。
この情報を利用すると色々な事が可能になります。この情報が実際に使われるデータなので設計の検証にも利用できます。
実際、回路図を目で見ながらチェックするというのは意外に難しいもので、見落としも多くなります。従って、このネットリストをプログラムで処理して設計の検証を行うことで、より設計の品質を上げる事が可能になります。
要は、「接続されるべき部品のピンに接続されているか」、「接続されるべきでない部品のピンに接続されていないか」をチェックするという事です。また、間違いである可能性の高い接続は何か、例えば、一つの部品のピンにしか接続されていない「ネット」は設計ミスである可能性が高くなります。また、最近の、ハイスピード信号(高速信号)は一対一(point-to-point)である場合が多いので、接続されるピンは通常は二つです。 メモリなどは、接続されるメモリチップの数が決まっているので、幾つのピンに接続されるかは予め接続数はわかるので、それを利用すれば接続情報をチェックできます。
どんなアプリが可能か?
では、実際にどんなアプリが考えられるかというと、接続情報を見やすくするためのビューワーや、基本的な接続数をチェックする様なアプリも可能です。
また、実際にレイアウトをして配線をする場合には、配線長などの設計上の制約情報(constraint)を入力する必要があります。そうした、設計上の制約情報は接続ごとに指定する必要がありますが、こうした作業は時間がかかる作業になります。こうした作業を支援する為のアプリなどもあると便利です。
それ以外にも、実際の設計時にネットにつける名前(net name)を少し工夫して、名前でネット(接続情報)の分類ができると上で挙げた処理を自動化する助けになります。これは、接続のタイプによって接続の数や情報が違ってくるからです。
必要な機能は?
では、こうしたアプリを作成する為に必要になるプログラム(アプリ)の機能は何でしょうか?
今回は、回路設計の支援アプリを念頭に幾つかの項目を挙げてみました。
* UI(ユーザーインターフェース)
* ファイルの読み込み(設計データをアプリに取り込む)
* ファイルの書き込む(処理結果などのレポートをファイルに保存)
* 実際の設計データの処理
になります。ユーザーインターフェースは、読み込む設計データのファイルを指定したり、レポートを書き込むファイルの指定。また、処理するネット(接続情報)を検索したり絞り込んだりする為の設定などを行うなど、サポートする機能を使いこなすための処理を利用者にわかりやすく操作するためのインターフェースの設計が必要になります。
設計データは、ネットリストと呼ばれるもので、ファイルの中身のフォーマットは幾つか違ったものがありますが、多くの場合は、「テキストファイル」で、基本的には文字列の処理になります。あとは、ファイルのやり取りですが、ほとんどのプログラミング言語ではファイルの読み書きをする為の機能はサポートされているので殆どの場合は問題になりません。
では、こうしたアプリを作成する場合にはどのプログラミング言語を選ぶのが良いかという事になります。
上にも書いた通り、処理するデータは基本的にテキストファイルになるので「文字列」になります。これに加えて UI が利用しやすい言語を選んだ方が簡単に実装できます。
こうした事を考えると、比較的新しいプログラミング言語を選んだ方が実装は効率的にできます。よく利用されるのが Python や Javascript が最近では多いかと思います。Java や C#なども利用しやすい言語です。 Web ブラウザやインターネット上でアプリ機能を提供する場合には、Javascript が手軽ですが、デスクトップのアプリとして利用する場合には、Python も便利です。
まとめ
プログラミング言語を学習した後の役に立つアプリの実装例として、ハードウエアの回路設計の支援アプリを考えてみました。 実際に、ハードウエアの回路設計もコンピュータで行うことが多くなったため、設計データもプログラムで扱いやすい形になっています。実際の設計の検証作業など、人手で行うと時間がかかる作業も多く、開発支援のアプリがあると設計効率が上がります。
私自身は元々ソフトウエア系のエンジニアではありませんでしたが、本業のハードウエア設計の際の支援アプリを自分で書いているうちに、ソフトウエアの世界にも得意分野が広がっていきました。プログラミングを目指す方の多くは、別の仕事をされていた方もいらっしゃると思います。そうした、プログラミング以外での経験が実際にアプリを作る際に役に立つことは沢山あります。
ぜひ、仕事を楽にするアプリを考えてみてください。
回路設計支援のアプリは、今週はもう少し詳しい実装例を紹介していく予定です。