2026年4月6日月曜日

🚀スターウォーズ文字Aurebesh(オーラベッシュ)|Star Warsのフォントをp5.jsで描く方法

 スター・ウォーズの世界共通語は「ギャラクティック・ベーシック(Galactic Basic)」と呼ばれ、英語であれ吹き替えや翻訳であれ、映画や作品の言語を指す。

登場人物はベーシック以外の言語を話すことが多く、チューバッカや他のウーキーが話すシャイリウック語、R2-D2やBB-8が話すドロイド語、イウォークが話すイウォーク語、ジャバ・ザ・ハットが話すハット語などが有名だ

https://en.wikipedia.org/wiki/Languages_in_Star_Wars

「Aurebesh(オーラベッシュ)」は、スター・ウォーズの世界で使われている架空文字です。この記事では、Aurebeshフォントの入手方法とライセンス、そしてJavaScriptライブラリ「p5.js」を使ってウェブ上に表示する方法を、サンプルコード付きで解説します

オーレベシュは、銀河基本語(すなわち英語)の話し言葉を表すために使用されるアルファベットであり、スター・ウォーズ・フランチャイズで最も一般的に見られる書き言葉の形式である[7][15]。
このアルファベットは、ジョー・ジョンストンがオリジナル三部作のためにデザインした図形を元にしており、『ジェダイの帰還』のスクリーン表示で短時間登場する。ジョンストンのデザインはStar Wars 76と呼ばれ、フォントを作成するために使用され、メッチャンによって再びAttack of the Clonesで使用された。
1990年代初頭、West End GamesのアートディレクターであるStephen Craneは、デス・スターに登場する図形に興味を持った。彼は、主にプレイヤーがキャラクターの名前をレンダリングできるようにするために、ウェスト・エンド・ゲームズのスター・ウォーズ・ライセンス製品で使用するアルファベットとして開発することを模索し、スター・ウォーズ銀河系に存在する数多くのアルファベットの1つとして提示される限りにおいて、唯一かつ排他的なアルファベットではなく、そうする許可をルーカスフィルムから得た。スクリーンショットから手書きで文字をコピーした後、彼はEurostileフォントに似た形に基づいて文字を標準化した。彼は各文字に名前を付け、値を割り当て、最初の2文字「aurek」と「besh」の名前から「Aurebesh」と名付けた。クレインがアルファベットを完成させると、ルーカスフィルムは他のライセンシーに配布するためにコピーを要求した[16]。
2015年12月に公開された『フォースの覚醒』を見越して、Google翻訳は2015年11月にテキストをAurebeshにレンダリングする機能を追加したが、その後2016年2月に削除された。

画像
オーラベッシュフォント OTFである


画像

使用方法
Pixel Sagaのシェアウェアフォントは、個人的、非商業的な目的であれば無料で使用できます。Pixel Sagaのフリーウェア・フォントを個人的に使用する場合、支払いは必要ありません。また、フォントを使用して作成する印刷物、ページ、その他の媒体の量に制限はありません。ただし、フォントを商業的に販売したり、直接ダウンロードすることはできません。フォントを使用する際、クレジットやドキュメントにフォント名やサイトのURLを記載することは歓迎されますが、これは義務ではありません。
支払い
Pixel Sagaのシェアウェアフォントを使用する際、支払いは必要ありません。商用利用の場合は、pixelsagas.comのウェブサイトからPaypal.comのサービスを通じてお支払いいただけます。シェアウェアの "商用ライセンス "を購入した際の領収書で十分です。

https://www.dafont.com/aurebesh.font


画像


画像
https://editor.p5js.org/setapolo/sketches/AZLPqm6-m

🛠️Forth言語の歴史

 


画像
https://amzn.to/3bwwaC3

わんぱくだが逞しかった、おおらかなForth黎明期

FORTHの初期開発は、多くの点で他の多くのプログラミング言語とは全く異なるものでした。他のプログラミング言語では、言語の構文や意味を明確にした形式的な仕様が完備されているのに対し、FORTHでは、言語の基本的な前提条件が実際のアプリケーションで試されるという、長くダイナミックな青春時代を過ごしました。

