世界を動かす技術を、日本語で。

フィンガー: 1971年に誕生した消えないソーシャルネットワーク

2026年8月18日原文(en.andros.dev)

概要

  • Finger は1971年に誕生した、世界初のソーシャルネットワーク
  • アカウントやアルゴリズム不要、 テキストファイル一つ で完結
  • John Carmack ら著名人も開発日誌として利用
  • セキュリティ問題で一時衰退も、 現代に復活の兆し
  • macOSやUnix系OSには今も 標準搭載、すぐに試用可能

1971年生まれのソーシャルネットワーク「Finger」

  • Finger は1971年、StanfordのSAIL研究所で誕生
  • アカウント登録不要、 中央サーバー不在 の分散型設計
  • プロフィール情報は 自分が管理する1つのプレーンテキストファイル (.planや.project)
  • John Carmack (Doom/Quake開発者)も開発日誌として活用
  • macOS・多くのUnix系OSには fingerクライアントが標準搭載
  • Debian/Ubuntuはapt install fingerで導入可能
  • Windowsにも finger.exe が同梱
  • EmacsユーザーはM-x fingerで利用可能
  • 例: finger random@happynetbox.comでランダムなFingerアカウントを閲覧可能
  • happynetbox.com などの公開ディレクトリでサーバー不要で利用可能

Fingerの起源と仕組み

  • SAIL研究所では WAITSタイムシェアリングシステム を使用
  • 当時はWHOコマンドで接続者リストを表示していたが、読みにくい問題
  • エンジニアの Les Earnest が「指で画面をなぞる」様子から着想
  • Fingerプログラム を開発し、実名・端末の場所・アイドル時間を人間向けに表示
  • 1977年に RFC 742 でプロトコルが公式化、最初は3サイトのみ対応
  • 1991年、 RFC 1288 で仕様が確定

.plan/.projectファイル:最初のマイクロブログ

  • .plan.project ファイルの内容がFingerで公開される
  • 進捗や予定を書く「静的なプロフェッショナルステータス」用途
  • 途中から 詩・ジョーク・日記・ASCIIアート など自由に記載
  • 誰でもfinger your-user@your-hostで内容閲覧可能
  • John Carmack の.planは有名で、1996~2010年まで公開
  • 彼の.planはGitHub等で アーカイブ保存、ゲーム技術史の貴重資料
  • スタイルは 箇条書き・バグリスト 中心、時折重大発表も
  • 例:1997年8月18日、 Doomソースコード公開計画 を.planで発表
  • Blue's NewsPlanetQuake 等、.plan集約サイトも存在

IoTの祖先:Coca-Cola自販機のFinger連携

  • 1982年、Carnegie Mellon大学の学生が Coca-Cola自販機 をネット接続
  • 瓶の本数や冷却時間を Finger経由で公開
  • finger coke@cmu.eduで最新状態をどこからでも確認可能
  • 世界初の IoTデバイスの一つ とされる

Fingerプロトコルの技術概要

  • 極めてシンプル なプロトコル設計
  • クライアントが TCPポート79 へ接続、ユーザー名を送信(空行で全員表示)
  • サーバーは プレーンテキスト で応答し、接続を切断
  • 暗号化・ヘッダ・セッション等は一切なし
  • 例: echo "random" | nc happynetbox.com 79で手動操作も可能
  • Whois・Gopher・SMTP などと類似の単純設計

.planファイルの運用とカスタマイズ

  • 1ファイルのみ で全投稿を管理、自由な記載が可能
  • 名前付きパイプ(mkfifo ~/.plan)で 動的生成 も対応
  • 複数投稿は 日付付きエントリを追記 する慣習
  • 古い投稿は 手動で削除、履歴保存やパーマリンクはなし
  • 他ユーザーの閲覧は 手動 またはクライアントで複数集約
  • 返信・いいね・通知などの インタラクション機能なし
  • 構造化プロフィールやリンク機能も未搭載

Finger衰退の理由と現代の復活

  • 1988年のMorrisワーム がfingerdの脆弱性を悪用し大規模感染
  • 指摘された 個人情報漏洩リスク (名前・メール・ログイン状況)
  • 1990年代後半には 多くの管理者がFingerサービスを無効化
  • 2020年、 Windowsのfinger.exe がマルウェア配布に悪用され話題
  • Living-off-the-land 手法で既存バイナリを悪用
  • シンプルな設計ゆえ、 現代まで標準搭載 が続く

