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

「ジェミニ」の6年間

概要

Project Geminiの公開発表から6周年を迎えた現状報告。 今年はgeminiprotocol.netでの動きが少なかった点の反省。 仕様の細かな未解決事項への今後の対応予定。 Geminispaceの規模統計報告の廃止とその理由。 コミュニティの貢献と感謝の意。

Project Gemini 6周年の現状報告

  • Project Gemini の公開発表から 6周年 を迎えた節目
  • 今年は geminiprotocol.net での活動が 静かな1年
  • 2回の Apollo day を何もせずに過ごしたことへの自己反省
  • 仕様の 細かな未解決事項 について、 今後の対応計画 を明言
  • Apollo 15 day(2025-11-03) までに何かを出す予定だが、信じてもらえるかは不明
  • 昨年の発表で宣言した通り、 Geminispace規模統計報告 を正式に終了
    • 無限の成長は プロジェクトの目的外
    • 統計報告廃止は ネガティブな数字隠し ではなく、実際はほぼ全ての数字が微増
  • 最近は自身の活動が 停滞気味 だが、 コミュニティの活発な貢献 が続く現状
    • geminiprotocol.netリポジトリ へのパッチ適用
      • 公式ドキュメントの誤り修正
      • 多言語翻訳の追加
  • 時間と労力を惜しまない貢献者 への深い感謝
    • サーチエンジン、アグリゲーター、マルチユーザーホスティングサービス等の 運営継続者 にも謝意

Hackerたちの意見

Geminiって、たまに目にするけど、もっと調べなきゃなって思いつつ、すぐに忘れちゃうんだよね。もっと活用するためのヒントとか、日常で使いやすくする方法があったら教えてほしいな。

4年前に初めて(今でも人気のある)「ソーシャルネットワーク」を作ったんだ。まだまだ元気にやってるよ。詳しくはここを見てね: https://martinrue.com/station

経済的なところや全体のプロジェクト目標が好きだし、メインストリームじゃないエルゴノミクスにも慣れてるんだ(gnu edが好きなんだよね)。でも、Geminiの検索エンジンやブラウジングは、私には合わなかったな。

NewsWaffle gemini://gemi.dev/cgi-bin/waffle.cgi/ は、普通のウェブページのURLを受け取って、もっとシンプルで読みやすいgemtextバージョンを出してくれるよ。例えば、ここにこのウェブサイトの例があるよ: gemini://gemi.dev/cgi-bin/waffle.cgi/feed?https%3A%2F%2Fnews.ycombinator.com%2Frss これがあるからこそ、今でもGeminiを使ってるんだ。他は放置されたgemlogや、興味のないウェブコンテンツの再ホスティング、代替のソーシャルメディアばっかりだからね。

これが役立つかも: https://addons.mozilla.org/en-US/firefox/addon/geminize/ アドレスバーに貼り付けるときは、GeminiのURLの前に「gem 」を付ける必要があるよ。

Kristallは俺のお気に入りのブラウザで、Antennaはお気に入りのアグリゲーターなんだ。ブラウザをゲットして、いくつかのカプセルを読んでみて! [1]https://kristall.random-projects.net/ [2] gemini://warmedal.se/~antenna/

新しい頃にここでの嫌われ方を見て悲しかったけど、しばらく使ってなかったけど、今も頑張ってるのを見ると嬉しいな。すごく面白いプロジェクトだよね。

嫌いではないけど、使い道には疑問があるな。HTTPを使えば、Geminiがやってることをもっと良くできるし。現代のウェブはオプトインだし、私はSPAじゃないサイトを作って使ってるよ。HTTPは素晴らしいし、私たちの時間と注意に値すると思う。彼らが現代のウェブに不満を持ってるのは分かるし、私もそうだけど、それはHTTPのせいじゃない。訪れるサイトの問題だよね。新しい小さなコミュニティを作りたいなら、ブラウザ向けに作るべきだと思う。ウェブサイトデザインのマニフェストが必要かもね。

