はじめに
今後のエンジニア人生に関して考えてみると、いくつか絶対に携わらなければならない技術があると感じたので、独断と偏見で3つ選んだ。
凄く適当にパッと思いついたものを選んだので、異論反論はあると思うが無視させていただく、ご了承ください。
以下それぞれ技術、理由と内容について書いていく。
自動運転
まず一つ目車の自動運転(もしくはそれに代替できるもの)。
正直これに関しては、エンジニア全体の義務のようなレベルになっていると思う。
代替手段として考えられるものはいくつか考案されてはいるが、
実現性やコスパの問題でほとんど無理なので、運転を限りなく安全にする方法を進める必要がある。
問題点は二つ、責任問題と自動運転の精度。
責任問題は確実に発生するが、エンジニア個人での解決は不可能なので、ここでは保留する。
残りは自動運転の精度。
この自動運転の精度向上を如何にして達成するかが全てになる。
センサー、画像認識(AI)、制御系、どれを欠いても事故に繋がる恐れがある。
なんなら事故が起こった後、使えない部分を考慮したうえで制御したりする必要があるため、非常に複雑で緻密な設計が必要になる。
その上で、責任が発生しないレベルとなると精度100%の自動運転が必要になる。
これはもはやエンジニアの総合芸術といっても言い過ぎではないレベルだと思っている。
目指すべき精度100%という無理難題を達成するのはロマンであり、魅力あふれるエンジニア界のチョモランマ。
それが自動運転といえる。
上記の書き方だと知識が無いと参加しても意味がないと思うかもしれないが、プロジェクトの大体が間違いなく膨大な規模になっているので、人手はいくらでも欲しいと思う。
興味がでたらどのプロジェクトでも良いので参加をしてほしい。
どこが一番精度良くなったとしても、全体的に見ると利益しかないし、他のプロジェクトが無意味になるわけではない。
セキュリティ関係
二つ目はセキュリティ関係。
(大分漠然としているが、広い心で読んでほしい。。)
2024年現在とある会社がクラッカーに攻撃されて問題になっているセキュリティ関連。
意図的に不安を煽る言い方をすると、クラッカーとの闘いは戦争であると考えてほしい。
プログラムというかITの世界では、守ってくれる国や会社はいないので、どこまでいっても個人が対処しなくてはならない。
ここで言っている守ってくれるというのは法律上の問題ではなく、現在進行形で行われているクラックに対しての話。降参しようが、身代金を渡そうが、勝者が応じる義務なんてないため確実に莫大な被害を受けることになる。
攻撃側は当然弱い個所を攻撃してくるので、こちらもどこが弱い部分になるのか把握する必要がある。
使用するツール、ライブラリ、プログラム言語、実装したアルゴリズム、etc。
どれを気にし過ぎても過ぎることはないが、一つでもセキュリティホールがあればジェンガのように総崩れに合う。
攻撃方法は防御によって変化するため、確実に守れるものなど存在はしないが攻撃を予測していけば対処は可能になっていく。
木剣には木盾、
日本刀には甲冑、
拳銃には防弾ベスト、
現実でもそれに適した対処をしていれば最低限度の被害ですむ。(無傷とは言っていない)
加えて現実世界での手荷物検査のような処理を間に挟めば、攻撃手段をある程度小さくすることができる。
(拳銃を事前になくせれば内部の警備の人は防弾ベストはいらずセキュリティコストを減らせる、みたいな感じ)
問題は、予測のできない攻撃をしてくる相手には対処する方法が無いという点。
つまり、攻撃を知らなければ防御もできないので、知らなかった場合は一方的に攻撃され対処もできない可能性がある。
これは現実世界でも同様で、スナイパーに狙われて演説を行えば奇跡でも起きない限り避けられない。
(2024年7月現在に奇跡を見たが、説明はしない)
まぁ奇跡を祈るのはエンジニアのやることではないと思う。。
ITの話に戻る。
何度も言うが、そのような予測不可能な攻撃に対して守ってくれる人はいない。
もし企業ならば、セキュリティに長けている人がいなければ確実に蹂躙される。
知らないことは悪ではないが、どれだけやる気があってもその場やれることはなく、ただの案山子になる。
そんなことは絶対嫌だ!
と思った人は勉強してほしい。
取っ掛かりとしてはCTFが良いかも。
勉強と言っても遊びながら学べるほうが吸収も速いと思うし、応用も効くと思う。
暗号の学問的には、
一応記事として暗号系を書き進めているので、ハッシュ関数や暗号に興味がある人はこちらを見てほしい。
実際の攻撃に使用されることはまずないが、アルゴリズムを知っているとわかることもあるし、実運用されているライブラリ等のソースコードが間違っているかを判断するには理屈を知っていなければ確実に解らない。
2024年現在でも定期的に有名なライブラリのセキュリティバグが発表されている。
これらのバグを発見する方法は、その暗号アルゴリズムと実装プログラミング言語の理解が深くなければ発見できない。
まとめると、
攻撃を防御するのも、
事前に整備するのも、
堅牢なシステムを作るのも、
外部と接続しないソフト以外(最近でそれはほぼないと思う)
どれも全てセキュリティを意識しなければいけないというわけである。そこにフロントもバックも存在しない。
株式自動売買
三つ目に株式自動売買。
(正直思いつかなかったから趣味。許して!)
自分でやるのは面倒くさいので代わりにやってもらおう
複雑怪奇で作ってて楽しいし、作るのに時間かかってもメリットがでかいしやっぱり楽しい。
勝手に金稼ぎしてくれるプログラムを考えるのはエンジニアならだれでも通る道。
ヨコセカネモトになりたいのは世の常。(知らない人は攻殻機動隊を見てほしい)
今からでも遅くないので作り始めよう。
楽しいよ
まとめ
最後は趣味全開の冗談なので論外だが、他二つはエンジニアにとっての義務と思っている。
これを見たエンジニアの人は興味が出た方だけでも勉強をしてみてほしい。
上記は完全に個人の偏見での話であり、他にも必要な技術や知っておいた方が良いことはたくさんあるが、タイトル通り独断と偏見で決めさせてもらった。
あまりこのような私見を述べる形の記事を書かないし、大分急ぎで書いたので、読みづらいものになっていたら申し訳ない。
以上 ここまで読んでいただき感謝します。