【バイエンディアン(Bi-endian)】《プロセッサ》 → エンディアン

【バイポーラIC(Bipolar IC)】《HW》

集積回路の内部素子としてバイポーラトランジスタを使って回路を実現したタイプのIC。
集積回路の素子には、バイポーラ、CMOSなどの電子デバイスが使用されている。ソフトウェアからその差を直接に検出する手段はないが、素子のタイプによっては、インストラクションの実行に伴う消費電力が大きいものなどがあるので組込みソフトウェア設計の際には考慮する必要がある。

【バグ(Bug)】《SW全般》

プログラム内に巣くう虫、すなわち不具合を指す。虫は隠れるのがうまいので、プログラムの中に日頃密かに潜んでいて、プログラマが気づかないことも多い。潜在していた不具合を修正することを「バグ取りをする」という(本来虫は採るものであるが、ここでの虫は取るものであることに注意)。修正した際には「バグをつぶした(bug fixed)」、不具合の一覧表を「バグリスト」等と呼び習わす。
虫の取り方とともに取った虫を標本にして展示することは、同じ不具合を繰り返さなくするために役に立つ手法のひとつである。バグを早い段階で取らないと、出荷間際になって苦虫を噛みつぶす思いをすることになる。

【バグの分析/切り分け】《SW全般》

バグの切り分け」とは、障害の原因であるバグが存在する部分を特定することです。
「バグの切り分け」を行う意味は、バグの特定及び解決にむけて、バグの調査対象とする部分を絞り込むことにあります。
バグが存在する部分を特定にするためには、まず障害の現象(障害内容、再現頻度、再現手順など)を正確に把握することが望ましいです。テスト方法の誤り、勘違い/思い込み、障害レポート内の重要な情報の欠落などがないかどうかも確認します。
障害の現象を正確に把握できたら、バグが存在すると推定できる部分をピックアップします。
組み込みソフトウェアにおいては、バグが存在する部分がソフトウェア以外の部分である可能性もあるため注意が必要です。
バグが存在する部分の例;
 (a)ソフトウェア(タスクドライバ、関数、OS、・・・)
 (b)ハードウェア(デバイス、ケーブル、コネクタ基板、・・・)
 (c)周辺環境(電源、温度、湿度、アースノイズ、・・・)
バグが存在すると推定できる部分からバグが存在する部分を特定にするため、それらを1つずつ変更して、障害の現象が変化するかどうか確認します。
ここで、変更と障害の発生有無に完全な相関がある部分を見つけることができた場合は、障害の原因であるバグが存在する部分を特定できたことになります。この部分に対してさらに詳しい調査を行うことができれば、最終的にはバグの特定につながり、障害の発生過程も明確になります。(但し、メモリ破壊や暴走を伴う障害や発生頻度が低い障害は、バグの特定に時間がかかる場合もあります)
しかし、変更と障害の発生有無に完全な相関がある部分を見つけることができない場合は、ここまでの障害の分析結果をフィードバックした上で、バグが存在すると推定できる部分のピックアップから再度やり直します。タイミングや実行順序、前提条件が影響したり、複数の原因が互いに関連して発生することも考えられます。
なお、デバッガを使用してバグの切り分けを行う際には、デバッガが障害の現象に影響を与えることもあるため注意が必要です。
参照:デバッガを使用する際の注意点

【パーシスタンシー(Persistency)】《HW》

組込みシステムの電源を切っても消えない記憶のこと。永続記憶とか不揮発性記憶とも呼ぶ。従来は、工場出荷時の設定などをフューズROMに書き込んで不揮発性を利用するにとどまっていたが、近年は、FlashメモリやFeRAMなどの記憶デバイスが不揮発性を持つために応用範囲が広がっている。
電源を切っても、再度電源を入れた場合には電源断前の以前の設定を呼び戻すような携帯端末がその例である。ソフトウェア開発の観点からは、複雑なオブジェクトの関連やインスタンスを不揮発にできれば、電源を入れた時点でのブートストラップ処理やアプリケーションの初期化作業を軽くできる利点がある。その一方で、電源断の間に外部の状態が変化していることは感知できない。こうした状況への対処のないソフトウェアは、適切な動作をしなくなるので不揮発性を利用する組込みソフトの設計は相対的な難易度が高い。

【バス(Bus)】《プロセッサ》

コンピュータシステムにおいて、デバイスとデバイスの間で情報をやり取りしたり、お互いを制御しあうための信号線をバスと呼ぶ。大雑把に分類すると、「アドレスバス」「データバス」「制御線」に分類できる。
アドレスバスは、RAM/ROMなどのメモリや周辺I/Oデバイス等のアクセス対象となるリソースを指定するためのアドレス情報をやり取りするためのバスである。
データバスは、デバイス間で情報をやり取りするデータが通るバスである。アドレスバスでアクセス対象のリソースを指定して、データバスを介してデータをやり取りすることになる。