面白いコンセプトだけど、その周りのコミュニティは自分たちの価値観を押し付けたがる傾向が強かったな。最初は楽しんで遊んでたけど、似たような考え方を持つ「テックの伝道師」たちにたくさん出会って、彼らが知っておくべきだって感じてたのがちょっと疲れた。今は変わったかもしれないけど、それが主に興味を失った理由だね。他のネットワーキングプロジェクトの方が、もう少し押し付けがましくない人たちが多い気がする。

嫌悪感があった記憶はないな。自分を含めて、みんながジェミニの決定に疑問を持ってたのは覚えてる。例えば、https://news.ycombinator.com/item?id=33470229

一番感じたのは、プロトコルの問題を外部の人がスタート地点にすらならないと考えていること。確かに完璧なプロトコルではないけど、HTTPやメールもそうじゃない。ちゃんと機能してるし、ハイパーメディアの新しい選択肢ができたことに満足してるよ。

LLMについて考えてたけど、これが何か分からない人のために、FAQが詳しく説明してるよ: https://geminiprotocol.net/docs/faq.gmi

ありがとう。クリックしたくない人のために説明すると、ジェミニは任意のファイルを配信するためのアプリケーションレベルのクライアントサーバーインターネットプロトコルで、軽量なハイパーテキストフォーマットを提供することに特別な配慮がされてる。プロトコルとフォーマットは意図的に機能と範囲が制限されていて、技術的には保守的で、URIやMIMEメディアタイプ、TLSのような成熟した標準技術に基づいている。シンプルさと有限な範囲は、ユーザーの自律性やプライバシー、さまざまなコンピューティング環境での実装の容易さ、そして防御的な非拡張性を重視するための意図的なデザイン決定だ。要するに、これは根本的にスリムなウェブスタックみたいなものだ。ジェミニのデザインに関する質問は、このFAQ文書の4章を見てね。

しばらく前にサーバーを作ったんだけど(今もCFトンネルの裏で動かしてる)、コミュニティもプロトコルもあんまり盛り上がってる感じはしなかったな。https://github.com/rcarmo/aiogemini エコシステムの大きな問題(プロトコルじゃなくて)として、コンテンツ作成にはMarkdown(簡略版でも)を使う方がずっと良かったと思う。残りはまあまあだけど、「二重フォーマット」のサイトを維持するのは面倒だよね。ここでコミュニティの意見や傾向についてのコメントをいくつか見たけど、正直言って、普通の古いIRCチャンネルやマストドンのサーバーと比べて特に変わったことはないと思うよ。生きて、他人を尊重して、好きなものを読んで、嫌いなアンテナのリストはスキップすればいいだけだし。

コンテキストがほとんどなくても、gemtextを行ごとに解析できるのはシンプルさの大きな勝利だね。Markdownではそれができないから。

アイデアが好きで、最初に聞いたときはすごく興味を持ってたけど、今はあまり考えなくなった人たちのリストに自分の名前も加えとくよ。開発するのはすごく楽しい。プロトコルのシンプルさのおかげで、サーバーやクライアント、あるいは「ウェブアプリ」(同等のもの)を書くのが週末プロジェクトになる。だから、ソフトウェアはたくさんあるけど、それが必ずしもコンテンツに繋がるわけじゃない。でもコンテンツはあるよ。お気に入りのアグリゲーターは gemini://warmedal.se/~antenna/ で、定期的に覗きに行ってる。もう全てがメタコンテンツじゃないのは良いことだね(昔はジェミニスペースを使ってジェミニについて書いてる人が多かった)。まだ技術やFOSSに焦点を当ててるのは驚きじゃないけど、他のコメントに同意するよ、シンプルなMarkdownの方がgemtextより良かったと思う。HNでジェミニが言及されると、コミュニティ内の「見解」や「価値観」に問題を持ってるコメントがたくさん見られるけど、詳しくは説明されないんだよね。正直、何が問題なのかはよくわからない。自分はかなり中立的な立場だから、ジェミニで見つけるコンテンツにはあまり問題を感じたことがない。確かに、メーリングリスト(存在してた頃)には面白い「キャラクター」が何人かいたけど、彼らは少数派で、ウェブでも同じようなことは見つかるよね。あそこにいる人たちはFOSSにこだわって、インターネットを非企業的に保とうとする傾向があるから、それが人をイラッとさせることもあるけど、ウェブでも似たような意見は見つかるし(個人的には、そのドグマ主義があっても面白い議論になると思う)。

