1. 趣味でOSSをやっている者だ
  2. 84: Plan 9のすゝめ (plan9user)
84: Plan 9のすゝめ (plan9user)
2026-04-30 1:02:34

84: Plan 9のすゝめ (plan9user)

spotify apple_podcasts
  • Plan 9って何なんですか?
  • Plan 9とGo
  • Plan 9におけるGoの現状
  • Plan 9を動かす方法
  • 何故Plan 9を使いはじめたのか
  • Plan 9の「全てがファイル」とはどういうことなのか
  • Plan 9本体開発の現状
  • Acmeエディタ
  • Plan 9のすゝめ

Plan 9って何なんですか?

Plan 9とGo

Plan 9におけるGoの現状

Plan 9を動かす方法

何故Plan 9を使いはじめたのか

Plan 9の「全てがファイル」とはどういうことなのか

Plan 9本体開発の現状

Acmeエディタ

Plan 9のすゝめ

感想

まだ感想はありません。最初の1件を書きましょう!

サマリー

このエピソードでは、Plan 9オペレーティングシステムについて、その起源、Go言語との関連性、そして現代における利用方法まで、Plan 9の熱心なユーザーである角田さんをゲストに迎え、詳しく掘り下げています。Plan 9は、UNIXの生みの親たちがネットワーク時代を見据えて開発した、UNIXの次世代を目指したシステムであり、「全てがファイル」というユニークな哲学を持っています。Go言語は、Plan 9のクロスコンパイルの仕組みや標準ライブラリの設計思想から大きな影響を受けており、両者の親和性の高さが語られました。また、Plan 9を実際に動かす方法として、9legacyや9frontといったフォークが存在し、仮想環境での利用が一般的であることが紹介されました。角田さんがPlan 9を使い始めたきっかけは、「UNIXという考え方」や「プログラミング作法」といった書籍に触発されたことで、特に「全てがファイル」という概念に魅力を感じたとのことです。さらに、Plan 9の強力なエディタであるAcmeや、その独特なマウス操作、そしてPlan 9のコミュニティの現状についても触れられています。Plan 9は現代でもHTTPサーバーとして利用可能であり、興味を持った人々に触れてみることを推奨しています。

