川合秀実がSecHack365トレーナーとして、みんなに伝えたいと思っていること
(0)
- 自己紹介みたいなものです。
- ここに書くと2020年度の参加者以外にも見えてしまうわけですが、別に隠さなければいけないことはないと思ったので、ここに書いておきます。
(1)
- 基本的に、質問してくれたら答えます。だからわからないことがあれば聞いてください。
- もし私にこたえられない質問であれば、答えがわかりそうな人につなぎます。
- これはpull型の情報提供です。
(2)
- それに対して、私からあえて伝えたいことが少しだけあります。これはpush型の情報提供です。
- [1] 私には長年の夢があります。それは移植作業の不要な世界を作り上げることです。
- 移植って不毛なんです。バグのもとです。手間もかかります。・・・移植が大変だからこそ、世間では移植性の高いコードを書けとか言います。
- また、いろいろなソフトウェアが移植されなかったために優秀なハードウェアがソフトウェア不足で衰退してしまったこともあります。
- そういうのをずっと問題だと私は思っていて、それを自力で何とかしたいのです。
- え?Javaや.NETやLLVMやJavaScriptがあるじゃないかって?・・・いやいや、それらはどれもすごく大規模で、私はそうじゃないものが欲しくてたまらないのです。・・・でも誰も作ってくれないので、私が自分の満足いくものを作ります。
- 私はこの夢を20歳くらいのときから追いかけています(断続的に)。・・・長いですね。そして20歳と言ったら、今のみなさんと同じくらいですよね。つまりそれくらいのときに見つけたテーマを今になってもずっと追いかけているわけです。
- [2] 私は自分の作ったものを他人に使ってほしいとは思っていません。
- いやその、私だってかつては自分の作ったものが誰かの役に立ったらいいなとは思っていました。だからその気持ちもわかります。
- でも、いろんな人に使ってもらおうとすると、あれこれと文句を言われることに耐えなければなりません。こういう機能を付けてくれ的な要望(注文)にもこたえなければいけません。それが、すっごくめんどくさいのです。
- 私はそんな勝手な人たちのために時間を使いたいわけではないのです。人生は限られているのです。そんな暇があったら次の開発に取り掛かりたいのです。
- それにですよ、本当に圧倒的に魅力的なものを作ることができれば、広報しなくても、要望に応えなくても、みんな勝手に喜んで使うと思うのです。というか、使った人が明らかに「得」するようなレベルになれば、使っている人は使っていない人よりも有利になるはずなんです。そうならないってことは、まだまだだということです。だからこそ他人に使ってもらうための努力をするくらいなら、もっともっといいものを作るために開発をするべきなんです。
- みんなが使わないのなら別にそれでいいじゃないですか。私が一番に使って圧倒的に有利になってしまえばいいんです。だから私は自分の作品を自分で使いますし、デモするときは自慢のつもりでやっています。「あ、キミも使ってみたくなった?そっかあしょうがないな、じゃあこのURLからダウンロードできるから使ってみればいいよ、じゃあねー」というノリです。それが私の理想です。
- [3] 私は非同期型のコミュニケーションが好きです。
- 私はオープンソース開発が好きなのですが、オープンソースでみんなで緩く開発するとき、コミュニケーションの中心は「メールする」とか「掲示板に意見を書く」とか、そんなものになります。何か知りたいことがあれば質問を書き込む。誰かが質問してきたら答える。それだけです。単純明快です。そしてそれで十分でした。それで疑問は解消されて、開発がどんどん進みます。それ以上に必要なことなんてあるでしょうか、もちろんありません。だから私たちは自己紹介もしません。
- それでも、そうやって質問したり、質問に答えたりしているうちに、なんとなく相手がどんな人なのかわかってきます。いや、年齢も性別も顔も趣味も家族も住んでいる場所もわかりませんが、でも口癖や考え方や信念などはじわじわと伝わってきます。
- みんな遠慮なく質問できます、なぜなら答えるほうも時間ができたときに答えてくれるからです。非同期なので、相手の作業を邪魔してはいないだろうかとか、眠い時に起こしてしまっただろうかとか、そんな心配をする必要はありません。申し訳ない気持ちにならないわけです。・・・これはすごく素敵な文化だと思うのですが、なぜかコロナ以降は、みんなzoomが大好きなんですよね。どうして時間を合わせてオンライン上で集まらないといけないのかな。そんなことしなくてもなんだってできたのに。みんな自分の好きな時間に活動できたのに。非同期なら、まとまった時間が確保できなくても、隙間時間しかないようなときでも、その隙間時間を有効活用できるのに。
- まあ世間の多くの人は、私たちオープンソース開発者のように日頃から訓練されていないんですよね。だから今まで通りのコミュニケーションのほうが得意で、オンライン上でオフラインをエミュレーションしないと調子が出ないんですよね。そっちの方が多数派なのでしょうがないのかな。仕方ない。
- とまあそんなわけで、私は非同期型のコミュニケーションが好きです。今だって、読んでくれる人がいるのかいないのかわからなくても、こんなにダラダラと書き続けられるわけです(笑)。・・・でも、私はみなさんが同期型のコミュニケーションのほうが得意だということもわかっているので、zoomで話しかけてもらってもいいです。ただまあ、zoomでもtypetalkでもどっちでもいいかな、って思ったときは、できればtypetalkのほうが嬉しいです、と、まあその程度の話です。
- さて、これでなんとなく私がどんな人かわかったでしょうか??
(3)
- なんか偉そうにいろいろ書いたわけですが、「じゃあお前はどれだけすごいものを作れるんだよ?」ってなりますよね。だからそれを書きます。
- [1] 私は昨年度、ES-BASICというプログラミング言語を作りました。
- スクリプト言語ですが、JITコンパイラが入っているので実行速度はかなり高速です。また普通にコンパイラとしても機能して、Windowsの.exeファイルを出力できます。さらにアセンブラも内蔵していて、プログラム内にBASICの命令とアセンブラ命令を混在できます。さらにセキュリティを意識してデバッグ支援機能もいろいろ入っています。デバッガなんか使わなくても結構いろいろできます。
- そういう、たった一つでいろいろできちゃうesbasic.exeを、44.0KBで書きました。440KBではなく、44.0KBです。他の言語と比較したら、その小ささは圧倒的です。
- 参考: http://essen.osask.jp/?esbasic02a
- [2] 私は「30日でできる!OS自作入門」の著者でもあります。
- その本の中では、「はりぼてOS」というOSを、30日かけて作ります。そのままでは機能が少し足りないので、さらにいくつかの機能を追加して改造すると、OSの大きさは30.1KBになります。WindowsやLinuxとかと比べると極端に小さいです。しかしこれでも、マルチウィンドウですしマルチタスク対応です。
- こんな教育教材用のOSじゃ、大したことはできないと思うかもしれません。しかし、この「はりぼてOS」上で、先のES-BAISCを動かすこともできます(もちろん、Windows版のES-BASICがそのまま動くわけではなく、「はりぼてOS」用に移植したES-BAISCが動くというだけです。たった30.1KBのOSが、いろいろできちゃう便利な言語を十分に動かせてしまうわけです。
- しかもそれだけではなく、「はりぼてOS」版のES-BASICであるesb02b.hrbは、esbasic.exeよりも小さい37.6KBなんです。・・・これはどういうことかというと、Windowsよりも「はりぼてOS」のほうがうまく設計されているために、同じアプリを作り比べたときに小さくなってしまったというわけなのです。30.1KBしかないOSなのに!!
- いやもう、そもそもesbasic.exeを44.0KBで書いたことだけでも圧倒的なことで、もちろん手抜きななんて一つもないのですが、でも「はりぼてOS」用に書き直したら、それだけでさらに小さくなってしまったわけです。だから「はりぼてOS」はバカにできません。
- 参考: http://essen.osask.jp/?esb02b_hrb
こめんと欄