わんぱくおじさん🤣、チャールズ・ムーア

ムーアのプログラミングのキャリアは、1950年代後半にスミソニアン天体物理観測所で、エフェメライド、軌道要素、衛星局の位置などを計算するプログラムから始まった。彼の開発コードはカードトレイ2個分にもなり、この大きなプログラムの再コンパイルを最小限にするために、彼はプログラムを制御するカードを読み取る簡単なインタプリタを開発した。これにより、再コンパイルすることなく、複数の衛星に対して異なる方程式を構成することができた。このインタプリタには、後にFORTHと呼ばれるプログラム言語に受け継がれていく、いくつかのコマンドや概念があった。

自由形式の方が、小さく速くなるんだ

主なものは、スペースで区切られた「単語」を読むコマンド、数値を外部形式から内部形式に変換するコマンド、そしてIF ... ELSEの構成である。彼は、自由形式の入力は、特定の列にフォーマットするというFortranの一般的なやり方よりも効率的(コードが小さく速くなる)かつ信頼性が高いことを発見した。

1961年、MITで物理学の学士号を取得したムーアは、スタンフォード大学の大学院に入学した。また、スタンフォード・リニア・アクセラレーター(SLAC)でプログラミングのアルバイトをしながら、当時計画中の2マイル電子加速器のビームステアリングを最適化するためのコードを書いていた。この仕事から生まれたのが「CURVE」というプログラムで、1964年にAlgolでコーディングされた、汎用の非線形微分補正データフィッティングプログラムである。このプログラムを制御するために、彼はインタープリタの拡張版を使い、パラメータを渡すためのプッシュダウンスタック、変数(明示的に値を取得・保存する機能)、算術演算子、比較演算子、手続きを定義・解釈する機能などを管理するように拡張した。

結婚したばかりのムーアは、小さな町の環境を求めて、1968年にニューヨーク州アムステルダムのモハスコ・インダストリーズ社に入社した。ここでは、2250グラフィックディスプレイを搭載したIBM1130ミニコンピュータ用のコンピュータグラフィックスプログラムを開発した。

1970年、モハスコはムーアに、新しいユニバック1108で専用線のネットワークを使った受注システムを扱う野心的なプロジェクトを任せる。ムーアは、1108にForthを移植し、トランザクション処理を行うCOBOLモジュールとのインターフェースを整えた。


代数学がFORTRANの代名詞であったように、Forthは英語の散文をモデルにして考案された。

「単語」は、名前の付いたデータアイテム(ほぼ名詞に相当)、名前の付いた手続き(動詞に相当)、定義語(カスタマイズされた特性を持つデータアイテムを作ることができる特別な種類の動詞)からなる。単語は、以前に定義された単語を使って定義したり、(組み込みアセンブラを使って)マシンコードで定義したりすることができる。

Forthは、ダイクストラが提唱した「構造化プログラミング」[e.g. Dijkstra, 1969]や「モジュラー・プログラミング」[Parnas, 1971]の原則に従っている。

ムーアのシステムでは、I/Oに割り込みを使っていました。割り込みは、アセンブラのマクロを使ってレスポンスコードに直接ベクタリングされ、Forthの実行者は介入しませんでした。割り込みコードは、最も時間的に重要な操作(数値の読み取り、カウンタのインクリメントなど)だけを実行し、割り込みを待って中断していたタスクを再び有効にします。このタスクは、次にラウンドロビンタスクループに遭遇したときに実際に動作を再開し、そのときにイベントによって発生した高レベルの処理を完了して作業を続行します。

理論的には、このノンプリエンプティブ・アルゴリズムは、論理的または計算集約的な動作でCPUを独占するタスクに対して脆弱ですが、実際にはリアルタイムシステムはI/Oに支配されているため、問題になることはほとんどありません。

文字Aに数字の1を加えたいとき、それはできないとコンパイラが言うことではない