ジェミニは美しいアイデアだと思う。でも、強制禁止の原則に基づいて動いてる。禁止事項は「サイト訪問者を追跡したり、利用したりしてはいけない」ってこと。この哲学は、ジェミニプロトコルの制作者によって「リモート」で強制される。HTMLでも同じ結果が得られるけど、敵対的なマークアップを使わないことを選ぶ必要がある。でもHTMLでは、その禁止はウェブサイトデザイナーの倫理的・哲学的立場によって「ローカル」で強制されなければならない。ジェミニプロトコルの問題は、攻撃ベクトルを導入してしまうことだ。ジェミニの「ブラウザ」自体がそれだ。一番人気のあるものは監査されてなくて、巨大なコードベースがあって、目を向けてる人が少ない。ジェミニプロトコルが監視されたインターネットから抜け出そうとする人たちにとっての罠だとは言わないけど、もし自分が監視されたインターネットから利益を得てるテックジャイアントや機関だったら、絶対にジェミニプロトコル用のブラウザを作って、バックドアを仕込むだろうな。元「悪事を働かない」企業として、誰が自分の「ウェブ」から抜け出そうとしているのか、どうやって、そしてなぜ興味があるかは非常に興味深いね。考える材料だね…。

「サイト訪問者を追跡して利用することはできない。」 仕様に反して、TLSフィンガープリンティングやURL追跡の可能性はあるけど、WWWの問題はかなり減るよ。 > 「Geminiプロトコルの問題は、攻撃ベクトルを導入してしまうことだ:Geminiの『ブラウザ』自体がね。一番人気のあるものは監査されてないし、巨大なコードベースを持ってるし、目が少ない。」 一番人気のものを使う必要はないよ(俺は一番人気のものは使ってないし)。他にもたくさんあるし、仕様も自分で作れるように作られてるからね。 > 「もし俺が監視インターネットから利益を得ているテックジャイアントやエージェンシーだったら、Geminiプロトコル用のブラウザを作ってバックドアを仕込むだろう。」 特定の実装を使う必要はないし、誰かがバックドアを見つけるかもしれないけど、可能性はあるよ。 > 「かつての『悪事を働かない』会社として、誰が俺の『ウェブ』から出ようとしているのか、どうやって、なぜかに興味がある :)」 新しいブラウザを書く必要はないし、時々はこういうことについての公開文書をすでに書いているし、他にも追跡する方法はたくさんあるよ(例えば、他のことをログに取ったり、ブラウザ拡張を追跡したりとか)。

Geminiのユーザーベースはほんとに微小だから、十分なデータを集めるのは無理だと思う。まるでモンスター・バスがいる池の隣の雨水の水たまりでトロフィーフィッシングしてる感じ。

Geminiのシンプルさと進化を意図的に欠如させること(バージョン番号がないことで)の全体的なポイントは、既存のTLSライブラリを活用すれば、完全な機能を持つクライアントを自分で書けるってことなんだ。