【バスマスタ(Bus Master)】《プロセッサ》

通常のコンピュータシステムでは、同じバスを不特定多数のデバイスが共有することがほとんどである。そのため、各信号線は複数のデバイスで共有される。そのため、同時に複数のデバイスが勝手に信号を出力したり入力したりすると、その信号線はHIGHなのかLOWなのかわからなくなったり、電気を吸い込まれ過ぎてその信号線の電力が足りなくなったりする。
そのため、同じバスに接続されている複数のデバイスが勝手に動かないよう、調停するのがバスマスタである。最も代表的なバスマスタデバイスは、CPUである。

【バックラッシュ(Back-lash)】《HW》

メカトロニクスにおいて変位を伝達する機構、例えばギア同士のかみ合いやボールネジでのボール/ナット間に存在する微小な「がた」のこと。例えばギア機構は駆動側の歯と被駆動側の歯とがかみ合わさることで変位を伝達するが、かみ合ったギアの歯どうしの隙間はゼロではない。この隙間は歯を順次かみ合わせながら、そしてかみ合いから外しながら回転するギアの動作上必要不可欠なものである。ここで駆動側のギアが常に一方向にしか回転しない場合は、歯のかみ合いによって伝達される変位量に対してこの隙間(がた)は影響しない。つまり回転方向に「がた」はないと言える。しかし被駆動側が駆動側より早く回転したとき、あるいは駆動側が逆回転を始めたときには「がた」の分だけ駆動側に一瞬の空回りが発生する(ロストモーション)。これは制御にとっては、指示に対する実際の変位量に狂いが生じるということに他ならない。
バックラッシュに対する機械的な解決方法として二つのギアとバネを用いて常時逆方向に一定の力を加えておくダブルギアと呼ぶ方法や、ボールねじのナットに常に一方向の力を加えておく方法などがある。製品の要求精度を満たすバックラッシュ量の機構部材を選定することは機構設計者の責務であるが、製品の要求精度を見据え変位伝達系の特性に応じた制御論理をプログラムに組み込むことが組込みソフトウェアの側で重要である。

【バッファ・ドライバ(Buffer Driver)】《HW》

マイクロプロセッサがソフトウェア実行の結果として出力するデータは、ハードウェア的にはロジック(論理)信号である。このロジック信号はプロセッサから見て外部のデバイスを直接に駆動できるような出力電力がない。また、距離の離れた場所にあるデバイスへ銅線ケーブルで接続したような場合にも、信号の減衰やノイズを打ち消すだけの電力をプロセッサは供給しない。よって、プロセッサからの出力信号は、何らかの形で電圧や電流増幅したうえで他のデバイスに送ったり、デバイスを駆動する必要がある。このプロセッサ出力を増幅する素子のことをバッファもしくはドライバと呼ぶ。ドライバの場合には、信号の方向を制御する制御線が付随しているものもある。バッファの場合は、あるタイミングの信号を保持するメカニズムが備わっているばあいもあるので、ソフトウェアからバッファやドライバを見る場合には、それらの条件を正しく設定しておくことが必要である。

【ハードウェア記述言語(HDL:Hardware Description Language)】《HW》

HDLは1987年に標準化されたVHDL(IEEE1076)や1995年に標準化されたVerilog-HDL(IEEE1364)等の、デジタル論理回路を生成するための記述言語の総称です。HDLで記述するハードウェアは基本的に同期設計で、レジスタへのリードライトをベースにして記述します。これゆえにRTLレベルのハードウェア記述とも呼ばれます。
言語が生まれた背景としては、ハード設計を回路図(スケマティック)入力する開発手法では開発前にデバイスを選択することが必要であったため時代遅れのLSIやASICとなる可能性があることや、回路図入力での設計はライブラリに定義されている論理式(ブール代数)を組み合わせて目的となる回路を開発するためライブラリへの依存が高くなること(ライブラリの制約を受けること)、また、ライブラリに依存する設計は再利用性が低下してしまうこと、などがあります。これらの問題を解消するために、開発終了時にデバイスを選択できるような開発として、HDL言語での開発が確立されました。
言語での開発を行うことによるメリットとしては、デバイスへの依存の軽減や、開発終了時点に最も速いデバイスに合わせる開発ができることです。また、言語を使用して開発を行うことによって、論理合成ツールを用いて回路を自動生成することにより再利用性を高めることできます。
同時に抽象度の高い設計が可能となり、設計期間の短縮(回路図設計の約1/2〜1/3)や保守性を向上させることができます。
ソフトウェアからの類推としては、ハードウェアをアセンブリ言語でプログラミングしているといえます(C言語レベルは、システム記述言語が相当します)。
最近は、HDL、ソフトウェアのCなどを統合的にシミュレーションさせる環境も出現し始めています。こうした流れから、将来の組込みソフトウェア開発とは、ノイマン型CPUのプログラミングに加えて高速ハードウェアロジックもプログラミングする作業を含む可能性が高いと言えるでしょう。