ムーアの個人的な哲学は、データタイピングへのアプローチに顕著に表れている。基本的にムーアは、データオブジェクトを自分の好きなように操作することに全責任を負いたいと考えていた。「文字Aに数字の1を加えたいとき、それはできないとコンパイラが言うことではない」と。

1970年代にムーア氏が開発したオリジナルのForthシステムは、ディスクからのソースをメモリ上で実行可能な形式にコンパイルします。これにより、一般的なコンパイル言語に見られるような、コンパイル、リンク、ロードという一連の作業が不要となり、プログラマが常駐するForthエディタを使ってソースを修正し、再コンパイルすることで、数秒後にはテストが可能になるという、非常にインタラクティブなプログラミングスタイルが実現しました。

Forthの最大の特徴は、その拡張性である。Forthのプログラミングは、新しい言葉、つまり言語の新しいコマンドを定義することから始まります。これは、子供に概念を教えるときに、以前に理解した概念から説明するのと同じである。このような言葉を高位定義(high-level definitions
)と呼ぶ。また、Forthの実装にはホストプロセッサ用のアセンブラが含まれているため、新しい単語はアセンブリコードで定義することもできる。

https://www.taygeta.com/forth/dpansc.htm

Forthの拡張性は、単に新しいコマンドを言語に追加するだけではない。Forthの拡張性は、単に新しいコマンドを追加するだけではなく、新しい種類の単語を簡単に追加することができる。つまり、それ自体が単語を定義するような単語を作ることができる。このような定義語を作る場合、プログラマは、その定義語が作る語に対して、コンパイル時、実行時、あるいはその両方で有効な特殊な振る舞いを指定することができる。この機能により、構造と動作の両方を完全に制御した特殊なデータ型を定義することができる。このようなワードの実行時動作は、高レベルでもコードでも定義できるので、この新しい定義ワードで作成されたワードは、性能的には他のすべての種類のForthワードと同等である。さらに、特殊なループや制御構造を実装するために、新しいコンパイラ指令を追加することも容易である。

https://www.taygeta.com/forth/dpansc.htm
\ スタックに数字をプッシュ
5 3 8 1  \ スタックの状態: 5, 3, 8, 1 (トップ)

\ スタックのトップの2つの数を加算
+  \ スタックの状態: 5, 3, 9 (8 + 1)

\ スタックから数をポップして表示
.  \ 9をポップして表示、スタックの状態: 5, 3

\ 別の例: 数値を掛け算
2 2 * .  \ 4を表示 (2 * 2)

\ スタックをクリア
clear

2026年4月5日日曜日

用途別AIを差し込む“分散スタック”がデファクト

 

ChatGPTとは
OpenAIが提供する汎用AI。文章生成、コード、画像理解、音声対話まで統合された中心的存在。エコシステムと拡張性が強く、API・ツール連携・メモリ機能により「AIのOS」として機能する。2026年時点では多くのAI運用のハブとなる基盤的ポジションを占めている。


Claudeとは
長文読解と論理推論に強いAI。巨大コンテキストにより書籍・コード・契約書レベルの処理が可能。安全性重視設計で企業利用が進む。ChatGPTに対して「思考密度の高い補完AI」として使われることが多く、深い分析や構造化に強みを持つ。


Geminiとは
Googleが提供するAIで、検索とネイティブに統合されているのが最大の特徴。リアルタイム情報取得やYouTube・Docs連携に強く、「検索の進化形」として機能する。事実確認や最新情報を扱うタスクではデファクトな位置を占める。


Microsoft Copilotとは
Word、Excel、PowerPoint、Windowsに統合された業務AI。日常業務の自動化や文書生成を担う「職場常駐型AI」。企業環境での普及が進み、チャットというより“作業補助インフラ”として使われるケースが増加している。


Perplexity AIとは
AI検索特化ツール。回答と同時に出典を提示する構造により、リサーチ用途で信頼性が高い。検索と生成の融合UIを先行実装し、「ググる」の代替として使われる。情報収集フェーズでは最短経路を提供する存在。