Plan 9とは何か?その起源と哲学
はい、趣味でOSSをやっている者だ。引き続き、角田さんをゲストにお話をしていこうと思います。
ということで、前半はGOとかの話をしてたんですけど、ちょうどラスコックスさんの話も出てきたということなので、
plan9の話をしていこうと思います。何せね、角田さんはツイッターではplan9userを名乗っているので、
はい、もうplan9の人っていう感じですが、まあそもそも多分、なんかまあ話すことすごいたくさん書いてくださっているんで、なんかこれまとめてなんか
ブログにでもすればいいのにって思っちゃったんですが、そもそもplan9って何なんですか?
plan9っていうのはですね、もともとUNIXを作っていたベルケンのUNIXルームの人たち、もうほぼレジェンドですよね。
ケントンプソンとかデニスリッチーとかカーニハンとかロブバイク。そういう人たちがUNIXだと、もともとネットワークっていうのがなかった時代に作ったものなので、
ネットワーク部分とかグラフィックスに対して結構継ぎ剥ぎになってるっていう課題感を持ってたみたいなんですよ。
あと同時期にそのUNIXのライセンスみたいな問題があって、自分たちソースコード触れなかったとかそういう事情もあるみたいなんですけど、
そういう課題感とか必要性からUNIXの次のより良いシステムを目指して開発したっていうのがplan9っていう存在で、
多分UNIXのVer.10がベルケンの最終UNIXで、その次がplan9なんですよね。
だからVer.8の次だから9ってわけではなく、単にあれ何ていう方だったか覚えてないんですが、
映画監督の作品にplan9 from outer spaceっていうのがあって、それをそのまま名前に採用してるみたいです。
うーん、そうなんだ。全然その由来とかも知らなかった。
意外とその由来もそうかもしれないですけど、Ver.10まであったって知らない人は結構いますね。
そもそもその頃のUNIXみたいなものがどういったものなのかも、よくわかんない。
AT&Tの一緒なーっていう。
で、それがまだ息づいていて、
Plan 9とGo言語の深い関連性
で、plan9はGoとね、結構神話性というか、なんか関連が強いんですよね。
その辺のことをちょっと話してもらっていいですか。
はい、そうですね。もともと似たような人たちが最初に作り始めたっていうのもあると思うんですけど、
結構考え方とかは近くて、
異色性、クロスコンパイルはplan9にも当然あったんですよ。
で、そのIntel CPUの上で動いているplan9でSparkのファイナリをコンパイルしようと思ったら、
ちょっと数字は忘れたんですけど、
いわゆる6Cとか8Cとか、そういうアーキテクチャの1文字とCをコンパイルするときはCっていう、
その2文字で表現するコンパイラを使ってクロスコンパイルをするっていう仕組みがplan9にはあるんですよね。
で、本当に初期のバージョン1までいってない頃のGoも、
同じような仕組みでクロスコンパイルを実現していて、
確か6Gとか8Gとかだと思うんですけど、
本当に同じようにその2文字でターゲットのコンパイラを指示するようになっていて、
完全に考え方が一緒っていうのがあります。
あと、標準ライブラリとかも結構近いものがあって、
最近出てきたやつだとさすがに差異はあるんですが、
昔からあるBuffIOとかですね、
あとStringsLibraryとかByte2とか、
そういう基本的なパッケージに含まれている古い関数とかは、
結構plan9のCのライブラリの設計を踏襲しているものが多くて、
例えばBuffIOなんかは、
plan9だとリードラインっていうのが関数としてあるんですけど、
これは例えば開業文字まで読み込みますっていう指示ができるようになってます。
Goにもリードラインじゃない別の名前だったと思うんですけど、
何だっけな、なんか似たような関数があって、
どこまで、どの文字まで読むかっていうのを与えると、
そこまでを読んで結果を返してくれるっていう関数があり、
で、こういう設計、CとGoなんで多少シグネチャーは違いますけど、
考え方が一緒のライブラリっていうのが結構多くて、
はい、親和性はある。親和性。
親和性っていうか、影響を受けてるというか、
作った人が同じみたいなところがあるっていうところですよね。
ロブパイクさんがかなり作ってたし、
その後の長楽テックリードやってたラスホックスさんも、
めちゃくちゃplan9フリークみたいな感じですからね。
はい、あと構造体の埋め込みとか、
あとなんだっけな、CSPとか、
そういう考え方ももともとplan9のCにもあって、
そういうのはずっと引き継いでいってるみたいですね。
そうなんだね、そこも結構由来なのか、
CSPは並行処理の考え方ですよね。
はい。
コミュニケーティングシーケンシャルプロセスっていうやつで、
だから、Goはそういうチャンネルとかのあの辺のやつは、
そういうのがベースになってて、
最近は他の言語、Async Awaitとかが多いから、
ちょっと少数派っぽいけど、
Goのやつはそれはそれで協力って感じですよね。
Plan 9におけるGoツールの現状とTailscaleの対応
そうですよね。Async Awaitも便利なんですけど、
そのCSPがいいなと思うのは、
なんか戻ってこれるっていうのかな。
一回非同期になっても同期に戻せるのが、
個人的にはいいなと思ってるところですね。
まあ確かにそれはあるというか、
そうだよな、もうAsync Awaitだともう一回Asyncになっちゃうと、
全部にAsyncって書かないといけなくなっちゃうからみたいなところはあるね。
まあなんか戻す方法はあるんでしょうけど、
あんまり知らないので。
うんうんうん、なるほど。
なんかそれで、いやなんか、
あそうそう、だからGoはね、ちゃんとそのGoOSの、
その太陽ビルドOSにプラン9もあるから、
そのビルドもしやすくなってるみたいなのがあるっていう、
なんかそういう、そのこだわりを感じる部分ではあるよね。
でもなんか実際プラン9で、
そのGoで書かれたツールみたいなのって結構増えてるんですか?
うーん、増えてるかどうかはわからないんですけど、
そのプラン9で動くツールは結構あります。
なんかこういうの?
そうですね。何かあるかな?
そのBlogSyncとかMotemenさんが作ってるツール類、
あとSOMさんが作ってるツール類なんかも多分動いてたと思います。
おーすごい。
そのAkariLegendは動かなかったのは、あれはビルドできないからであって、
ビルドができれば大体動くと思いますね。
へー、そうなんだ。
はい。で、あと最近面白かったのは、
最近じゃない、もう1年ぐらい前ですけど、
2024年の冬頃に、
RaskogsさんがLineLegacyっていうプラン9のフォークのリポジトリを
GitHub上でフォークしてたんですよ。
で、そのなんか突然フォークしたけど何してるんだろうねって、
社内で話していたら、
突然その、April Foolの時に、
Tailscaleがプラン9に対応しましたっていうニュースが流れてきて、
これかってなったんですよね。
もうMineFansっていうメーリングリストでは盛り上がってましたよ。
それは、えーと、
そうか、Tailscaleで、
いろんなことができると。
でもこれはあれですよね。
Raskogsさんは今もGoogleにいらっしゃるはず?
はず。
ちょっとその辺は分かんないけど、
あれですよね、そのTailscaleのエンジニアにブラッドフィッツがいるから、
その辺の関係でなんか手伝ってもらったみたいな感じですよね、きっと。
そうみたいですね。
企画がどこから出てるのかは分からないんですけど、
そのプラン9のカーネルにちょっと問題があって、
うまく動かなかったところを、なんかRaskogsさんが直したらしいです。
そうですね、そうTailscaleにいるそのブラッドフィッツさんは、
もともとGoogleでGoの開発をされてた方なのでっていう、
その繋がりがRaskogsさんとあるんじゃないかっていう話を言ってますね。
今してるって感じです。
聞いてる方に説明をすると。
確か、もともとNetHTTPのメンテナーの方でしたっけ、確か。
そうですね、NetHTTP、ネットワーク周りを作られてた方ですね。
今だとNetITっていうパッケージを作られてるようなニュースも見たことがあります。
あと、HTTPパッケージ作り直そうみたいなことも一時期ブラッドフィッツさんやってたけど、
たぶんちょっとポシャッタっぽい雰囲気を感じてます。
ポシャッタというか、たぶん情熱押しだったというか、
ちょっと棚上げになってる感じが。
ありましたね。
HTTPパッケージって、サーバーとクライアントが一緒のパッケージになってるから、
さすがにFATだよねみたいな話があって、みたいなのが多分。
そういう話があった気がします。
あった気がします。
意外と正しく使うのが難しいみたいな話もあった気がしますね。
結局、そうだよね。
GoもいろんなものがV2みたいなのが生えてきてるから、
やっぱソフトウェア開発の難しさがある。
JSONもV2がたぶん実験的に入り始めてるし、みたいなことありますね。
Plan 9の実行方法とハードウェア
今ってプランラインどういう感じで使ってるんですか?
なんかGoogleクラウドで動かしてるんでしたっけ?
手元のマシンとかで動いたりするんですか?
自分自身で今使っているのはGoogleクラウドでちゃんと動いてます。
ちゃんとサーブをしていて、
たぶん今Rufia.orgを見ると裏ではプランラインに通信してますね。
すごい。
ちゃんと動いてますし、
プランラインってもともと1台じゃなくて3台で構成するのが当たり前標準なんですけど、
計算資源を提供するCPUサーバーとファイルのストレージのファイルサーバーと、
あと認証周りだけを見る認証サーバーの3台で構成するのが一般的なんですけど、
ちゃんとGoogleクラウド上で3台動いてちゃんとやってます。
へえ、そうなんだ。
認証が独立してるのが面白いですね。
でも権限管理を最初からちゃんと分離してあるのは確かに今から考えると正しい設計って感じがするな。
今だと暗号とかあるので、ハードウェア的なサポートもあるので今だと実際どうかは分からないんですけど、
設計された当時はもうマシンが悪意のある人に渡った時点でどうしようもないって判断をしてるみたいですね。
ああ、そうかそうか、そこがちょっと今と違うかもってところか。
でもそれ3台あるとすると、でも直列構成っていうかどれかが落ちると困るわけじゃないですか。
それってそれぞれ冗長構成取るみたいな感じになるんですか。
真面目にやってる場合はそうなんでしょうね。
まあでもさすがに個人でやってて止まってもそんな困らないので、今手元にあるやつは冗長構成にはしてないです。
じゃあなんかそれって物理で動かす場合も3つマシンが必要っていうこと、それともまあ仮想化したものを建てればいいみたいな。
でも仮想化する親をどうすればいいかみたいな話がある気がしたんですが。
3つでやりましょうって言ってるのは、その方がよりオリジナルのプランラインに近いからで、
今だと別に1台でもちゃんと動きますよ。
なるほどなるほど。
それって、CPUとかメモリとかそういったものは、今のメジャーなアーキテクチャもメンテされてるから対応してそうではあるけど、
リアルな実機とかって動かせるんですか?
ドライバー周りとか大変そうだなっていうのは思ったんですけど。
そうですよね。本当にその通りで。
本当にその通りで。今プランラインの方向が2種類あるんですよ。
もともとメルケンでやってたやつは、
メルケンに2015年が最後かな。
2015年に残ってた人がいなくなって、メンテできる状態ではなくなってたので、
フォークとして9レガシーと9フロントっていうのが今できてるんですよね。
細かいのを言ったらもうちょっとあるんですけど。
9フロントの方は結構ドライバー頑張っていて、
ThinkPadぐらいだったら動くみたいです。
ただグラフィックス周りはさすがに大変で、そんなに対応できてないので、
一般的なグラフィックスとしてドライバーがあるみたいな状態ではあるらしい。
おそらく9レガシーの方はそんなにドライバーが頑張って更新されていないので、
現状多分リアルなハードウェアでは難しいとは思いますね。
だから何かのホストマシンの上に仮想マシンを作って、
そこで動かすのが多分一番簡単だと思います。
今、角田さんが使ってるのは9レガシーの方?
そうです。9レガシーの方がシンプルに好みがあったからですね。
そうですね。さっきのエイプリルフールで使われたのも9レガシーの方っていうことですもんね。
そうです。Goの公式のドキュメントとかにプラン9って出てくるのは、
9レガシーの方を主に指してるはずです。
そこも明示的にそっちなんだ。どっちでも動くみたいな。
よりかは何か9レガシーの方って感じなんですね。
そうです。
そうなんだ。知らないことだらけだな。
二文化でしょうね、たぶん。
言葉も違う世界みたいな感じですからね。
マジでそういうプログラミング言語も。
Cとかそういうレベルでは使われてるけど、それ以降の言語文化とかも違うから。
Plan 9を使い始めたきっかけと「全てがファイル」の概念
そんなプラン9を何で門田さんは使い始めたんですか?
これはですね、確か冒頭にもお話があったと思うんですけど、
ユニックスという考え方っていう書籍を当時読んでいて、
なんかかっこいいなって思ったんですよ。
パッパウベアの話とかフクリの話とかはそんなに響かなかったんですけど、
原理主義なところがすごいかっこよく見えた時期があって、
それを読んでた時に、結構近い時期に、
確かプログラミング作法だったかな。
今だとアスティードワンゴさんでした?
プログラミング作法ですか。あれ、作法って読むらしい。
いや、ほんとかな。千代和田さんがそう言ってた気がする。
はい、じゃあ作法でいきましょう。
作法で確か、その書籍の中に今プラン9ってやつをやってるんだよみたいなことが、
確か後半あたりに書いてあって、それで興味を持って調べてたんですよ。
それがいい意味でも悪い意味でも、
MHコマンドはコマンドでいろいろ必要なものだけ取り出せて、
かっこいいみたいな話と、
とはいえプラン9ってその辺全部ファイルとして表現されてるので、
もっとすごそうっていうのがあって、やってみようかなって思ったのでした。
はい、なんかちょっとそのMHコマンドとか解説してもらっていいですか。
そのメールのやつではたくさんのコマンド群で構成されてるみたいな、
そういう話がUNIXという考え方に書いてあるんですよね。
はい。
でもこの辺も結構記憶が曖昧なんですよね。
いつぐらいですか。もう何十年も前ですよね。
何十までいくかわかんないですけど、10年よりは全然前ですね。
15年?もっと前かな。結構前ですね。
15年前だったって2010年、11年とか5も出てる。
じゃあもうちょっと前です。
そう、だって20年前で2006年とかだから。
そのぐらいだと思います。
そのぐらいですね。
そうなんです。
MHコマンド、でもどういう話なんでしたっけ。
ちょっと申し訳ないですが、完全に記憶が曖昧なんですけど、
MHコマンドを使うと必要なものをコマンドでトリガーするよみたいな話なんでしたっけ、確か。
多分そういう話だったと思います。
一つのMHの中で、多分MHっていうのはシステムで今ちょっと手元にあるから見てるけど、
多分30個ぐらいコマンドがあって、でもこれもコマンドの一部なんだけど、
それで全部ボディ取り出したりそういったこともできるよみたいなそういう感じですね。
自分で実装しなくても元々あるやつを組み合わせて、
Cとかで頑張って書かなくてもシェルで目的を達成できていいですねって話だったって記憶をしてるんですけど、
ちょっと詳細は違うかもしれない。
でもプランラインだとそこがファイルなんですよね。
メールファイルサーバーっていうのがあって、
当然1個のメールあたりにサブジェクトっていうファイルがあって、
それはタイトルを取り出せます。
ボディってファイルがあって、それはメールのボディを取り出せます。
同じように添付ファイルがあったら添付ファイルもファイルとして仮想的に表現されているので、
全部取り出せます。
なのでコマンド使わなくてもファイルであるんだらそのほうがかっこいいなって思ったんですよね。
実際コマンドだとシェルスクリプトがないとダメなんですけど、
ファイルだったらCでもいいし、ORCとかでもいいですし、別の弁護とかでも、
Plan 9での開発環境構築と日本語入力の苦労
本当に基本的なIO入出力ができる能力があったら何でも扱えるのでやってみようって思って、
その当時近くにあったパソコン工房っていうショップに行って、
当然既製品とかでプランラインなんて動くわけがないので、
動くハードウェアをその時の店員さんに探してもらって、組み立ててやってみたのが始まりです。
すごい。それで動かし始めたと。
周りに使ってる人とかいたんですか?
いなかったです。
それはそうですよね。
そうですよね。
でも当時はそんなにまだどうなんですか、ネットで質問したりとかもできるところあったんですか?
あとそういう有識者みたいな人とか相談したりとか、そういうのはどうやって使い方を覚えていったんですか?
困りましたね。
最近はよく自分で言ってるんですけど、
正確的に油断ができると油断をするんですよ。
例えばプランラインとWindowsがあったら、最初プランライン使うんでしょうけど、
しんどくなった時にWindows使うと思うんですよね。
そうですね。
当たり前ですけどね。
そうさせないためにWindowsを一旦なくしてプランラインだけにして、
プランラインで全部やるって決めて、1年ぐらい過ごしてからそのうちできるようになりました。
すごすぎる。
でもやりませんか、やらないですか?
そうやらないとそれは絶対あるよね。
僕も結局、大学の時に支給されたPCみたいなのがあって、
一応UNIX使うことも多かったから、
一応デュアルブートにしてフリーBSDとWindows 2000が立ち上がるようにしてたんですけど、
結局、こと足りることはWindowsでやるから全部Windowsでやりみたいな感じで、
全然UNIXが身につかなかったし、
その後そのノートPC、ある意味ジャンクっぽくなった時に、
Vine Linux入れて立ち上がるところまでやったけど、
結局Windows使うみたいな感じで、
僕はなかなかそういうUNIXになれるまで時間がかかりましたね。
絶対に自分の性格的にそうなるのがわかっていたので捨てましたね。
でもそれ困んなかったんですか?
レポートとか、当時何をしてたのか。
当時は何?学生だったんですか?社会人だったんですか?
学生でした。
学生だったので、当然レポートは出さないといけないんですけど、
困りましたよ、当然。
当然、日本語入力とかあんまりまともじゃなかったんでめちゃくちゃ困ったんですけど、
もう亡くなってるんですが、デミス・リッチーっていうレジェンドが、
日本語入力の仕組みを作ってたんですよね。
プランライン用にKtransっていうのがあって、
今はもうないのかもしれないんですけど、
Ktransっていうのを使うと、キーボードの入力をそのプログラムにパイプして、
そのプログラムで変換した結果をさらに下ろすみたいなことができるようになってたんですよね。
で、Ktrans自体が若干違いますけど、SKKと同じような入力方式で、
Shiftで区切りを入れたりとか、そういう入力だったので、
Ktransを頑張ってコンパイルして使うようにしてましたね。
辞書はやっぱり貧弱だったんで、その辺はもう自分で頑張るでやりました。
あと、なんだかんだでオフィス製品みたいな、
Word、Excelを読まさせられるみたいなのはなかったんですか?
それは大丈夫だったんですか?
それはなんか大丈夫でしたね、確かに。
まあでも、あったかもしれないんですけど、
多分その時はテキストファイルを大学のパソコン室に持って行って、
そこでなんかやってた気がします。
なるほど。確かにそういう学校のやつを使えばいいみたいな感じか。
大変でしたけどね。
いや絶対大変でしょ。だってWindowsでしか動かないソフトウェアとかを、
どうすんだみたいなのがあるからな。
いやなんか、そうそう。それこそ、そうだよな。何があるかな。
まあAdobeとか使わないっちゃ使わないかもしれないけど、
あとそうだね、大学の時そうMathematicaとか使ってたから多く、
なんかそう、そういうなんかよくWindowsとかでしか動かない謎の商用製品みたいなのが
あったりするよなって何となく思い出したりしていました。
そうですね。まあでもそれと比べたら最近はGoogleドキュメントとかあるんで便利になりましたよね。
いや本当に本当に便利になりましたね。
なんか今って普段は、普段使ってるパソコンはどういう感じなんですか?
それはMacとかLinuxとかなんですか?
Plan 9の「全てがファイル」の深層:9Pプロトコルと名前空間
今業務でもプライベートでもLinux、Archですね。Arch Linuxを使ってますね。
なるほどなるほど。
で、オフィス製品とかは基本的にGoogleドキュメント、Google Docs。
で、たまにゲームをするんですけど、最近ゲームもLinuxで動くようになってるので、そんなに困らないですね。
なるほどね。すごい。え、もうずっとその生活なんですか?
なんか普通にここその十何年とかは別にWindowsもMacも使わず、Linuxだけっていう感じなんですか?
いや、Linuxに切り替えたのはでもここ数年ですよ。
あ、そうなんだ。
2003年だったか覚えてないですけど、2023年ぐらいまではMac使ってました。やっぱハードウェアかっこいいですからね。
Macね。
なんか割とリーズナブルだったしね。安いっていうか、昔は安い時期はあったし。
そうだよね。ちゃんとパッケージされてる良さはあるよね。
なるほどな。
そうだよね。ちょっと話を戻して、全部ファイルでできるじゃんみたいなのは、そういう噂は聞いたことがあります。
確かに普段僕らが使ってるLinuxとかUnixとかでも書き込みみたいなのはできるけど、それってパイプに書き込むかファイルに書き込むかみたいなところで動作が違うというか。
ファイルに書き込む時も特殊ファイルとかソケットとかはあるけど、基本的にはそのファイルに対して何らかの値をプッとして、それをマーケットっていうか読み出すみたいな感じにLinuxとかUnixだとなってるけど、
わりとPlan9だとそういう読み込み書き込みみたいな、ファイルへの読み込み書き込みも結構プログラマブルな雰囲気があるっていうことなんですかね。
実際はPlan9 Kernelが多分巨大な9Pクライアントなんですよ。Kernelがクライアントなんですよね。
ユーザープロセスの方が9Pサーバーになっていて、これ結構イメージするのは難しいと思うんですけど、
例えばユーザーのプログラム、LSとかでファイルをオープンします。そうすると、Kernelはそのネームスペースに、難しいかな。
ファイルが実際どのファイルサーバーで提供されているファイルなのかを知っているので、オープンしようとしているファイルサーバーに対して、
9Pで命令を送ります。当然、ファイルサーバーとして動いているプロセスは、その9Pの命令を受けて結果を返して、
ユーザーがファイルを読むと、Kernelが9Pに返還して、それをサーバーに伝えて結果を返す、というようなことをずっとやっているんですよね。
なので、プログラマブル化というと、ファイルサーバーを作ればプログラマブルになります。
当然、一般的なストレージを持っているファイルサーバーも当然あって、それはUNIXとか他のOSとかと変わらず、書き込みをするとディスクに書く、みたいなファイルサーバーになっています。
そういうことですよね。
一般的なUNIX、Linuxだと基本的にはファイルってストレージに書き込まれているもので、それを読みたり書き出したりするみたいなもんだけど、そこが別のものにできるから、
さっきのメールの例だと、ボディを読むコマンドじゃなくて、あるメールファイルにマウントされているボディみたいなところを読んでやると、ボディの文字列がベロって返ってくるみたいになっていると。
なんかREST APIっぽい感じですよね。
そうですね。結構近いと思います。
パスにマッピングされているものがダイレクトにストレージに行くと、一対一対応しているわけじゃなくて、割とそこは柔軟であるっていう。
最近はLinuxでもFuseって言うんでしたっけ。ファイルシステムインユーザースペースで、近しいことはできますけどね。あれがOS全体にわたって提供されているようなイメージです。
それが面白い。しかもなんかここに書いてるけど、インプロセスでそれをちょっと上書きっていうか差し替えたりもできるようになっているという感じなんですね。
コマンドごとにプロセスごとにファイルツリーが変えられるみたいな感じなんですか。
そうなんですよね。あんまりイメージできないかもしれないんですけど、スラネットっていう標準的なディレクトリがあって、スラウェブと一緒でスラネットっていうのがあるんですよ。
そこの下にはネットワークアクセスをするためのファイルが一式提供されてる状態になってて、
例えばNetTCP何とかに書き込みをすると、相手に書いた内容が送られるみたいなことを実現するためのファイルなんですけど、
名前空間はプロセス単位で自由にユーザー権限で書き換えるっていうのかな。
置き換えられるので、別のマシンのネットディレクトリをインポートしてきて、別のマシンのネットディレクトリを自分のネットディレクトリに置き換えると、
単にネットワーク通信をすると、別のマシンを経由して外に通信するみたいなことができるようになってたりするんですよね。
なるほど。そこをすげえ変えるみたいなのもできるのか。
リナックスとかUNIXのフォークとかがメモリ空間、プロセスツリーとかをフォークするみたいな感じで、
そういうディレクトリツリーも別でもてるみたいなイメージでいたんだけど、
さらにそれを別のものをマシンのところのマウントっていうか、見に行ったりできるみたいなこともできる。
最初のイメージのほうが近いかもしれないですね。
プロセス単位、フォークするときに何を共有して何を切り離すかっていうのを選べるんですけど、
例えばファイルディスクリプターを共有した場合は、親のプロセスとファイルディスクリプターが共有される。
メモリ空間を共有した場合は、いわゆるスレッドと同じように動きます。
同じようにファイルツリーを共有した場合は、一般的なプロセスと一緒で、
そこを切り離した場合は、完全にコピーされた名前空間がプロセス単位で持てるという状態なんですよね。
なるほどな。面白い。
その辺の話を聞くと、やっぱり確かに本当、明らかにUNIXの進化版みたいな感じはすごく感じますね。
ファイルの話も全てがファイルであるっていうか、みたいなことはよく言われますもんね。
そうですね。グラフィックスのファイルになってたりしますしね。
確かに。このここに書いてるスクショの話とか面白いですね。
たぶん書いてるのって確か、スラデブスラWCスイカーにスクリーンショット、その時点のウィンドウの画像があるから、
単にCPでコピーすればいいよって話を確か書いた記憶があるんですけど。
実際そうで、ブランナー引用のビットマップではあるので、
他のOSに渡そうと思ったらちょっと加工が必要なんですけど、本当にコピーすれば画像として、
今ウィンドウが描画してる内容をそのまま取れるんで、特殊なAPIとかいらないんですよね。
めっちゃ面白いな。LinuxとかにもProcfsとかあるけど、さらにいろんなことができるっていう感じですね。
たぶんProcfs自体がプランナインの影響を受けてそうですけどね。
まあそうでしょうねっていう感じがする。
Plan 9本体開発の現状とコミュニティ
でもプランナインって今って一応細々と開発は続けられてるというか、メンテナンスされてると思うんですけど、
それって有志がやってる感じなんですか?財源とかってどうなってるんですか?
今の状態で言うと、プランナイン財団っていう数名の組織があって、
ライセンスはそこが持ってるはずです。
年一ぐらいでワークショップっていう名目で、いろんな国でイベントをやってたりするんですけど、
その辺の財源はどうなってるんでしょうね。
なんか出資を受けたとかは聞かないんですが、寄付は募っているので、
そういうところから賄ってたりするんでしょうか。ちょっとわかんないですね。
なるほどな。なんか実際に何かサービスで使われてたりするわけではないですよね、きっと。
ルフィアオルグ以外には他にもあるっちゃあるでしょうけど。
残ってるかわからないですけど、コライドっていう会社が使ってる話は聞きますね。
コライド、CORAIDかな。
CORAID。そうなんだ。
商用で使ってるって話は、そことあといくつかあったかなぐらいしか聞いたことがないですね。
なるほどな。でも本当、面白い。OSSというか。
でもちゃんと何らかの継続性があるといいですね。
たぶん、きっと寄付とかをしてる人はいるんでしょうけど。寄付してます?
してますよ。当たり前。
まあそれはそうか。
そんな大した金額じゃないですけどね。
僕もパールファウンデーションには、気づいたときに寄付するようにしてます。
そういう細かい活動をしていかないと、亡くなって困るのが嫌なので、やりますね。
そうですよね。ちゃんと続いていくといいですね。
でも一時期本当に9fansっていうメーリングリスト、有料がなかった時期があるんですよ。
本当になかった時期があるんですけど、そこと比べると、
今ベルケンがノキア社だから、確かノキアの一部になってるはずなんですけど、
そこがライセンスをMITに変えてフランライファンデーションに譲ったあたりから、結構流量は増えてきていて、
数年前よりは活発に見えるので、大丈夫じゃないですかね。ダメかな。
大丈夫なんじゃないですか。ちゃんとみんなで頑張って盛り立てていけば。
お金持ちなソフトウェアエンジニアで使ってる人もたくさんいるでしょうから、
それこそラスコックスさんとかね、そういう人たちで頑張ってうまくやっていくといいのかなっていうのはそう思いました。
いやそうなんだよね、この9FANSっていうのもさ、
ラスコックスさんとかロブパイクさんとかが実験的なGoLibraryとか、
サイト作るときに出てくるよくわかんないドメインだなって思ってたんですけど、
昔はそれってフランラインのやつだったんだっていうのを後からね、後から知りました。
そうなんです。でも彼らも最近もちょくちょくコメントしてくれたりするんで、見てはいるみたいですね。
いいですね。やっぱそういう思い出深い愛のある感じはあるし、だからこそ続いてほしいとも思ってるだろうから気にかけてコメントしたりみたいなのはありますよねっていうのと、
あとやっぱり結構そういうフランラインの人たちでよくあるのはやっぱりラスコックスさんとかが、
Acmeエディタ:Plan 9の強力な開発環境
それこそプレゼンでライブコーディングとかで使ったりしてるけど、悪夢っていうエディターがあって、
それはなんかまだラスコックスさんも使ってるし、かどたさんも使ってるんですか?
これはどういうエディターなんですか?
イメージで言うとEmacsに近い、エディターというよりはどっちかというと環境に近いツールですね。
タイル型スタイルの複数ファイルを扱う仕組みになっていて、表現が結構難しいんですよね。難しいな。何でもテキストなんですよ。
何でもテキスト。
一般的なエディターだとファイル一覧を表示したときってあくまでそれはファイル一覧っていう機能だと思うんですけど、
ファイル一覧の何かを、ファイル一覧だと思うんですけど、悪夢だとファイル一覧を表示してるただのテキストなんですよね。
それはちゃんとそういうリソースとしてのパスみたいなものがあるかっていう意味なんですか?それともバッファーとしては同じなのかなって気がするんですけど、それはどう違うんですか?
難しいね。ちょっとEmacs用語があんまりわかんないんですけど。
なるほど。
でも多分全部一緒です。
ただディレクトリの場合はファイルの内容をテキストとして描画する。描画っていうのかな?出力する。
実際のテキストファイルの場合はそのテキストの内容をバッファーに描画する。完全に一緒なんですよね。
ファイル一覧からファイルを開くときはどうなのかっていうと、組み込みの機能でマウスを結構多用するんですけど、右ボタンをクリックするとアクションを実行するになるんですよ。
アクションっていうかサーチっていうんだっけな。
選択したクリックした位置にあるテキストがファイルだったらファイルを開く動作になるんですよね。
ファイルじゃなくて普通のテキストだったらそれを検索する動きになるんですよ。
他にもいろんな機能があるんですけど。
例えばGoとかのエラーメッセージってファイル名コロン行番号になってたりするの覚えてますか。
はい、なってますね。
あれを悪名状で右ボタンをクリックすると、その行番号にジャンプするんですよ、実は。
ああ、なんかそれ聞いたことがある気がする。それ由来とかなんだっけっていうか。
だからもうそういう表現になってるっていうことですよね。
ロケーション表現になってるっていう。あれがそのままロケーション表現になってるっていう。
たぶんもともとはグリップとかだと思うんですけどね。
ああ、そっか。
古来のUNIXから多分ファイル名コロン行番号っていうスタイルがあって、
それを悪名状は特別扱いしているので、特別っていうかまあそういう正規表現でマッチして、
それに対応するアクションを設定できるようになってるんですけど、
行番号にジャンプするっていうのができる。
これ全てがテキストって話と関連していて、悪名状でGoのビルドをしたときに、
例えばビルドエラーになったりするじゃないですか。
そしたらその出力の中にファイル名コロン行番号って入ってきている。
その出力も当然コマンドの出力もただのテキストとして悪名状を扱うので、
テキストを選択すると問題のあった行にジャンプするっていうことができて、
なんていうんですかね、うまく言えないけど、
他のUNIXツールをそのまま使っても神話性がある動きをするっていうのがすごいいいところです。
なるほど。
そういう中の出力もちゃんとどっかのペインというか、
一領域に出すことができるから、さらにみたいな。
そういう複数のマルチペインの何分割もされたエディターっぽいものではあるからっていうことか。
そうだよ、メール読んだりとかもできるみたいな。
Emacsもできるけど、僕はEmacsユーザーでは今ないけど。
そうですね、メール読んだりとかも悪名自体が9Pサーバーなんで、
別のプログラムから悪名のファイルにアクセスをして、操作はできますね。
それを使ってメール処理とかをやってます。
おお、すごい。
エディター拡張みたいなのは作ってる人とか作る方法あるんですか?
Plan 9 PortとAcmeエディタの利用方法
LSPはありそうだなみたいに思ってるんですけど。
はい、ありますよ。
これもやっぱりヤスコック氏がやっていて、悪名でプレゼンしてる様子を見たことありますか?
ありますあります。
あれなんか、上の方にプラスボタンが、水色の領域かな?にプラスボタンがあって、
それを押したら次のスライドに移動したりとかしてたんですけど、覚えてます?
うん、なんかそれはあんま覚えてないです。
はいはい。あのボタンは実は悪名じゃなくて、多分あれ拡張でできてるんですよ。
なるほどなるほど。
裏ではボタンを押したときに、さっきサーチボタンっていう話がちょっとした記憶があるんですけど、
サーチが押されたときって、そのウィンドウに表示している、Paneに表示している対応するファイルサーバーに、
やっぱりそのサーチコマンドが押されたよっていうイベントが届くので、
それを受けて、じゃあその描画をこっちに切り替えてくださいみたいなことをやってるんですよね。
うんうん。
はい。で、プラスだったら、今の番号プラス1のファイルを表示するみたいなことをやってるはず。
うんうんうん。なるほどね。なんか分かったような分かんないような。
でもなんか、また今見てたら、角田さんが書いた悪名エディターの基本を覚えるっていうブログ記事が見つかったので、
これを読むといいのかなというのを思いました。
まあでも、あれもいいですけど、英語わかる方だったら、ラスコックスさんが動画を作ってるので、
そっち聞いてもらう方が多分動きがあってわかりやすいと思います。
うんうん。なんかそう、多分この角田さんの記事にもラスコックスさんがプレゼンしてるやつの動画が貼ってありますね。
じゃあぜひ。
これって、でもそもそもMacとかで動かせるもんなんですか?
いけますよ。今、いつ頃だったか忘れたんですけど、ラスコックスさんがプランラインのツールを使いたいけど、
そのブラウザーとかがプランラインに用意できないので、UNIXに逆輸入するみたいなことをやっていて、それがプランラインフォートって言うんですよね。
で、今だと多分Linuxでも動きますし、Macでも動くはずです。
なるほど。プランラインフォートがMacでも、プランラインフォートっていうツール群がMacでもちゃんと動くはずっていう。
動くはず。
うん。そしてラスコックスさんはLinuxできっとそのプランラインフォートで悪名を使ってるんじゃないかっていう感じ。
いや、なんかMacじゃなかったですかね。
Macなのか。へー。そうなのか。
確かMacだった気がしますが、ちょっとどうだったかな。
うーん。まあまあまあ、でもどちらにせよ動かせるっていうことなんですね。
はい。ちょっとWindowsはわからない、なんか怪しいので、もしWindowsで使われるんだったら、WSLとか使ったほうが確実だと思います。
WSL2で動くかどうかっていうか、確実っていうか、それしかなさそうだし、それで動くかはわからんって感じですね。なんかチャレンジャーを求むって感じがしますけど。
はい。試したことはないです。
Plan 9におけるマウスとトラックパッドの活用
うーん。そうか。だから、ちょっと話を戻して、マウスとかの話になるけど、だから両手でマウスみたいなことをしてるという感じなんですね。
両手っていうか、右手でマウス、左手でトラックパッドにしてるんですか?
はい。これも結局、ログパイクさんがやってたのを真似てるだけなんですけど、プランラインのツールって結構マウスを多用するんですよ。
これは全部キーボードでやりたい人からすると、あんまり評判は良くないんですけど、まあでも範囲を選択したりとかをやっぱマウスの方が早いと個人的には思うんですよね。
で、マウスを左ボタンとか右ボタンとか、あと中ボタンかな。結構エディターで使うので、やっぱマウスは必要。
そうは言っても、最近のブラウザとか使っていると、マウスよりもトラックパッドの方が楽なところはあって、スワイプして別のワークスペースに切り替えるとかもできますし、
そういう機能のために左手にトラックパッドを置いてるっていうのを、確か2010何年経ったかな。忘れたんですけど、そういうことをやってるっていうのをログパイクさんが話をしていて、ナギハウズで。で、いいなと思って真似してます。
なるほどね。そうか。しかもそういう3ボタンマウスの方が相性がいいみたいな感じなのか。
そうなんですよ。悪名エディターってコキペをするときって、Ctrl-Cとかじゃなくて、普段ちょっと手癖でやってるんで、どっちだったかな。
左ボタンを押しながら真ん中ボタンでカットで、左ボタンを押しながら右ボタンでペースト。それを組み合わせて、左ボタンを押しながら真ん中を押して、その次に右ボタンを押すとコピーになるんですよ。
この操作を結構多用するので、スクロールマウスよりは3ボタンマウスの方が使いやすいですね。
使いやすそう。でも今ってホイールクリックするしかないよね。3ボタンマウスってあるの?使ってるの?
あります。一応Amazonで売ってます。CAD用って探すタブもあります。
そうなんだ。へー。
さすがにBluetooth接続のは見たことがないですけど、USBだったらありますよ。
そうなんだね。それもちゃんとアーチで動かせるんだ。
動いてますね。
そうか。別にシンプルな信号だと考えればそうなのか。なるほどな。
ハードウェア的にはあんま詳しくないですけど、スクロールがないだけだと思いますね。
そうだよね。わかんないけど、同じキーイベントが行ってそうな感じはするもんね。
なるほどね。いやー面白い。
Plan 9の推奨利用方法とコミュニティ紹介
よし、なんかだいぶ後半も長くなったけど、聞きたい話とか書いてくれた話大体消化できた感じがする。
いやー、なんかまだプラン9全然わからんっていう状態ではあるけど、でもなんか話す前よりかはだいぶ知識が増えた感じがしました。ありがとうございます。
こちらこそプラン9の話ができる機会なんて想像もないので楽しかったです。
よかった。なかなか聞くこともないと思うので、皆さんぜひこの回聞いてもらえればいいなと思ってます。
じゃあなんか他話したいこと、宣伝とかないですか?
宣伝、そうですね。
そうだな、何かあるかな。
まあそうやってなんかあんまりいない人がいないみたいなことを言ってるとちょっとネガティブなんで、ちょっといますよっていう紹介をしようかなと思うんですけど。
一応外国、9ファンズとか9レガシーとか9フロントとか開発はやっぱり続いているので、今触るなら多分9フロント触ってもらうのが一番困らないとは思うんですが、
現代でもHTTPのサーブをするぐらいだったら動くので、興味があったらぜひぜひ古いOSとかは思わずに触ってみてほしいなと思いますし、
国内でもアテナ社のスラッグにsharvplan9っていうチャンネルがあるんですけど、意外と7,8人ぐらいいる。
興味を持ってくれている人もいる、若者もいるので、国内でも使ってるかわかりませんが、興味を持ってくれてそうな人はいます。
あとこれ言っていいのかな。渋チャリさんもなんか最近触ってそう。
渋チャリさんはね、やっぱりプラン9の話とかすることありますね。一緒に飲みに行くときとかもそうだし。
ラスコックス好きだからね。僕らみんな好きだけど。
本当にすごい人ですよね。
うん、すごい。本当すごいよな。いろんなとこにいる。
正気表現の論文とかもラスコックスさんだったし、Goモジュールがすごかったしね。すごいなって感じですよね。
スイッチ.comのリサーチのやつ見るとだいたい難しいですもんね。
じゃあそんなところかな。
最後までプラン9愛が満載でよかったです。
ということで、趣味でOSSをやっているものだ、角田さん、ルフィアさん、プラン9ユーダさんをゲストにいろいろお話をしました。ありがとうございました。
ありがとうございました。
趣味でOSSをやっているものだは、感想やお便りをお待ちしています。
ハッシュタグOSS4ファンでTwitterやブルース会に投稿していただくか、お便りフォームhttps://oss4.fan/.voiceからお寄せください。
RSS、Listen、Spotifyでの購読もよろしくお願いします。
次回もお楽しみに。
01:02:34

コメント

スクロール