【ハードやOSに関する情報】《SW全般》

執筆募集中!

【ハードとソフトの切り分け】《SW全般》

企画されたシステム製品のコンセプトを実現するため、ハードウェアにできることと、ソフトウェアにできることをきちんと整理するプロセスをハードとソフトの切り分けといいます。
ハードとソフトの切り分けは、それぞれの得手不得手を明確にした上で行い、リーズナブルなコスト、フレンドリな操作性、快適なメンテナンス性などを最終的な製品において実現させなくてはなりません。また、機能ごとにそれをハードウェアで実装するかソフトウェアで実装するかは組込み機器の種類、用途、コンセプトによって変化します。
例えば、電気ポットや冷蔵庫などの白物情報家電では価格と省エネが重視されます。その仕様要求を満たすには、数十〜数百円程度で実装できる小面積、低消費電力の専用LSIの採用が第一の条件になるので、それを前提としてハードとソフトのプロジェクトがスタートすることになります。一方、映画やゲームを配信するネットAV家電では、大容量データをリアルタイムで伝送できる高いスループット性や配信途中でのトラブルの少なさが最低限の仕様要求になるので、暗号化〜復号化の処理だけを専用回路化することで高速化、低消費電力化をはかり、チップ面積の縮小につながらない基本的なプロトコルはROM上のソフトで処理する、という柔軟な選択が可能になります。
これらの組込み機器において、ハードとソフトの最適な切り分けを決定するには、電子回路、組込みソフト、機構部品など、関係するすべての分野の知識を網羅し、細部にとらわれることなく全体をバランスよく見ることのできるチームがワンセットいれば幸運と言えます。しかし、たいていの場合は、コスト、面積(体積)、動作スピード、再利用可能性、検証容易性の点から高機能を追求するハードウェア設計者(のチーム)と、手間、コード量、納期、修正のしやすさから高性能を追求するソフトウェア開発者(のチーム)とが、共同でそれぞれの設計と開発の対象範囲を確定していくことになります。
このプロセスで特に重要なことは、相手がどのような作業を行うのか、についての知識を深めることです。なぜなら、2つのチームの協力関係は、それぞれの分担範囲を決めてしまえばそれで終わり、と言うものではないからです。工程的に下流に位置するソフトウェア開発には、できるだけ早期にデバッグ可能なハードの仮想モデルが必要であり、そこで行われたデバックとシミュレーションの結果も、その後のハードウェア設計の際の貴重なデータとして再利用されるのが一般的だからです。
また、ハードとソフトを切り分ける場で2つのチームが顔を合わせることは、ソフトウェア開発者が製品開発のごく初期の段階から、そのプロジェクトに参加することを意味するので、ハード側のミスを一方的にしわ寄せされないように、あらかじめ釘をさしておく効果が期待できます。

【バリデーションとベリフィケーション】《品質》 → Validation and Verification

【ハンダ付け(Soldering)】《HW》

鉛と錫の合金(ハンダ)で金属同士を接合させることをハンダ付けといいます。ハンダは境界で相手の金属と合金をつくり接合を実現します。良いハンダ付けは金属同士が機械的にも電気的にもしっかり接合されていることはもちろんですが、ハンダの表面がなめらかで光沢があります。ハンダが変に盛り上がっていたり、表面がでこぼこしているものは通称イモハンダやテンプラハンダの可能性があります。
プリント基板へのハンダ付けでは部品をのりで貼り付けてからプリント基板全体を溶けたハンダ槽の上を通し、ランドにハンダを転移させます。
近年は環境への配慮から鉛を使わない「鉛フリーハンダ」の使用が一般的になっています。このタイプのハンダは組成によって異なるものの一般に融点が高いこと固いことから扱いが難しいとされていましたが、それはすでに克服され多くの製品で鉛フリーハンダが採用されています。
なお、システム内部でケーブルコネクタがよく使用されますが、作業性・生産性の点からそれらの接続にはハンダではなく圧着がよく用いられます。

【ハンドラ】《SW全般》 → ドライバ/ハンドラ

【ヒエラルキー】《SW設計》 → 階層構造

【ビジネス要件からの設計要件】《SW設計》

執筆募集中!

【ヒステリシス(Hysteresis) / シュミット・トリガ(Schmitt Trigger)】《HW》

入力信号、電圧に対して上限下限別々の値のスレッショルドレベルを持つことをヒステリシスといい、上限値、下限値の差をヒステリシス電圧という。
この上限値、下限値のスレッショルドレベルより入力が大きくなるか、小さくなるかを変化のトリガーとするFF(フリップフロップ)をシュミットトリガという。