Grokとは
X(旧Twitter)と統合されたAI。リアルタイム性とSNSデータを活用した応答が特徴で、トレンド理解や時事性に強い。ややラフな語調とユーモアも特徴で、他AIとは異なる文化圏の情報源として機能する。


DeepSeek Chatとは
高性能かつ低コストで注目されたAI。特にコード生成や数学的処理で強みを持つ。オープン寄りの思想で開発者コミュニティに支持され、コスト重視の運用やローカル環境での活用が進んでいる。


Character.AIとは
キャラクターとの対話に特化したAIプラットフォーム。人格設計やロールプレイに強く、娯楽・教育・シミュレーション用途で活用される。AIを「人格」として扱う文化を形成した存在。


Poeとは
複数AIを同時に使える統合チャット環境。ChatGPTやClaudeなどを切り替えて比較できる。「AIを選ぶUI」として機能し、マルチモデル運用の入り口として利用される。


YouChatとは
検索エンジンYou.comに統合されたAI。検索と対話を同一画面で扱える設計で、軽量な調査や日常検索に向く。Perplexityよりカジュアル寄りの位置づけ。


Notion AIとは
ドキュメントツールNotionに統合されたAI。メモ整理、文章生成、要約をシームレスに行う。知識管理とAIを融合した「思考補助環境」として機能する。


Slack AIとは
チャットツールSlack内で動くAI。会話要約、検索、タスク整理を行い、チームコミュニケーションを効率化する。業務ログをそのままAI資産として活用できる点が特徴。


Zoom AI Companionとは
Zoom会議を補助するAI。議事録生成、要約、アクション抽出を自動化する。会議そのものを「データ化」する役割を担う。


Otter.aiとは
音声のリアルタイム文字起こしと要約に特化したAI。会議やインタビューの記録を効率化し、検索可能な知識として蓄積する。


Rewind AIとは
ユーザーの行動履歴を記録し検索可能にするAI。個人の「記憶拡張装置」として機能し、過去の作業や閲覧履歴をAI経由で再利用できる。


Cursorとは
AIネイティブなコードエディタ。コード生成・修正・理解を統合し、開発体験を再設計する。エディタそのものがAI化された代表例。


GitHub Copilotとは
GitHubが提供するコード補完AI。IDEに統合され、開発者の入力をリアルタイムに支援する。最も普及している開発AIの一つ。


Codeiumとは
無料で高機能なコード生成AI。多くのIDEに対応し、コストを抑えた開発支援として普及。Copilotの代替として選ばれるケースも多い。


Phindとは
開発者向け検索AI。技術質問に特化し、コード付きで回答を提示する。Stack Overflow的用途をAI化した存在。


Jan.aiとは
ローカル環境で動作するAI。クラウドに依存せずプライバシーを確保できる。個人主権型AIとして注目される。

GLSLとは

 GLSLとは

GLSLはOpenGLで使われるシェーダ言語で、GPU上で動作する小さなプログラムを記述するための言語です。頂点やピクセルごとの処理を並列に実行でき、リアルタイムに画像を生成・変形できます。C言語に似た構文を持ち、数式やベクトル計算を直接扱えるため、シェーダーアートや映像生成の基盤として広く利用されています。

フラグメントシェーダとは
フラグメントシェーダは画面上の各ピクセルの色を決定するプログラムです。入力された座標やテクスチャ情報をもとに、色や明るさを計算します。GLSLではこの処理が画面全体で同時に実行されるため、1ピクセル単位の精密な表現が可能です。シェーダーアートではここに数式を記述し、模様や形状を直接描き出します。

UV座標とは
UV座標はテクスチャを貼るための2次元座標系で、通常0から1の範囲で表されます。画面やモデル表面の位置を割合で示すため、解像度に依存しない表現が可能になります。シェーダではこのUVを使って位置を計算し、色や形を決定します。中心を基準に変換することで、円や波などの幾何的なパターンを簡単に作れます。

距離関数とは
距離関数はある点から特定の形状までの距離を返す関数です。例えば円や線までの距離を数式で表現します。この値を使うことで、境界を判定したり滑らかな輪郭を作ることができます。シェーダでは距離の値を色や透明度に変換することで、図形を描いたりエフェクトを加えたりする基礎となります。