現代におけるFingerのリバイバル

  • Gemini・IRC・RSS・NNTP 等、ミニマル・分散型プロトコルの再評価
  • Happy Net Box (Ben Brown作):Web編集+セキュアなFingerサーバー
    • 例: finger benbrown@happynetbox.com
  • Finger.Farm (Jon Roig作):Node製オープンソース実装、WebやREST API対応
  • plan.cat :ActivityPub連携でMastodon等からも.plan閲覧可能
  • Fingerverseepoch's finger ring など、 アクティブアカウントのディレクトリ も存在

Fingerを今すぐ試す方法

  • 初心者向け:Happy Net Box
    • happynetbox.comで無料登録、Web上でテキスト編集・即公開
    • サーバー管理やコマンド操作不要、 即時に世界公開
  • 中級者向け:自前のLinuxサーバーでFingerデーモン運用
    • VPSやRaspberry Piで fingerd を起動し、~/.planを編集

Finger は50年以上前の技術ながら、 現代でも動作し続ける 軽量・分散・シンプルなプロトコル。セキュリティや機能面では現代SNSに劣るものの、「自分のファイルを世界に公開する」体験は今なお新鮮。 小さなWebの潮流 の中で再評価が進む、 時代を超えたソーシャルネットワーク

Hackerたちの意見