【ビッグエンディアン(Big Endian)】《プロセッサ》 → エンディアン

【ビッグバンテスト】《テスト》

執筆募集中!

【ビット(bit)】《プロセッサ》

コンピュータの記憶の最小単位である。1ビットにより2個の事象を記憶することができる。2個の事象を表記する際、通常は「1」と「0」を使用する。コンピュータの世界が2進数と言われる所以である。

【ヒープ(Heap)】《SW全般》

プログラムが実行中に必要に応じて動的に確保/解放できるようなRAM上の領域をヒープ(heap)と言う。
C言語のプログラムの場合、malloc/freeといった関数で領域を確保/解放する領域がヒープである。
ヒープは、プロセス単位に割り当てられる。従って、マルチスレッドの環境でヒープを確保あるいは解放するときには、スレッド間の排他処理が性能を落とす原因になる場合がある。そのためヒープの確保や解放処理はできるだけ少なくする必要がある。特にマルチプロセサ環境でヒープを使用するときには、排他命令の頻度の把握、スレッド毎で使用するデータの局所化を考慮する必要がある。
参照:スタック

【ヒープとガーベジ(Heap and Garbage)】《SW全般》

ヒープは一時的に使用される領域という面ではスタックと同様です。しかしプログラム側から任意の順番で確保、解放要求が来るため、一般的にスタックよりも多くの処理を要します。
従って、特に実時間性が重要なプログラムは、まず、スタックの利用を優先して考え、スタックが利用できない場合、ヒープを利用するという考えが必要です。
プログラムから動的な確保、解放を繰り返すと、ヒープ上に小さな未使用領域の断片が多く発生します。 この断片をガーベジ(garbage)と言い、ヒープを管理するライブラリ等がガーベジを集めて大きな未使用領域に再編成することをガーベジコレクションと言います。

【ヒューズ(Fuse)】《HW》

電気、電子回路において一定値を越える電流を流すと回路が溶断した不通となるような素子のこと。
電気回路では、回路の消費する正常電流を越える電流が流れたときに異常とみなして電力の供給を止める安全装置としてヒューズを使う。形状は、糸ヒューズ、ガラス管ヒューズなどがある。機能的には、短時間のラッシュ電流では溶断しない遅延ヒューズなどもある。
電子回路では、一回書き込み型の記憶素子としてヒューズ素子が用いられる。回路を切らないデータは真、回路を切ったデータは偽としてブール値を記憶できる。
参照:OTM OneTimeMemory

【ビルド(Build, Make)】《ツール》

プログラムを構成するソース・ファイル群から実行形式ファイルなどを作成することです。Makeとも呼びます。
開発環境がビルド機能を持っており、ビルドを行うと、コンパイルアセンブルリンクなどを自動的に実行します。
また、2度目以降のビルドでは、前回のビルドから更新されたファイルを自動的に検出し、該当するファイルのみをコンパイル、アセンブルすることにより、ビルドにかかる時間を短縮します。

【ファクタリング(Factoring)】《SW設計》

設計上のくくりだしや取り込みのこと。
ある機能を単一モジュールとして設計したときに、設計規模が大きすぎて扱いが難しいと判断される場合がある。このようなときに単一モジュールの内部を見直してモジュール内部で共通のアルゴリズムやデータ操作をしているような部分を見つけ、それを下位モジュールとしてくくりだす。こうすることによって機能に直接対応するモジュールの規模は小さくなり、扱いが容易になる。このような作業をファクターアウト作業とか“ファクターアウトする“と言う。また、モジュール全体を見渡してモジュールサイズが必要以上に小さく、かつモジュール間のインターフェイスが複雑すぎるような設計部位が見つかった場合には、下位のモジュールを上位のモジュールに取り込んでしまう作業を行う。このような作業はファクターイン作業と呼ぶ。

【フィージビリティスタディ(Feasibility Study)】《SW設計》

日本語では実現可能性調査といい、プロジェクトの開始時にそのプロジェクトの技術課題に対する解決策を事前に調査し、そのプロジェクトが実行可能かどうか見極めることをいう。
フィージビリティスタディでは、プロジェクトの技術課題を十分に洗い出すことと、それらの課題に対して解決策があるか、ひとつの解決策でリスクがある場合には複数の解決策を提案することが求められる。とはいえ、フィージビリティスタディーはまだプロジェクト計画の確定前に行われるので、この時点では実現可能な解決策があるかないかと、それらの実行にどのくらいの人と時間が必要かの見積もりを行い、実際の解決策の実行はプロジェクト計画に立案され、後で実行されることになる。
フィージビリティスタディで調査が必要な技術課題は、要求性能を満足するための方策(OSのコンフィグレーション、高級言語が使用できるか/アセンブラが必要か、など)といった純粋に技術的な課題だけでなく、機能要求を実装するために必要な市販ライブラリやミドルウェアの調査など調達に関する課題、特殊なスキルが必要な場合、そのスキルを持ったエンジニアが確保可能かなども含まれることがある。
また、フィージビリティスタディーでは、実際にプログラムを作成してみて技術課題が解決可能か調査することがあるが、そのときに作成するコードは、できるだけ短時間で実現の可能性を調査するために、正式な開発プロセスを使わずに開発されるために、そのプログラムを製品に使用する場合は、プロジェクト開始後に正式な開発プロセスにしたがって再チェックを行う必要がある。