早期採用者で、いくつかのサービス指向のカプセルを開発してきたけど、時間が経つにつれて興味が完全に薄れてしまった。自分は「生きて、他人を尊重する」ことを強く支持してるから、これは批判や discouragement の投稿じゃなくて、自分の視点だよ。すでに多くの人が言ってるように、個人的には純粋なMarkdownが良かったし、gemtextは全くいらなかった。暗号化を必須にする理由は理解できるけど、KISSの精神でオプションにすべきだと思う。自分はプライバシーの伝道師よりもミニマリストの方が強いから、この点でジェミニコミュニティの中で少し居心地が悪かった。最後に、新しいプロトコルが壊れたユーザー体験を避けるために必要だという議論は、シンプルでうまく動くHTTPウェブサイトから混沌としたものに飛び込む例でよく示されるけど、あまり共感できないな。理解はできるけど、自分が訪れたいウェブサイトやゴファーホールだけを訪れることで生きていけるから、それには大きな利点がある。ミニマリストでよくデザインされたウェブサイトだけを考えても、ジェミニのカプセル全体と比べて膨大なコンテンツがあるから。ジェミニを使っていたときは、もっと幅広いトピックがあったら良かったなと思ったし、それが最終的に興味を失った理由だった。とはいえ、使っていたときは本当に楽しかったし、素敵な人たちにも出会った。またいつか恋に落ちるかもね…グルーオン。

Geminiの自己制限が気に入ってるところは、問題のあるGeminiドキュメントを作るのがほぼ不可能なこと。Geminiブラウザが自分のデータを盗んだり、悪意のあるコードを実行したり、ブラウザの履歴を取得したりすることは絶対にないから、オプションを切り忘れたとしても安心できる。全体的に見て、信頼性が高いと思う。もちろん、HTTPや現代のブラウザを使ってこの体験を再現することもできるけど、どちらも複雑すぎて、本当に何が起こっているのかを理解するのは大変だよね。

わかるけど、自分が訪れたいウェブサイトやgopherホールだけを見に行くのは全然問題ないよ。[...] ミニマリストでデザインが良いウェブサイトだけを考えても、Geminiカプセルと比べたら膨大なコンテンツがあるよね。賛成だな。個人的には、プログレッシブエンハンスメントが好きなんだ。例えば、このHugoのパーシャルを使ってメールアドレスを隠してる。JavaScriptを使ってアドレスをデオブフスケートして、シェルコマンドを表示するようにしてるんだ。{{ $id := substr (sha256 .) 0 6 }} echo {{ base64Encode . }} | base64 -d -var el = document.getElementById("{{ $id }}"); el.innerText = atob("{{ base64Encode . }}"); el.href = "mailto:" + el.innerText; (HNが全ての文字を保存してくれるといいな。)CSSでも似たような感じだけど、あれはずっと進行中の作業だね...

ミニマリストでデザインが良いウェブサイトだけを考えても、Geminiカプセルと比べたら膨大なコンテンツがあるよね。Geminiを使ってたとき、もっと広いトピックがあればよかったなと思ったし、それが最終的に興味を失った理由だよ。これがGeminiの最大の弱点だと思う。注目されてたときにちょっと見て回ったけど、見たサイトのほとんどは現代のウェブがどれだけ膨張したかについての不満ばかりだった。わかるけど、情報を伝えるための実際のメディアとして扱うのではなく、単なる新しさとして捉えてる感じがした。彼らが再現しようとしていた90年代中頃の学術ウェブのような広範で多様なユーザーベースはなかった。静的サイトジェネレーターを作って、それについてのブログ記事を一つだけ書く人たちを思い出させるな。