関連の面白いサイト: plan.cat (https://news.ycombinator.com/item?id=29248368 で話題になってた)

今日はここにこれがあって嬉しい!記事で言及されてるホストのいくつかは、僕が作ってるフィンガークライアント「lookit」のスタートページに載ってるよ:happynetbox、plan.cat、thebackupboxのフィンガーウェブリングとか。スタートページがあるのは、フィンガーには発見レイヤーがないからなんだ。finger @hostはユーザーをリストアップするけど、lookitはそのリストを選べるようにしてるから、1つのアドレスをクエリする代わりにサーバーをぶらぶらできるんだ。v0.2ベータ版をリリースしたばかりだから、フィードバック待ってるよ!: https://github.com/jonathandeamer/lookit/releases/tag/v0.2.0...

すごい仕事だね!もしかしたら、フィンガーに特化した検索エンジンみたいなグローバルデータベースや並行プロジェクトが必要かも。情報が散らばってるし、君のようなクライアントはそれから大いに恩恵を受けると思うよ。それと、Emacsを持ってるなら、僕のクライアントもあるよ: https://git.andros.dev/andros/efinger.el

WebFingerの話なしでフィンガーについて語るの?似たような感じだけど、HTTPベースだよ。[1] https://webfinger.net

ありがとう!このリファレンスを思い出そうとしてたんだ。

TFAには、ジョン・カーマックの.plan更新のアーカイブへのリンクが含まれてるね、1996–2010年の: https://github.com/ESWAT/john-carmack-plan-archive/tree/mast... (1) すごく面白そう。 (2) 誰がアーカイブをまとめたの?どうやって?なんか、誰かが数十年にわたって夕方のニュースをVHSに録画してるような感じだね。ここでは、彼らが数十年にわたって毎日フィンガーを実行してたってこと? (3) もっとモバイルフレンドリーにブラウズする方法はないの?

BluesNewsには当時のゲーム業界の人たちのアーカイブがあるよ。 https://www.bluesnews.com/cgi-bin/summary.pl

それと… 複数のユーザーが1台のマシンを使うのから、1人のユーザーが複数のマシンを使うようになったとき、特定のマシンでのフィンガーサービスはあまり意味がなくなったね。foo@example.comをどこかのplan.htmlファイルにマッピングする、よく知られたマシンを1台持ってるべきだと思う。もしユーザーが複数のマシンを持ってたら、どのマシンにクエリしてその日の.planを取得するの?もしかしたら、特定のDNSドメインにDNS TXTリソースとしてプランのベースURLを定義するのが答えかも。例えば、https://bi6.us/PL/ >という文字列を、_plan.hamrick.rocksにTXTリソースとして追加したよ。これで、finger-ngというプログラムを書くのが簡単になるはず。finger-ng meadhbh@hamrick.rocksって打つと、_plan.hamrick.rocksのTXTレコードをクエリして、プランのベースURLを抽出して、https://bi6.us/PL/meadhbh%40hamrick.rocksにあるテキストドキュメントを取得して表示するって感じ。テキスト/plain、テキスト/html、あるいは画像/avifを提供することもできると思うよ。もちろん、bi6.usがそのファイルを更新できるように設定されてる前提だけど、これも簡単だよ。とにかく、数日後に戻ってきてくれれば、コードを用意してRFC/IDを来週書くつもりだから。EDIT: apacheと格闘して、www.bi6.us/PL/以下のファイルをtext/dsd+plainとして提供するように理解させたから、HTTPS://BI6.US/PL/MEADHBH%40HAMRICK.ROCKSにアクセスすれば、ちゃんとしたものが得られるよ。確かに、HTTPS://BI6.US/PL/MEADHBH%40HAMRICK.ROCKSは、https://bi6.us/PL/meadhbh%40hamrick.rocksよりも小さいQRコードにエンコードされるね。(ただ、HNのテキストビューティファイアは、上記の大文字のHTTPSで始まるURLのリンクを自動的に生成しないみたい。)EDIT EDIT: うーん…プライバシーについては何も言ってないね。もし友達用の別の_planファイル、家族用の_planファイル、同僚用の_planファイルを持ちたい場合はどうするの?明らかに深く考えなきゃいけないね。

この記事でこれらのことはすべて扱われてるよ。プロトコルはこの手のことには触れてないけど、プロトコルの文脈では意味がないからね。追加機能が欲しいなら、他のプロトコルやソーシャルネットワークがあるし、違う人のために.planを作りたいなら、記事のように自分のサーバーをコーディングして、別の「ユーザー」に結びつければいい。元のサーバーは.planファイルをユーザー名のホームディレクトリに結びつけてるけど、自分のサーバーでその仕組みを変えるのは全然自由だよ。

90年代半ばにUnixの夜間クラスを教えてて、The Unix Programming Environmentのシェルスクリプトを試してたんだ。ローカルシステムに誰かがログインしたときに通知するために、ループとwhoコマンドを使った例があった。いとこは数州離れた大学の教授で、すでにtalkコマンドは使いこなしてた。だから、本の例をフィンガーを使うように広げることにしたんだ。返信を解析することで、いとこがログインしてるかどうかを判断できて、自分に通知を送ることができた。同じビルにISPがあって、ある日そのISPのエンジニアが厳しい顔で訪ねてきた。「もしかして、2分ごとにこの大学のメインフレームにフィンガーコマンドを送ってるの?」と聞かれた。僕は誇らしげに「実はそうなんだ!」と答えた。急いでUnixの本を取り出して、やってることを見せようとしたら、彼は「それはやめて。君のせいで、彼らはシステムコンソールのログプログラムが何十ページもの印刷物を出力してるんだ」と言った。僕は恥ずかしくなって、自分のスクリプトをやめたよ。

指やコンソールログ、90年代の話をすると、大学の1年生のときにパスカルのプログラミングコースを受けたんだ。AT&Tの3B2システムのクラスターにアカウントが割り当てられて、SVR3が動いてた。学生はターミナルラボにしかアクセスできなくて、サーバーは上の階にあって手が届かなかったんだよね。ディスクのクォータやリソースの制限はほとんどなかったから、ゲーム業界の大物になっちゃった。フリーウェアのダウンロードサイトを見つけて、独特なシステムでゲームソフトを動かすためにポータビリティや調整、コンパイルのエキスパートになった。学生たちは「finger」「w」「who」「write」をフル活用してたし、「wall」とかも知ってたから、.projectや.planファイルにちょっとしたことを書くのは当たり前だった。俺はそれをさらに進めて、VT100のエスケープシーケンスを発見して、アニメーション付きの.planファイルを作ったんだ。そこでは、$HOMEディレクトリを「/」に置き換えたり、「rootアクセスがあるよ…知ってる?」みたいなスクリプトキディの自慢をしたりした。そしたら、システムを徹底的に探検して、/etc/passwdを見つけて、そこにあったアカウントに「su」しようとしたんだけど、大半はシステム管理用のアカウントだった。もちろん、ログや監査があったから、こういう露骨な失敗は見えない管理者の目を引いちゃった。血の気が引くようなメールが届いたよ。管理者(その名前は37年経った今でも覚えてる)から、俺がやったことを詳しく説明されて、「rootアクセスを主張するのは、空港の職員に爆弾を持ってるって言うのと同じだ」って言われた。学問的な制裁や脅しはなかったけど、彼の真剣な口調と全知全能の感じで、19歳の俺は人生の選択を見直すことになった。今は、この人に感謝してる。UnixはただのZorkやNethackの大きなゲームじゃないってことを教えてくれたし、システム管理者としてのキャリア目標にも影響を与えてくれた。

この話は、スクリプトが忙しいループでfingerを呼び出して混乱を引き起こすところで終わると思ってた。でも、2分ごとに!90年代でも、かなりマイルドなネットワークトラフィックだね。

Hacker Newsで議論の続きを見る