【フェイルセーフ/フールプルーフ(Fail-Safe/Fool-Proof)】《SW設計》

システムを設計、製造、試験する場合に考慮する観点として、フェールセーフ/フールプルーフがあります。
フェールセーフとは、システムの一部が故障などによって、本来の機能を果たせない状態になった場合でも、システム全体として致命的な障害とならないように「安全側」に倒れるようにすることを意味します。
故障が発生すると、安全確保のため故障したシステムの機能を停止し、それ以降の誤った動作をしない/させない(例えばヒューズやブレーカー)ように働かせることが該当します。また更に、機能の提供が安全確保のために必須であれば、正常なシステムへの機能の引き継ぎ(フォールトトレラント:例えば飛行機に複数のエンジンを搭載し、単独のエンジン故障で墜落させない)という動作も含まれます。
ソフトウェアの場合では、下記例のような方法や仕組みで故障や不具合(ソフトウェアの暴走も含む)を想定した対処を盛り込んでおくことが必要です。

例えばデータへのアクセス手段を常時限定し異常な書き換えを防止
データ収納位置を考慮し不慮の事態によるデータ破壊の確率を下げる
フールプルーフとは、人的ミスあるいはシステムの誤作動があっても、機能提供が安全に行われるようになっていることを意味します。
フールプルーフでは、「誤解による使用誤りの防止(例えば録音ボタンだけを赤色)」「うっかり間違いによる誤作動の防止(例えば削除指示をメッセージで確 認)」だけでなく、「いたずらによる誤作動の防止(例えば電源キーの時間ロック設定)」や「悪意使用者によるシステム誤作動の防止(セキュリティ:例えば重要情報のパスワードによる保護)」も考慮されている必要があります。
ソフトウェアの場合では、単に人間のオペレーションミスを想定した保護ロジックを組み込むだけでなく、例えばソフトウェアの内部でも、関数の引数の上下限界値の確認や、重要な関数の戻り値の範囲の確認(特に決められた範囲を逸脱した値が重要な問題を引き起こす場合)を行い、異常であればエラー処理を行うという防止策を設け、データ破壊などによる致命的な事態(暴走)の要因を防ぐといった対処が有効です。ただし、このような関門を多数設けると規模が増えるだけでなく性能が著しく劣化するため、システム全体を通して不特定要因の発生しやすい外部インターフェースの所や、重要なデータを変更するポイントなどを見極めた上で対処する場所を絞り込むことが必要です。
フェールセーフ/フールプルーフは製品開発の機能検討時に漏れることも多く(事件や事故が起きると、想定もできなかった故障や使われ方という言い訳をしますが)、ノウハウを積み上げながら開発の各段階で充分確認をしていく地道な作業が大切です。

【フォトカプラ(Photo Coupler)】《HW》

発光素子と受光素子とを組み合わせ、光を介してデジタル信号を中継する素子のこと。応答性から発光素子としてフォトダイオードを、受光素子としてフォトトランジスタを採用していることが多い。フォトカプラを使用することで入力(発光)側と出力(受光)側とを電気的に絶縁することができ、入力回路においては入力側に異常電圧が発生したときに出力側にそれを伝播させない(回路素子を破壊から防止する)ために使用する。出力回路においては出力(負荷)側での異常電圧から出力回路(駆動側回路)を保護するために使用する。

【フォールトトレラント】《SW設計》 → Fault Tolerant

【不揮発性】《HW》 → パーシスタンシー

【プライオリティ】《OS》 → 優先度

【ブラックボックステスト(Black-Box Testing)】《テスト》

