ホームページをリニューアルした技術

動的なフロントエンド技術は昨今はJavascriptではなく C#でもコードが書けるようになってきていますね。

わたしの私見ですが、C/C++がいずれは、あらゆるケースの万能言語になると思っていて、フロントエンドも 例外ではないとおもっています。 その理由の1つは、C++の標準化委員会のアクティブなことです。あらゆる言語の仕様を研究し 万能で汎用な言語を目指して多くの仕様を追加していることを好感しています。 また、GC(ガベージコレクション)がない、パフォーマンスの良い汎用言語の選択肢は 以外に少なく、最高のパフォーマンスをだすという点でもC/C++は優れています。

とはいえ、現状このサイトは、Vue/Nuxt3.0で作ってみました。 以前「XMLスクリプト」という言語を作ったことがありますが、あれは完全なサーバーサイドスクリプトで エッジ側にはHTMLしか届きません。そのため、セキュリティの懸念がかなり少ない実装でした。 こういったアプローチもこのころはあるようです。

バックエンドですが、node.jsをKubernetesのポッドとして動かしていますが、ステートレスな WEBページはここまでは簡単なんですが、課題は永続化です。クラウドネイティブ技術も当初は ステートレスなもののために作られてきたようですが、やはりステートフルなサーバーは当然 作りたくなるため、どうやって永続化するかが、Kubernetesを使うときの課題の1つです。

PVC/PVを使うのがKubernetesとしては一般的ですが、ストレージクラスの出来次第で性能や 信頼性にかなりの影響があります。その辺が面倒なので、マネージドデータベースを使いたく なるのですが、パブリッククラウドのマネージドデータベースはコストが高くなりがちなので そこが悩ましいところです。

クラウドネイティブにとって、信頼性と安定性のある永続化技術の開発は、とても興味深い 分野の1つだと思っています。分散化などもそのなかにいれていって、信頼性だけでなく パフォーマンスも向上できますね。

,

チップを作ろうとすると、ハードウェア記述言語で設計をするのは知られていますが さて、それをチップにするにはどうするでしょうか

ファブリケーションプロセス(製造プロセス)によって集積回路を製造することも容易に思いつきますが 実はその間の開発工程がおもったより大変です 半導体製造は、レイアウトを製造プロセスに渡すのですが、ハードウェア記述言語からレイアウトをどうやって 作るのかというのが、この間の工程の話です

デジタル回路に変換し、デジタル回路をCMOSのトランジスターに変換し、CMOSのトランジスターの回路を レイアウトにするのです。これを行ってくれるのが集積回路CADと呼ばれるソフトウェアですが、このソフトウェアは 長年の淘汰の結果、ほんのすこしのメーカーしか開発が行われておらず、かつ、その淘汰の結果、選択肢がすくないのも あって、利用のためのコストが膨大です

そう思って、そういったオープンソースがないのかって探してみました。なくはないのですが、選択肢はかなり 少ないようです。これから、この分野のオープンソースを手掛けてみてはどうかなって思っているところです。

集積回路CADシステムの開発をOSを作るところから手掛けたことがありましたが、いまになって、その重要性や 必要性が理解できてきました。あの当時は、ルールチェックとか、スイッチのシミュレーションとか、断片的に 実装をしていましたが、そういった多くの技術が積みあがって、集積回路CADが出来上がりますし、もう一度 ファブリケーションプロセスに持ち込めるレイアウトパーターンが出力できるCADシステムを作ってみようかと 思い直しています。あの当時、Bitmap CADというCADシステムをつくっていたのですが、指導教官が何を作って ほしいのか夢にまでみるのですが、「あ、こういうものを作ってほしいと、先生は思っていたのね」って これも夢で思ったことがあります。

なお、レイアウトを持ち込むと、試作のチップを作ってくれる会社も、このところはあるようです。 線幅はそれほど細くないですが、それでもそれなりのチップは作れそうです。RISC-Vのようなプロジェクトも ありますので、CPUを自分たちのアイデアで作っていくなんてことは、これから増えていくかもしれません。

