通信系のバグ:今でもあるエンディアン問題

 ソフトウェア技術者のためのバグ百科事典(19)複雑怪奇な通信系プログラムのバグは、通信系の組み込みの開発者が大なり小なり経験しているだろう。特にエンディアンの問題は、よくある話である。この記事では解説されていなかったが、エンディアンの問題の発生の原因の1つに、通信のエンディアンとマイコンのエンディアンが異なることがある。
 歴史的に、通信の世界では、ビッグエンディアンを使うことが多い(当然、例外はあるが)。一方、マイコンの世界では、リトルエンディアンが多い(設定で選べるマイコンもあるが)。これが間違いのもとである。
 もう1つやっかいなのが、物理的な通信路でシリアル出力されている場合、ビットの上位から送信されるか、下位から送信されるかという2択があるということである。MSBファーストかLSBファーストかという問題だ。これも、どちらの流儀もある。LSBファーストの場合が多いが、よく使われるI2CはMSBファーストだ。
 これだけ選択肢があると、まあ、いろいろと間違うこともある。

マツダ 心を燃やす逆転の経営:メーカーの技術者必読の書

 私は、車には関心がない。トヨタの車を20年近く乗っている。それもこれも、車は動けばいいので、動いてくれているのでずっと乗っている。
 そんな私が、マツダ 心を燃やす逆転の経営という本を読んだ。久しぶりに良い本であった。経営の本なのだが、その大半は技術経営について語っている。しかも、業界で大手ではない企業の技術戦略である。
 その要点は、一括企画、コモンアーキテクチャ戦略である。この考え方は、組み込み機器でも通じる考え方だ。開発者も、開発費も少ない企業には、企画の方向性、技術の方向性が必要である。その方向に戦力を集中することで、やっと競合他社に勝てる。
 この本は、それを実践した中身が書かれている。ここまで、あからさまに書いて大丈夫かと思うほどだ。

たまには手書きコーディングもいいかも

 ノートPCの電源ケーブルを持っていくのを忘れてしまった。ちょうどソフトウエアの実装が始まったところだった。メールを見たりするために、ある程度、PCが動作していないと業務ができない。しかたないので、ノートPCの電源を保持しておくため、手書きでソースコードを書いてみた。
 昔昔、コンピュータのプログラミングは、コーディングシートというのがあって、それに手書きでソースコードを書いた。それから、パンチカード室というところで、手書きのコーディングシートを見ながら、パンチカードをタイピングするのだ。会社などでは、コーディングシートを提出すれば、パンチカードをタイピングしてくれる専門のキーパンチャというプロを雇っているところもあった。
 手書きで、100行以上のコードを書くのは、そうした時代以来である。ちょっと検討がいる部分だったので、それを見ながらいろいろ考えたりする(机上デバッグと言っていた)もでき、意外に新鮮だった。たまには、いいかもしれない。

ポンチ絵はもはや死語なんだ

 ポンチ絵の「ポンチ」って何ですかを読んで、世代ギャップを感じた。私は、少し複雑なことを検討するには、紙にポンチ絵を書くところから始める。だから、紙と鉛筆と消しゴムが必須だ。消しゴムは滅多につかわないのだが、どうしても修正したい時には使う。
 でも、今や、ポンチ絵という言葉すら知らないとはねえ。まあ、スマホで小説を書く人もいるくらいだから、紙と鉛筆がなければ仕事ができないなんて、化石のような世代なんだろうなあ。
 道具は重要だ。道具を使うことで、人は進化した。そういう意味では、ポンチ絵を書くこともなく、仕事ができる世代になりつつあるということだろう。

設計時に一呼吸おくことの重要性:二呼吸置くとアイデアが逃げるが

 設計というのは難しい。私の場合、その難しさの1つが、早く実装へ移行したいという欲求である。ハードウエアなら回路図を、ソフトウエアならコードを書きたい。設計のような抽象度の高い作業ではなく、早く具体化したいのである。
 でもまあ、あわてて実装を始めてもいいことはない。大抵は、検討不足で、結局、回路図は書き直し、コードも書き直しになる。設計が終わってから一呼吸置くことで、いいアイデアが浮かぶこともある。何だ、こうすればいいじゃないか、とシンプルな実装方法を思いつくのである。
 一呼吸が重要だ。二呼吸置くと、そもそもの設計が頭から抜けてしまう。

Wi-Fi6:無線LANの半2重-衝突の可能性が高い無線LAN

 Wi-Fi 6」への期待に疑義 無線LANが抜け出せない「半二重」問題とはを読んで、無線LANに対する誤解がかなりあることを感じた。有線なら、ケーブルごとに通信を分離できる。性能のいいスイッチを使えば、高速に通信できる。でも、無線は空間で通信する。だから、多くの端末があれば、衝突が起きる。これは常識と思っていたが、よく考えると技術者でない人には常識ではない。
 イーサーネットの基本は、昔は、CSMA/CDという衝突検知技術であった。初期のイーサーは、1本の同軸ケーブルで複数の端末を接続していたので、通信が衝突するのは当たり前であった。でも、スイッチという機器が登場し、ブロードキャスト以外には、あまり衝突しないようになった。
 だが、無線LANは、空間を通る。いくら、プロトコルで頑張っても、有線LANに比べると衝突の可能性は高い。しかも、衝突を避けるためには、帯域を分け合うことが重要である。これが半2重だ。確かに宣伝文句では、その違いがわかりにくい。今や、有線LANは不要で、無線LANさえあればOKというようにも見えるが、決してそうではない。

テストのバグ:よくある話

 バグを見つけるテストがバグってるは、開発をやったことのある人なら、必ず1回は経験したことがあるに違いない。1回というより、何度も経験しているだろう。
 これを回避することはできない。バグのないソフトウエアが存在しないように、バグのないテスト存在しない。テストの開始は、まずテストがバグっていないことの確認から始まる。

製造業がGAFAの下請けになる?:まあ、儲かるならいいと思うけど

 製造業がGAFAの下請けとなる日というのは、結構刺激的なタイトルである。まあ、内容は、その通りだと思う。
 今さら、日本からGAFA的な企業が出てくるとは思えない。でも、GAFAだけで世の中が回るかというとそうはいかない。いつまでも製造業は必要だろう。そして、その製造業がGAFAの下請けになったって、問題はないと思う。問題は、GAFAというのは、どこか搾取的な志向があって、下請けになってしまうと、全く儲からなくなるのではないかということである。