SDFとは
SDF(符号付き距離関数)は距離関数に内外の情報を加えたものです。形状の内側では負、外側では正の値を持ち、境界では0になります。この性質により、単一の関数で形状と位置関係を同時に表現できます。複雑な図形も数式の組み合わせで表現できるため、シェーダーアートや3D表現の中核技術として使われます。

レイマーチングとは
レイマーチングは視点から光線を伸ばし、SDFを使って物体に当たるまで進む手法です。距離分だけ一気に進むことで効率的に交差判定を行います。これによりポリゴンを使わずに3D形状を描画できます。シンプルなコードで複雑な立体や反射、影を表現できるため、シェーダーアートでよく使われる技術です。

円の距離関数とは
円の距離関数は、点と円の中心との距離から半径を引いた値で表されます。結果が0なら円の境界、負なら内部、正なら外部を意味します。この単純な式だけで円を正確に描くことができ、滑らかな縁やぼかしも容易に実装できます。多くのシェーダ表現はこの基本形を応用して構築されています。

合成(union)とは
合成(union)は複数のSDFを組み合わせて新しい形状を作る操作です。通常は距離の最小値を取ることで、2つの形状を自然に結合できます。この方法により、球や箱などの単純形状を積み重ねて複雑な構造を構築できます。差分や交差と組み合わせることで、モデリングのような表現が可能になります。

法線とは
法線は物体表面に垂直な方向ベクトルで、光の当たり方を計算するために使われます。SDFでは周囲の距離変化から数値的に法線を求めることができます。このベクトルがあることで、平面か曲面かといった形状の特徴が明確になり、リアルな陰影表現が可能になります。

ライティングとは
ライティングは光源と法線を使って明るさや色を決定する処理です。基本的には光の方向と法線の内積で明るさを計算します。これにより、物体の立体感や質感が表現されます。拡散反射や鏡面反射などを組み合わせることで、より現実的な見た目を作ることができます。

time変数とは
time変数は時間の経過を表す値で、アニメーションの基礎になります。sinやcosなどの関数と組み合わせることで、周期的な動きや変化を簡単に表現できます。シェーダでは全ピクセルで同じ時間を共有するため、画面全体が同期して動くダイナミックな映像を生成できます。

並列処理とは
並列処理は多数の計算を同時に実行する仕組みで、GPUの最大の特徴です。シェーダでは各ピクセルが独立して計算されるため、大量の処理を高速に実行できます。この特性により、リアルタイムで複雑な映像や数式ベースの描画が可能になり、CPUでは難しい表現を実現できます。

オブジェクトとは

 Alan Kayとは

オブジェクト指向という概念を提唱した研究者であり、コンピュータを「メッセージを送り合うオブジェクトの世界」として再定義しました。彼にとって重要なのはクラスや継承ではなく、オブジェクト間の通信です。現代のOOPは彼の思想の一部だけを実装したものに過ぎません。


Smalltalkとは
Alan Kayの思想を最も純粋に実装した言語で、すべてがオブジェクトとして扱われます。制御構文さえもメッセージ送信で表現され、環境そのものがライブに変更可能です。OOPの原型であり、後の多くの言語設計に影響を与えました。


オブジェクトとは
データと振る舞いを一体として持つ単位であり、外部とはメッセージでやり取りします。重要なのは内部構造ではなく、どのような応答を返すかです。オブジェクト指向においては「何を持つか」よりも「どう振る舞うか」が本質になります。


クラスとは
オブジェクトの設計図であり、同じ構造と振る舞いを持つ個体を定義します。ただし本質は再利用ではなく「共通の契約」を表す点にあります。クラスは型としての役割も持ち、オブジェクトの振る舞いを制約します。


インスタンスとは
クラスから生成された具体的なオブジェクトです。同じクラスから作られても、それぞれが独立した状態を持ちます。プログラムはインスタンス同士のやり取りとして実行され、実際の動作はこのレベルで発生します。