SkyWater (https://www.skywatertechnology.com/)

なお、CPUって種類がとっても少ないんです。生き残っているCPUってほんの数種類。これも、チップを作って 販売するビジネスの難しさなんでしょう。数千億円かけて開発したCPUを、どれだけたくさん売らなくてはならない って思うと、スマートフォンなどの大量に使われる機器に使おうとしないと、投資に見合わないですから、 こんなことができる会社も、世界には限られるってことです。その一因が、わたしはこのCADシステムにかかる コストでもあるとも思っています。

でも、自分でチップは設計して作りたいですからね。宇宙に持っていく集積回路は、あまりないので これからは、設計して、製造していくことは、宇宙開発の1つの必要条件になるかもしれません。

,

このところ、過去からいままでにわたって作られてきた言語を調べています。 有名なところで100くらいあるのですが、おもったよりも少ないという印象と そのなかで使われている概念も、それほど多くないと思っています。

例えば、オブジェクト指向とか、コルーチンのような並行処理とか、多くの言語が その実装に取り組み、仕様を策定しています。

Prologのような奇抜な言語は、少ないです。Prologのバックトラックという実行は 最初理解するのがとっても大変でした。ASN1の実装をしたときに、バックトラックというのは そういうことかって、ようやく理解したのを思い出します。

そのなかで、やはりきになるのはシンタックスです。あたらしいシンタックスを定義したくなるのは わかるのですが、やはり学習の障壁や、タイプミス、実装ミスを生みやすいので、できるかぎり シンタックスは変えないでほしいものです。Algol系とか、従来はシンタックスは系統があり、 その流れで新しい言語もすんなり使えるようになったのですが、微妙にシンタックスを変えている 言語は、ちょっと困ります。その逆にJavascriptは、C++やJavaとほぼシンタックスが同じなので、 あっというまに、使えるようになりますね。

シンタックスを変えて新しい言語を生み出すのではなく、新たな言語のメカニズムや概念を 発明していかないとです。

,

質問です。1KByteは何バイトでしょうか?

教科書では1000バイトと言っているようです。ちょっと驚きません? われわれコンピュータの世界では、ファイルサイズなどを1024byteを1KByteと 表現してきましたよね。でも、このところは文脈によって1000場合と1024に なることがあります。

例えば、通信量の場合1kbpsは1000bpsです。これは通信が国際的な基準で定められている こともあり、K = 1000というSI単位系に従っているからだそうです。教科書もそれに ならって1KByte = 1000Byteと言っているのだと。

ハードディスクの容量も昨今は1KByteは1000Byteと計算しているようです。

なので、Kiという表記が作られました。1KiByteは1024Byteです。 IECが定めたようですが、このところのクラウド技術などの通信などの世界でも、 意識してKByteとKiByteを使っているようです。

わたしも、コードを書いているときに、ちょっと混乱してきたのですが、KiByteということを 意識し、1024Byteのときは1KiByteというようにしています。これだと文脈にかかわらず、必ず 1024だからです。

ちょっとネットでしらべましたが、まだ普及していないといった言い方がありますが、これからは 意識して、コンピュータの世界では使っていることが必要かと思っています。

,

CNCFが主催するKubeConが、ついに日本でも開催されますね。 今年の6月です。

https://events.linuxfoundation.org/kubecon-cloudnativecon-japan/

昨年は8月27日に、KubeDayが東京で開かれていたのですが、今年はKubeConに 昇格です。もちろん、昨年は参加しました。なかなか盛況でした。

上記のリンクのページの真ん中下のほうのスポンサーの一覧のちょっと上に横長の写真がありますが、 あれは、昨年のKubeDayのキーノートのときの写真のようですが、わたしが ちらっと写っています(自分じゃないとわからないけどね)

わたしはさっそく、参加申し込みをしました。 いずれは、登壇もしたいです。なんどかsubmitしてみましたが、なかなか競争が激しく 簡単には採用されないようですが。

いよいよ、日本でもKubernetesが盛んに使われるようになるといいですね。 CKAやCKSなどの取得者も増えることを願っています。

,

光ファイバー内の光の速度って、どのくらいの速度だか知ってます? 光速だから、どこでも一緒でしょ。とか、音速は水中では早くなるので 光ファイバーという媒体のなかだと、もしかして速いのか?って思うかもしれませんが、 実は、真空中の速度の3分の2程度なのです。光ファイバー内の屈折が速度を 低下させているというのが理由のようです。

主にインターネットの国際間接続って、海底ケーブルを伝わってやりとりしますが、 速度がそんなことになっているんです。どうして、そんなことを気にしたかというと、 衛星を使った通信がなぜかレイテンシーが小さいのはなぜなんだろう?って思ったからです。 宇宙にいって、地球に返ってくるから、なんとなく地球の表面を通信する光ファイバーの ほうが速そうな気がするじゃないですか。 でも、実は、衛星間通信は光ファイバーをあまり通らないので、速度が稼げるってわけです。

衛星コンステレーションによるインターネット接続は、実際に使っていますが、確かに レイテンシーが小さいんです。そんな理由が寄与していたとはね。

災害に強いみたいな側面もあるようですが、性能面もいいとは、衛星によるインターネットの ポテンシャルを感じます。

,

現在の主流のCPUは64ビットCPUですが、そろそろ128ビットCPUが登場しても よいと思っています。従来は、メモリ空間の拡張とか、あつかう数値の長さとかで 4ビット、8ビット、16ビット、32ビットとなってきました(その間もありましたが) わたしは、MD5を使いやすくするために128ビットになってほしいです。

MD5は衝突の可能があるとかで、SHA256などに変わってきているようですが、ダイジェストとして 使うには手ごろで、まだまだ使う場面は多いです。これを1ワードで扱えるようになると、整数値 として128ビットとして扱うことができ、シンプルなコードになるからです。

データのダイジェスト化や、ユニークなIDとして128ビットのMD5はそこそこパフォーマンスもよく 計算できるので。

あとは、IPv6のアドレスが128ビットですから、1ワードでアドレスが扱えるのも、パフォーマンスなどの 点でよいかもしれません。

CPU内の内部バスは、すでに128ビットになっているようなので、あまり設計変更をしないでも、 128ビットのCPUは作れるようです。intのビット数が128ビットになるのも、もうすぐですかね。 楽しみにしています。

,

物理学は、ニュートン物理学といわれる古典物理学と、量子力学に代表される現代物理学がありますよね。 前者は、決定論的に、答えが出るもので。物質は100%ある点に存在します。 一方、量子力学の場合は、物質は確率で存在します。その点にある確率が100%に近いから、その点にあるけれど ちょっとだけ、他の場所でも存在する可能性があるみたいなやつです。 トンネル効果がその考え方を使うとうまく説明できます。

人工知能も、1980年代に研究されたものは、PrologやLispを使った知識ベースの推論マシンで バックトラックなどをつかって、かならず答えがあれば導き出されます。 一方、このところの人工知能は、統計確率的に答えを導き出すことで、翻訳や推論が行われます。

このアナロジーに、このところ気が付いたのですが、単なる偶然でしょうかね。 量子コンピュータなど、このところのコンピューターは、量子論的なものを駆使して 新しいマシンや理論を構築していますが、人工知能も、ある意味量子論的な確率の世界が 駆使されています。

人工知能の目指すものの1つは、人間の脳と同じものを作ろうという試みであり、人間の脳の解明 であるといえますが、人工知能の行きつく先は、量子論で説明されるものになるのでは?と ふと思いました。つまり、人間の脳は、量子力学で説明がつくのではということです。

わたしのただの思い付きですが、量子人工知能とでもいうものが、もうすく実現されるのでは と予感しています。物理学が古典物理学から量子論に移ってきたように、人工知能も、量子論で この先は進んでいくのでは? そんな思い付きをこのところ考えて、やっぱり人工知能は面白いな、と再認識したところです