「個人的には、純粋なマークダウンが良かったし、gemtextは全くいらなかった。」 gemtextフォーマットはマークダウンよりもずっとシンプルだから、マークダウンファイルを扱う複雑さを避けられるんだ。(マークダウンや他のテキストベースのフォーマット(JSONなど)で嫌なのは、エスケープが必要になること。これが面倒になることがあるからね)。 (それでも、HTTPや他のプロトコルと同じように、どんなフォーマットのファイルでも提供できるよ。) > 「同様に、暗号化を必須にする理由は理解できるけど、KISSの精神から言えばオプションにすべきだと思う。」 それに同意するよ。(俺の「Scorpion」プロトコルはこの理由でオプションにしてる。ただ、既存のサーバー実装は今のところTLSを実装してないけど、プロトコル自体はそれを許可してるし(推奨もしてる)、X.509クライアント認証が不要なファイルにはTLSなしでもアクセスできるようになってる。) (それに、Geminiで静的ファイルだけを提供するなら、Geminiと同じファイルフォーマットを使うSpartanも使えるよ。動的ファイルがあると、プロトコルの違いで難しくなるけど、まだ可能かもしれない。) > 「最後に、新しいプロトコルが壊れたユーザー体験を避けるために必要だという主張は、シンプルで良好に動作するHTTPウェブサイトから混沌としたものに飛び込むことによって例示されることが多いけど、これは本質を見失ってるかも。FAQにもあるように、新しいプロトコルやファイルフォーマットには、HTMLと比べて実装が簡素化されるなどの利点があって、これが良くデザインされたウェブサイトを作ることを妨げるわけじゃない。(もし特にHTTP、HTML、JavaScriptのサブセットが欲しいなら、「gemiweb0」があって、一般的なウェブブラウザとも互換性があることを意図してる。ただ、これがGeminiや他のプロトコル、ファイルフォーマットが無価値だって意味じゃない。俺の意見では、まだまだ有益だと思う。)

参考までに、私は自分のウェブサイトをGeminiに移して、ちょっと後にgopherにもミラーリングしたんだ(楽しみのためにね)。この2つのサイトを維持するのは、HTMLや古いウェブサイトにアップロードするために使うパネルを扱うよりもずっと簡単だと思う。Geminiを一度も見たことがない人は、いいコンテンツを見逃してるよ。

4年くらい前にGeminiをチェックしたかな?アイデアはすごく気に入ったけど、コンテンツを見つけるのが大変だったのを覚えてる。何かアドバイスある?

プロトコルの技術的な欠点に関わらず、草の根の個人グループが実行可能な新しいネットワークプロトコルを作り上げたんだ。ユーザーベースは小さいけど、全くないわけじゃないし、何年も続いてるよ。Geminiクライアントをダウンロードして、Gemini検索エンジンで定期的に更新されるブログを見つけることができる。AntennaやStationのようなGeminiアプリでディスカッションもできるし、解決したい問題(プライバシー、リソースの膨張、プロトコル仕様の膨張など)をいくつも解決してきたんだ。

プライバシーに関してはどうだったの?Geminiは素晴らしいと思うし、Nyxtブラウザから読んでるんだけど。プライバシーの利点についての言及は見たことがないから、ちょっと気になる。

Geminiの特徴は、Gopherが面白そうだと思ってるけど、HTTPやHTML/Markdownしか扱ったことがない人が作ったように見えるところだね。HTTP GETを使って、レスポンスコードの数字を一つ減らして、新しいプロトコルだって呼んで、意図的に壊れたMarkdownの実装を付け加えた(元のMarkdownよりも壊れてるよ)。面白い点は、Geminiのレスポンスの最初の行がMIMEタイプだってこと。通常はtext/geminiだけど、text/htmlapplication/javascriptなど、他のものにする理由はない。少し前にGeminiサーバーのコードをいじって、正確にそれを実現したことがある。HTMLファイルを提供して、elinksでアクセスしたんだ。もちろん、GeminiでHTMLを提供することになったら、わざわざ壊れたHTTPのサブセットの上に置くことで何の利点があるのかって聞かれるかもしれないけど、それは確かに良い質問だと思う。2024年に「現代のウェブとそのクソさは、HTMLやHTTPに何か悪いものがあるから生まれたわけじゃなくて、基本的な基盤の上に人々が物を作り、拡張(時には下手に)してきたからだ。Geminiで遊ぶ人が増えれば増えるほど、彼らは「拡張」したくなるだろうし、HTTPに近づけていくことになる。余計なドキュメント形式の仕様を取り除けば、全く同じ基本モデルに従うからね」と書いたけど、今でもその考えに賛成だよ。

「Geminiで遊ぶ人が増えれば増えるほど、"拡張"したくなるだろうし... それがHTTPに近づくことになる。そうなるとGeminiじゃなくなる。」 これは面白いね。Geminiにプロトコルバージョンを設けないことが決まった理由でもあるんだ。拡張を防ぐために。