Javaとは
強い型付けとクラスベースのオブジェクト指向を採用した言語で、移植性と安全性を重視しています。仮想マシン上で動作するため環境依存が少なく、大規模システムに適しています。設計の厳密さが求められる言語です。


C++とは
手続き型とオブジェクト指向を統合した言語で、低レベル制御と高抽象を両立します。メモリ管理を明示的に扱えるため高速ですが、その分設計の責任も大きくなります。OOPは機能の一部として提供されています。


Pythonとは
シンプルな文法と柔軟なオブジェクトモデルを持つ言語です。すべてがオブジェクトとして扱われ、動的に振る舞いを変更できます。厳密な設計よりも可読性と生産性を優先し、実用性の高いOOPを提供します。


Rubyとは
純粋なオブジェクト指向を掲げ、すべてがオブジェクトで構成されます。コードは人間のために書くという思想が強く、DSL的な表現力に優れています。振る舞いを柔軟に変更できる点が特徴です。


カプセル化とは
内部の状態を外部から直接操作させず、メソッドを通じて制御する仕組みです。これにより変更の影響範囲を限定できます。重要なのは隠すことではなく、「どの操作を許可するか」を明確にする点です。


継承とは
既存のクラスを拡張して新しいクラスを作る仕組みです。コードの再利用手段として使われがちですが、本来は「共通の性質を持つ関係」を表現します。過度な継承は複雑さを増すため注意が必要です。


ポリモーフィズムとは
同じインターフェースで異なる振る舞いを実現する仕組みです。呼び出し側は具体的な型を意識せずに扱えます。柔軟な設計を可能にし、変更に強い構造を作るための中心概念です。


メソッドとは
オブジェクトが持つ振る舞いを定義する関数です。外部からはこのメソッドを通じて操作されます。データと密接に結びつき、そのオブジェクトの責務を実現する手段になります。


プロパティとは
オブジェクトが保持する状態や属性です。値として存在するだけでなく、振る舞いと組み合わさることで意味を持ちます。状態の管理が設計の質を大きく左右します。


コンストラクタとは
インスタンス生成時に呼び出される初期化処理です。オブジェクトの一貫性を保つために必要な状態を設定します。ここでの設計が後の不具合を左右します。


インターフェースとは
振る舞いの契約を定義するもので、実装は持ちません。利用側は具体的なクラスではなく、この契約に依存します。変更に強い設計を支える重要な概念です。


抽象クラスとは
共通の振る舞いを一部実装しつつ、未完成の状態を持つクラスです。継承先で具体化されることを前提とします。再利用と拡張のバランスを取るための仕組みです。


MVCとは
Model・View・Controllerに責務を分離する設計パターンです。データ、表示、操作を分けることで変更の影響を局所化します。UIを持つアプリケーションで広く使われます。


Singletonとは
インスタンスを1つだけに制限するパターンです。グローバルな状態を管理する際に使われますが、依存関係が隠れやすく、過剰な使用は設計を硬直させます。


Factory Methodとは
オブジェクト生成の処理をサブクラスに委ねるパターンです。生成ロジックを分離することで、拡張性と柔軟性を確保します。生成の責務を明確にする設計です。


SOLID原則とは
保守性の高いオブジェクト指向設計のための5つの原則です。単一責任、拡張に開いて変更に閉じる、置換可能性、インターフェース分離、依存性逆転から構成されます。


依存性逆転とは
上位モジュールが下位モジュールに依存するのではなく、両者が抽象に依存する設計です。これにより変更の影響を抑え、柔軟な構造を実現します。


結合とは
モジュール同士の依存の強さを表します。結合が強いほど変更の影響が広がります。低結合にすることで、独立した変更が可能になります。


凝集とは
モジュール内部のまとまりの強さを示します。高凝集であるほど、そのモジュールは単一の目的に集中しています。設計の明確さと理解しやすさに直結します。


責務とは
そのクラスやオブジェクトが担う役割のことです。責務が明確であれば、変更理由も明確になります。設計は責務の分割そのものと言えます。