科学・技術
Finger: 決して死ななかったソーシャルネットワーク
Finger: Social network that never died (en.andros.dev)
要約
1971年に誕生したFingerは、アカウントやアルゴリズム、中央サーバーを持たない、極めてシンプルなソーシャルネットワークプロトコルです。ユーザーは自身のテキストファイル(.plan/.project)で情報を共有し、これは初期のマイクロブログとも言えます。半世紀以上経った今でも機能し、IoTデバイスの先駆けとしても知られるなど、その歴史的・技術的価値は失われていません。
全文翻訳
1971年が最初のソーシャルネットワークの年だと聞くと、驚く人も少なくないでしょう。アカウントも、アルゴリズムも、中央サーバーもありません。あなたのプロフィール全体は、あなたが管理する単一のプレーンテキストファイルに収まります。John Carmack(id Softwareの共同創業者で、DoomやQuakeのプログラマー)はこれを開発ジャーナルとして使用しました。そして、おそらくあなたのオペレーティングシステムにも、知らず知らずのうちにクライアントがインストールされているはずです。しかし、最も信じられないのは、半世紀以上経った今でもそれが機能していることです。そして、復活の可能性も否定できません。その名はFinger、今すぐ試すことができます。
FingerクライアントはmacOSやほとんどのUnixシステムにプリインストールされています。DebianやUbuntuではapt install fingerでインストールできます。Windowsにもfinger.exeが付属しています。Emacsを使っているなら、net-utils.elに含まれるM-x fingerがあります。
finger random@happynetbox.com
これはhappynetbox.comでホストされているFingerアカウントをランダムに表示します。happynetbox.comは、自分でサーバーを持たない場合に公開を容易にする多くのディレクトリ(ホスト)の一つです。面白いでしょう?しかし、その起源もまた興味深いものです。
起源
1971年、スタンフォード人工知能研究所(SAIL)では、研究者たちがWAITSタイムシェアリングシステムを実行するコンピューターを共有していました。誰が接続しているかを知る唯一の方法はWHOコマンドでしたが、これは読みにくい無限のリストを出力するだけでした。ある日、研究所のエンジニアの一人であるLes Earnestは、毎日繰り返される光景を目にしました。「人々がWHOディスプレイを指でなぞりながら、『ドンはいるけど、トムが最後にいつ見られたか分からない』と言っているのを頻繁に目にしました。」人々は画面を指でなぞっていたため、この名前がつきました。
Earnestは、その情報を人間が読める形式で返すプログラムを作成しました。それは、実名、場所、そして最も重要な、各端末がどれだけアイドル状態だったかという情報でした。彼はコンピューターを介して話すよりも、直接話すことを好む実用的なエンジニアでした。彼は、立ち上がって廊下を歩いて誰かを探しに行く価値があるかどうかを知りたかったのです。副次的な効果として、彼はネットワークプレゼンス、つまりソーシャルネットワークを発明したのです。
1977年、このプロトコルはKen Harrenstienによって書かれたRFC 742で正式化されました。それは非常に原始的で、サポートしていたのはSAIL、SRI、MITのITSマシンという3つのサイトだけでした。少し後、ネットワーク実装はMITのEarl KillianとスタンフォードのBrian Harveyによって担当されました。1991年にはRFC 1288が書かれ、これが決定版の仕様となり、それ以前のバージョンは廃止されました。
最初のマイクロブログ:.planおよび.projectファイル
プロトコルの上に、コンテンツがありました。接続しているかどうかを示すだけでなく、Fingerはホームフォルダ内の2つのテキストファイル、.planと.projectの内容を表示しました。当初のアイデアは、自分が何に取り組んでいるか、何を計画しているかを発表することでした。いいねやコメントのようなインタラクションのない、静的なプロフェッショナルな「ステータス」のようなものです。あたかも日々の活動やプロジェクトの変更履歴のようでした。
人々は、私たちがいつもすること、つまりそれを人間化しました。詩、ジョーク、個人的な日記、ASCIIアート、記事など、何でも含めるようになりました!世界中の誰でも、簡単なfinger your-user@your-hostであなたの.planを読むことができました。多くの人が、これを正当に、インターネット上の最初のマイクロブログと考えています。
私が言及したように、最も有名な例はJohn Carmackの.planです。長年、ファンはfinger johnc@idsoftware.com(現在は無効)と入力して、お気に入りのゲームのグラフィックエンジンの状況を直接ソースから読むことができました。彼は1996年から2010年まで書いていました。今日、それらはGitHubに保存、アーカイブされています。これはビデオゲームの歴史において最も価値のある技術文書の一つであり、1971年のプロトコルで配布されていました。
TOO ANGRY TO DIE!
感動的な散文を期待しないでください。彼のスタイルは電報のようでした。タスクリストとバグを、一言も無駄にせず記述していました。しかし、時折爆弾が投下されました。例えば、1997年8月18日、彼はウェブサイトや記者会見ではなく、.planを通じて、Doomのソースコードをリリースする計画を発表しました。
-----------------------------------------
John Carmack's .plan for Aug 18, 1997
-----------------------------------------
I get asked about the DOOM source code every once in a while, so here is a full status update: [...]
The DOOM code should be a lot more interesting. It is better written, 32 bit, and portable. There are several interesting projects that immediately present themselves for working with the code. GLDOOM and a packet server based internet DOOM spring to mind. Glory kill!
最初のIoTデバイスはFingerで話した
1982年頃、カーネギーメロン大学の学生たち(Mike Kazar、David Nichols、John Zsarnay、Ivor Durham)は、学部にあるコカ・コーラ自動販売機まで歩いて行って、空だったり、ぬるいボトルだったりするのにうんざりしていました。彼らはマイクロスイッチを取り付けて、各列にどれだけのボトルがあるか、そしてどれだけ冷やされていたかを検出できるようにしました。彼らはすべてをネットワークに接続し、Finger経由でステータスを公開しました。
どのコンピューターからでも finger coke@cmu.edu(マシンの正確な名前は年々変わりました)を実行すれば、ソーダがあるかどうかだけでなく、どのボタンが最も冷たいものを提供するかを知ることができました。これは、歴史上最初の接続されたオブジェクトの一つ、インターネット・オブ・シングスの祖父と考えられています。そしてそのインターフェースは、再びFingerでした。
プロトコル
Fingerプロトコルは非常にシンプルで、一文で説明できます。クライアントはサーバーのポート79にTCP接続を開きます。キャリッジリターンとラインフィードで終端されるテキスト行(探しているユーザー名、または全員をリストするための空行)を送信します。サーバーはプレーンテキストで応答し、接続を閉じます。それだけです!暗号化なし、ヘッダーなし、セッションなし。純粋なシンプルさ。
sequenceDiagram
participant C as Client (finger)
participant S as Server (fingerd, port 79)
C->>S: Opens TCP connection to port 79
C->>S: "johnc" + CRLF
S->>C: Contents of ~johnc/.plan (plain text)
S->>C: Closes the connection
基本的なコマンドは次のとおりです。
finger user@server
プロトコルには秘密がないため、netcatを使えば手で話すことができます。標準入力からポート79にユーザー名を送信し、返ってくるものを読み取ります。
echo "random" | nc happynetbox.com 79
他のプロトコル(Whois、Gopher、SMTPなど)と同様に、接続してプレーンテキストで質問し、応答を読むという仕組みなので、馴染みがあるでしょう。
.planの中身
.planは投稿の壁ではありません。それはあなたが望むものを何でも書くことができる単一のテキストファイルです。誰かがあなたをフィンガーすると、サーバーはそのファイル全体をそのまま返します。従うべきフォーマットはなく、ワイルドウェストです。
それは、投稿が一つしかできないという意味でしょうか?いいえ。80年代からの慣習は、同じファイル内に日記のようなものを作成し、通常は最新のものを一番上に、日付付きのエントリを追加することです。John Carmackが何年にもわたる開発を公開した方法です。彼の.planは、ダッシュラインで区切られたエントリとともに成長していくファイルでした。
-----------------------------------------
John Carmack's .plan for Jan 02, 1998
-----------------------------------------
Wired magazine does something that almost no other print magazine...
あなたのものも、プロフィールヘッダーといくつかのエントリで、よりシンプルに見えるかもしれません。
Emily Carter
Marine biologist. Coffee, kayaking and old maps.
---
2026-08-14
---
Back from sampling on the coast. Three jars full of plankton to go through.
---
2026-08-05
---
Finally finished "Dune". Now I get half the memes on the internet.
---
2026-07-30
---
Anyone know how to fix a bike chain that keeps slipping off? Tips welcome.
ファイルが長くなったら、古いエントリは自分で削除します。履歴を保存するデータベースはありません。.planは変更可能でバージョン管理されておらず、削除したものは失われます。
あるプロフィールから別のプロフィールへ「クリック」する方法はありません。すべて手動です。
あなたがすでに知っているものにマッピングするには:
Mastodon / X / Reddit
Finger (.plan)
公開
新しい投稿はアイデアごと
単一のテキストファイルを編集
複数のエントリ
自動、各投稿は行
手動:同じファイル内の日付付きエントリ
履歴
すべて保持され、パーマリンクあり
ファイルに残ったもののみ、パーマリンクなし
フォロー
フォローボタンと統合フィード
Fingerする