ブラックボックステストとは、テスト対象システムにおいて、入力値に対して期待される出力値が得られることを検証することである。システムをブラックボックスとみなして、入力と出力をテストするためブラックボックステストと呼ばれる。
ブラックボックステストは設計カバレッジを確保する手段であり、対語となるホワイトボックステストは実行カバレッジを確保する手段である。
すべてのシステム動作を直接テスト実行することは不可能である。
システム動作の殆どは単機能だけではなく、機能の組み合わせることにより実現しているからである。
だからこそ効果的に、かつ効率よくテストすることが大切である。効果的/効率的なテストケースを設計するために、同値分割/境界値分析/デシジョンテーブルなどといったテスト技法がある。
また本来膨大となるテスト実施の組み合わせを合理的に削減できるテスト技法もある。
2機能間の組み合わせの網羅率を100%確保するAll-Pair法や、3機能以上の組み合わせを扱える(その分2機能間の組み合わせ網羅率はAll-Pair法に及ばない)直交表という技法がある。
ただし組み合わせを減らすための前提として、単機能の単独動作の妥当性が保障されていなければならない。
組込みソフトウエアにおいては、人命や社会インフラ(電気、ガス、水道など)といったライフラインに関わること、課金に関わること、情報に関わること、に対しては高い信頼性が要求されるため、それらの機能に関しては特別な基準を設けてブラックボックステストを実施する場合がある。

【フラッシュメモリー】《HW》 → Flash Memory

【フラットケーブル】《HW》

絶縁被覆された導線を並べ、隣同士の被覆をくっつけたケーブル。リボンケーブルとも呼ばれる。
フラットケーブルでは信号線同士が非常に近接した状態となるため互いの干渉によるノイズ発生がありえること、シールド構造を取りにくいため外乱に強くないなど耐ノイズ性能の点でやや問題があり、また幅広の形状から空間内での取りまわしに制約がある。しかし多くの信号を一括して伝送・接続できるメリットから、機器内配線でよく使用される。
互いの干渉によるノイズ発生については、それを低減するために信号線を1本おきに配置し、間に挟まる線をグランドに接続するという接続手法がよく用いられる。

【プリント基板】《HW》

プラスチック板(多くはガラスエポキシ樹脂やベークライト樹脂)の上に銅箔で配線を形成した基板を指しますが、用途によってはプラスチック板ではなくセラミック板を使用するものもありますし、柔軟性を持つフィルムを基板として使用する場合もあります。
プリント基板上の配線は、主に信号を伝送する配線と主に電力を供給したり基準電位(アース)を維持する配線または面、そして面の鉛直方向(表から裏へ、など)に信号を伝送するための通し穴(スルーホールThru holeまたはビアホールVia holeと呼ばれます)、LSIや抵抗・コンデンサといった素子と配線とを接合するためのランド(主にハンダ接合のために使用されます)から構成されます。
古くは板の片面だけに配線を形成していました(片面基板)が、高密度実装への要求(狭い面積に多くの配線を敷設する)に対応するために現在では多層基板がよく使われます。また、基板の層数によらず、プリント基板の片面だけに部品を実装するものを片面実装基板、両面に実装するものを両面実装基板、と呼ぶのが一般的です。
プリント基板では上流起因の設計ミスや設計変更があった場合、そのままではそれに対応できません。ちょっとした配線変更には、基板上に電線を直接ハンダ付けし対応することが多く行われますが、この電線はジャンパーJumper線と呼ばれます。
また、仕様変更への対応を容易にするために、基板上の配線にあらかじめカットポイントやソルダーポイントを形成することもあります。また、部品を基板に実装した状態で基板のテストを行うJTAGテスト用の電極を基板上に形成することも多く行われています。
基板に不用意に触れると人の皮脂が付着、長年の後に酸化し腐食の原因になることもあるので、取り扱うさいには配線面を直接に持たないように注意することが必要です。

【プルアップ入力】《HW》

デジタル回路で、入力端子とV+との間が抵抗で接続されている入力回路をプルアップ入力と言い、接続されている抵抗をプルアップ抵抗と呼ぶ。
この抵抗の役割は、抵抗を通してV+を入力に接続することで入力論理を安定して判定させることにある。具体的例は下図を参照されたい。


【ブレーンストーミング】《SW全般》

Brain Storming (以下、BSと表記)とは、問題解決方法のひとつで、発散思考によりアイディア出しや事実の洗いだしを行うための代表的な集団技法です。
5〜8名程度のメンバーで、具体的なテーマについてアイディアを出し合います。この際、批判厳禁、自由奔放、質より量、結合改善、の4つのルールがあります。
独創的なアイディアを出すためには、他人の発言を批判しないことが第一です。メンバー各人がそれぞれ頭に浮かんだことを、制限なくその場に出してゆくことが基本となります。大量のアイディアの中から最良のものを見出します。リーダーはアイディアの一覧を作成しながら進行させ、改良案や複合案の創出を促します。
本技法は米国の広告会社、BBDO社の副社長であったアレックス・オズボーンにより考案されたもので、問題の把握、解決など、広い範囲に適用できます。なお、BSの改良・発展・変型技法として、カードBS法、ブレインライティング法、欠点(希望点)列挙法などがあります。

【プログラマ(Programmer)】《SW全般》

