ことのはじまり
以下のような投稿が𝕏(エーーックス)1のスタイムラインに流れてきた。
私自身このようなマイコンボード(以降、プリミティブなマイコンボードと呼ぶ)でコンピュータに入門したわけではないが、
「(C言語を学んだ後に)このような教材やFPGA、CPUの創り方に触れて、ポインタやOSの動作への理解を深めたなぁ~~」
と、懐かしく思いイイネ👍️を押した。
すると𝕏(エーーックス)の "優秀な" アルゴリズムによりこの投稿に対する反応が流れてきた。まとめてみるとこんな感じだろうか。
- 懐かしい!!
- 基礎として大切だ
- マイコンボードはすべての見通しがつくので理解が深まる
- 最近は低レイヤーの知識が分るエンジニアが少ない!
- 今どきこれで学ぶのか?PythonやSketchじゃだめ?
- 生存バイアスじゃないか?
- 子どもたちはこれで楽しめるの?(ただのオッサンホイホイでは?)
などなど。
怪しいインフルエンサーが燃えるのならいざ知らず 投稿主も賛否色々ある方々も技術を愛してるハズなのに年始からザワついているのは勿体無いし、ちょうど教養としてのコンピューターサイエンス2を読了したこともあって書き散らししてみようと思った次第である。
なぜザワついているのか?
それは、我々が「困難は分割せよ」を忘れ、一緒くたに否定・肯定してしまうためだと思われる。なので、私はデカルト先生に思いを馳せつつ、以下のように"困難"を"分割"して考察してみようと思う。
- そもそも優秀なエンジニアとは何か?
- プリミティブなマイコンボードは入門用なのか否か?
- 小中学生は全員優秀なエンジニアになるための教育を受けるべきか否か?
- エンジニアになるための教育を受けるべきか?
- ソフトウェアエンジニアになるための教育を受けるべきか?
- エンジニアになるかどうか関係なくエンジニアリングの教育を受けるべきか?
- 腕利きのエンジニアが居れば技術立国日本の再興になるか?
- プリミティブなマイコンボードの実機は必要なのか?
優秀なソフトウェアエンジニアとは何か?
これに対しては様々な要件があると思う。技術的な要件としては、
- ハードウェア
- オームの法則・電磁気学
- コンピュータアーキテクチャへの理解
- USBやLANなどの通信ポート,各種ストレージなど周辺機器の知識
・・・等々
- ソフトウェア
- アルゴリズムの知識・使いこなし
- 言語仕様
- APIの使い方
- OSの知識
・・・等々
- 通信
- OSI参照モデルの各レイヤに対する知識
- サーバ・サービスの動作
- セキュリティの知識
- 言語仕様、API、フレームワーク
・・・等々
非技術的な要件としては、
- わからないことの調べ方
- 日程管理
- 対人スキル
- すごいプロダクトを思いつくアイディア力
(もしくはそのようなバディを見つけるコミュ力とか運とか)
・・・等々
私のような優秀とは程遠い疑似エンジニア3がちょっと思いつくだけでもこれだけあった。他にもいっぱいあるだろうと思うし、これらがすべて必要条件なのかはよくわからない。少なくともアセンブラやプリミティブなマイコンボードの経験が優秀なエンジニアであるための "十分条件" ではなさそうである4。
(しかも学習を開始する一番下のレイヤーをどこに置くかは判断が難しい。オームの法則やマクスウェル方程式に立ち入らなくてよい明確な理由はあるだろうか? )
【追記】
よくよく考えてみると、ソフトエンジニアに限定した内容であった。回路エンジニアならどうなのか?メカ・エンジニアならどうなのか?って考えてみるのも良いだろう。
プリミティブなマイコンボードは入門用なのか否か?
これに関しては外国語に例えたらわかりやすいだろう。
我々は母国語を最低限3年間5。大抵の場合は6~8年程、ベーシックな文法から丁寧に教わったはずだが身になっただろうか?好きな洋楽の歌詞や小説の一節のほうが余程頭に残っていないだろうか?6
ということは結局のところ、興味を持てるかどうかのほうが大事なのであろう。
であるなら、プリミティブなマイコンボードで興味を持つならそれでも良いが、そうでない人にも同じ手段で教育すべきなのかは議論の余地があるはずだ。
(Arduinoでロボット作ったり、Pythonでサクッとゲーム作ったり、興味を持つルートは色々あるはずだ)
小中学生は全員優秀なエンジニアになるための教育を受けるべきか否か?
国語教育に例えるのなら、古文について文法からちゃんと学び、将来言語学者になれる準備をするべきなのか?はたまた過去の文章の現代語訳や音読(やうやうしろくなりゆく~)レベルで留めるのかと似ているように思える7。
国がSTEAM教育を人文学系の教育に優先すると決定しない限り8、少なくとも義務教育の期間にどちらか一方を軽視すべきではないと考える。
【追記】
小中学生のカリキュラムを考えるのは文科省の専門家なわけで、我々教育の専門外の人間はアドバイスの範疇を出ないだろう。
また、古文も英語もエンジニアリング教育も等しく学ぶうえで、言語なら文法から、ソフトウェアならハンドアセンブラから学ぶべきという意見もあるかも知れない。実際、「教養としてのコンピューターサイエンス2」でもハンドアセンブルをシラバスに入れていた。しかしカーニハンは大学教授であり、受講者は人文学系などコンピュータを専門としていないとはいえ、名門プリンストン大学の学生であることは考慮すべきであろう。
腕利きのソフトウェアエンジニアが居れば技術立国日本の再興になるか?
これに関しては、政治的・文化的・時代的な要素が大きすぎてなんとも言えない。ただ、労働環境やコンプラ等々様々な環境が異なる以上、高度成長期と同じ方針を取ることはできないはずだ。
【追記】
個人的な感覚ではあるが、高張力鋼板、ボールベアリング、超大容量・超小型セラミックコンデンサ、半導体用フッ化水素等、日本が優位な分野をみるにソフトウェアの能力だけ伸ばして対抗できるのか?という疑問がある。
今更プリミティブなマイコンボードの実機が必要か否か?
これも専門外なのでよくわからない。しかしシミュレータはすぐに作れるが、実機は前々から開発しないと作れないのは確かだ。Z80をはじめとしたシンプルなマイコンがディスコンになっている昨今、この傾向は加速している。
まとめ
これまでの考察をまとめると、
- プリミティブなマイコンボードは必要である
- ハードやアセンブラの知識は優秀なエンジニアにとって必要かも(?)しれないため
- 興味を持った人(特に子どもたち)が実機で理解を深めるため
- 実機はすぐには作れないため
- 必ずしもすべての小中学生がエンジニアになるための教育を受ける必要は無い
- もちろん、コンピュータと無関係に文化的生活をおくることが困難である以上、リベラルアーツとしてのエンジニア教育は必要
- ただし、国がエンジニアを創り上げることを国策としない限りその範疇をこえる必要はない(私学や専門学校などならご自由に)
- そのうえで、プリミティブなマイコンボードが適しているのかは要議論である
- 腕利きのエンジニアが技術立国日本の再興になるかはよくわからない
以上が私の考えである。
-
ブライアン・カーニハン著。いわゆるK&Rの"K"である彼がプリンストン大学で受け持つリベラルアーツの内容をまとめた本。今回話題のハードウェア・アセンブラからインターネット、セキュリティ、SNS、AIなどわかりやすく&幅広く網羅した名著 ↩ ↩2
-
本職は人の電子回路設計にイチャモンをつける係なのでエンジニアかどうか疑問。学校はソフト・ネットワーク・制御工学。資格は応用情報とエンベデッドシステム、電気工事士である。 ↩
-
先に述べたように私自身はアセンブラやプリミティブなマイコンボードを経験済みである。皮肉にもこれが優秀なエンジニアに対する十分条件ではないことは自らがそのエビデンスとなってしまった。 ↩
-
中学校から英語教育が始まった場合。 ↩
-
全然世代ではないがThe BeatlesのYellow Submarineで関係代名詞節を覚えた記憶がある。 ↩
-
個人的には教養・興味関心レベルで留める程度で良い派。文法を無理に学んだせいで苦手意識だけ植え付けられてしまったため。 ↩
-
人工知能が吐き出した文章の良し悪しを判断したり、感情を持ったロボットの人権問題を取り扱うのは人文学の分野であろう。確かにエンジニアリングはすぐ金になるが、人文学分野をないがしろにはできないと考えている。 ↩