プログラム作成者のこと。ソフトウェア開発は、要求仕様分析、システム設計、プログラム設計、プログラミング、試験と、その開発フェーズは細分化できるが、このような分類のなかで特にプログラミングを主として実施する人をプログラマと呼ぶこともある。

【プログラミング(Programming)】《SW全般》

プログラムを作成すること。ソフトウェア開発は、要求仕様分析、システム設計、プログラム設計、プログラミング、試験と、その開発フェーズは細分化できるが、このような分類のなかで特にプログラム設計に基づき、対象となるプログラミング言語でその設計を詳細化し、具体的な手順として書き下すこと。

【プログラミングで意識すべき開発環境に関する情報】《SW全般》

執筆募集中!

【プログラミングで意識すべき周辺ハードウェア仕様】《SW全般》

執筆募集中!

【プログラミングで意識すべきマイコンのアーキテクチャ】《SW全般》

マイコンのアーキテクチャには,CPU長,命令セット,データのエンディアン(データ配置)などによっていくつかのバリエーションがあり,大別化されています.
レジスタとCPUのビット長によるバリエーションには,8bit/16bit/32bit/64bit があります.
また,命令セットによるバリエーションでは,

などがあります
データのエンディアンによりバリエーションには

などがあります。
ほとんどのマイコンでは,ANSI-Cコンパイラが用意されており,標準的なC言語を目的のマイコン用の最適な命令,データに変換します.
異なるアーキテクチャのマイコン間のプログラムの移植は,アーキテクチャの違いを補正することになります.

【プログラム(Program)】《SW全般》

開発対象となるシステムの振る舞いを特定のプログラミング言語によって記述し、動作を検証したものをプログラムと呼ぶ。ソフトウェア開発は、要求仕様分析、システム設計、プログラム設計、プログラミング、試験と、その開発フェーズは細分化できるが、このような設計フェーズを通して対象システムをソフトウェアで実現したものをプログラムと呼ぶ。

【フローチャート】《SW全般》

フローチャートは1970年代に構造化プログラミングで多く用いられた、アルゴリズムの表記手法です。この表記手法を使用してアルゴリズムの設計を行います。基本制御の組合せで構造化を行っていき、その基本構造の組合せでアルゴリズムの設計を行っていく表記法に用いられます。プログラムの手続と制御の流れはわかりやすく記述することはできますが、そのプログラムが使用するデーター遷移、システム状態遷移等は表記できないのが欠点です。そのため、フローチャートとデーター遷移図、システム状態遷移図等を併用をして使用される場合が多いようです。フローチャートは、表記手法の一つであり、他のにもNSチャート(Nass-Shneiderman Chart)、DSD(Design Structured Diagram)、日立製作所のPAD(Problem Analysis Diagram)、NTTのHCP(Hierarchical and ComPact description chart)、日本電気のSPD(Structured Programming Diagram)、富士通のYAC(Yet Another Control chart)等々があります。

【ブロックダイアグラム(Block Diagram)】《SW設計》

システム工学において目的のシステム機能を分割して複数のブロックの集合として表現した図であるが、ソフトウェア開発でも類似の用途で利用している。複雑な機能は分解してより単純な機能の集合にするという還元の原理を使ったうえで図により結果を明確に示すことができるのがブロックダイアグラムである。
参照:ダイアグラム

【プロトコル(Protocol)】《SW全般》

データ通信の手順。通信相手と通信路を確保するための手続きや、データを通信するための手続きをプロトコルと呼ぶ。代表的な通信プロトコルとしてhttp,TCP/IP,イーサネット等のプロトコルがあるが、このように規格で決まった標準規格のもの以外にも、組込みシステムではシステムで決めた独自なプロトコルを用いる場合も多い。

【負論理】《HW》 → ロジック

【プロトタイピング】《SW設計》

システム開発において発生しがちな問題として、開発途中に要件変更・仕様変更が頻発するということがあげられます。その原因としては、組織変更・業務改革などに起因するシステムの要件変更・仕様変更、ユーザの業務不理解に起因する仕様バグなどがありますが、ひとたびこのような状況が発生してしまいますと、手戻りによる開発負荷の増大が発生し、ユーザと開発者間に軋轢を生じさせる原因となってしまいます。
このような状況の発生は、採用する開発技法に依存するところが大きいのですが、特にシステムの各開発工程を順次的に実施していく「ウォータフォール」と呼ばれる開発技法では、後工程になればなるほど手戻りの負荷が大きくなってしまいます。その問題点を克服するための開発技法の1つが「プロトタイピング」です。
プロトタイピングは、目的面、運用面から以下のように分類できます。

<目的面>

<運用面>

特徴として、ユーザが開発過程に深くかかわること、要件や仕様が確定するまで何度も開発工程が繰り返されるという点があり、その結果、ユーザ要件の誤解・間違いの減少、システムに対する要件・仕様の早期段階での確認・合意、問題点の早期確認による手戻り負荷削減などを実現できます。

【変数スコープ】《ツール》

プログラム中の変数の有効範囲。
プログラムの中で使われる変数には、それが通用するプログラム文面上の範囲があります。変数の有効範囲はglobal/local,public/protected/privateなど種々のキーワードの組み合わせと変数を宣言する構文によって指定しますが宣言の方法はプログラム言語ごとに異なります。
一般的に使われている言語では大域的に通用する変数、特定のクラスやモジュールだけで通用する変数、ある関数や手続きの中だけで通用する変数などが用意されています。変数スコープは変数の生存期間(変数の生成から消滅までの期間)と属性として必ずしも直交しないので、いくつかの言語ではスコープと生存期間を同時に宣言するように設計されています。
例えば、C言語の下記の例で、
extern char *str;foo(){ int value; }
自動変数であるvalueは関数foo()がスコープとなり、生存期間はfoo()の一回の実行となりますが、strは他のコンパイル単位での変数の宣言を参照して大域的なスコープとなっており、生存期間はそのプログラムの実行開始から終了までとなります。

【ボードサポートパッケージ】《SW全般》 →BSP

【ボトムアップテスト】《テスト》

執筆募集中!

【ボラタイル】《SW全般》 → Volatile

【ポーリングと割り込みの実装】《SW全般》

ポーリングとは一定周期で状態を監視する手法をいいます。主に、割り込みが使用できない、または割り込みを用いるほどリアルタイム性を求められていない場合に、この手法を用いることがあります。
例えばあるデバイスの特定のレジスタ変化を検出したいような場合、一定周期でレジスタを参照し、前回の値と比較する事で変化を検出できます。但しこの手法には難点があり、変化の有無に関わらず読み出し&比較という処理が発生するので、あまり周期を狭めるとシステムパフォーマンスに悪影響を与えますし、逆に周期を広げると、変化を迅速に捉える事ができません。
ポーリングが能動的な手法とすると、割り込みは受動的な手法になります。
割り込みは変化が起こった時にCPUから通知してもらう手法で、常に変化を監視する必要はありません。受け付ける割り込みの種別、優先度、分岐先のアドレス等をCPUまたは割り込みコントローラに設定する事で、事象発生時に自動的に指定したアドレスに分岐します。割り込み処理は、それまで行なっていた処理を即時停止し言葉の通り「割り込んで」処理する事になりますので、割り込み処理後は元の処理に復帰しなければなりません。つまり、割り込みが起こった瞬間のプログラムカウンタやスタックポインタなどのシステム系のレジスタは保存しておく必要があります。保存処理はCPU自身が退避レジスタを利用して行なう場合や、RTOSのサービスとして行なう場合がありますが、そのような機構がない場合は、プログラムで処理する必要があります。

【ボールネジ(Ball Screw)】《HW》

メカトロニクス機器において、モータの回転運動を直進運動に変換するために使用する機構部材。ネジのような螺旋溝を持つ棒状のスクリュー部と、その上を移動するナット部からなる。ちょうどボルトとナットを思い浮かべると良い。ボールネジでは繰り返し行われる移動に対応するためにナットの内側にボールベアリングが配置され、スクリューの溝に押し付けられている。これがボールネジの名前のいわれである。
ソフトウェアから制御を行うときには、スクリューのピッチ(溝間隔)、つまりスクリューが1回転するときにナットがどれだけの量進退するかが重要なパラメータとなる。制御精度によっては、ボールベアリングと溝との間の「ガタ」、すなわちバックラッシュの存在を意識したモータ駆動を行う必要があるのに加え、スクリュー自体の微妙な振れ・曲がりを意識しなければならないこともある。

【ホワイトボックステスト(White-Box Testing)】《テスト》

ホワイトボックステストとは、プログラムの処理方法や構造に基づいて、実装者の意図した通りに動作するかを検査するテストである。実装そのもの情報(ソースコードや詳細設計仕様)を用いて、具体的な内部構造がガラス張りの状態でテスト設計と実施を行うため、ブラックボックステストの対語としてホワイトボックステストと呼ばれる。
(ガラス張りという意味においてGlass Box Testとも呼ばれるが、国内でこの呼称は一般的ではない)
ホワイトボックステストは、設計の意図通りに実装出来ているかどうかの検証であり、要求通りに動作しているかどうかの検証はできない、そのためブラックボックステストと併用することが重要である。
これは、ホワイトボックステストにより実行カバレッジの網羅率を高めたとしても、テスト実施により動作したプログラムの経路において、実行エラーが発生しないことは証明できても、例外処理やエラー処理の充分性までを証明できないことからも明らかである。
組込みシステムにおいては、実機上でのブラックボックステストを中心に実施している場合もあるが、それに先立ちホワイトボックステストを行うことが品質確保につながる。