Honoの来た道とこれから 文字版!
この記事は2024年10月22日に行われた「さくらじまハウス 2024」で発表した「Honoの来た道とこれから」の内容を、先ほど口頭で喋って文字起こして修正したものです。
アジェンダ
今日はHonoの来た道とこれからという題名で話していきたいと思いますゆーすけべーと申します。よろしくお願いします。今日のアジェンダですけども、Honoの現在の状況とメインのHonoの来た道とこれからということを紹介したいと思います。「これから」は少なく「来た道」というのが焦点になっていてそれぞれをトピック別で紹介していきたいと思います。
Honoとは?
まずHonoとはという話をしたいんですが今回はですね、文字起こし版ということで省きます。
紹介したいのはイニシャルコミットということで最初のコミットが2021年12月15日になりましてもうすぐ3年経ちます。もうちょうど3年経ちますね。結構長い間やっているプロジェクトだなって思いますね短く感じると思います。3年が短く感じました。
Current Status
今の状況なんですけども、これちょっと資料にあるものと今のだいぶ差が出てるんですけども、GitHubのスターは20Kになっています、今は。他のプロダクトと比べてどのぐらい数多いのかとか、どのぐらい劣るのかっていうことを紹介したかったんですけども、有名どころのプロダクトしか知らないのでそれを探してみると、みんな星の数がすごいのでちょっと比較対象にならないということで、例えばNext.jsが126Kとか、あとはRuby on Railsだと55K、JS系だとPrismaっていうのが39Kとかありまして。実は近いのはRubyなんですね。Rubyが22KということでもうすぐRubyを起こすプロダクトになるかなと思います。ただRubyは言語なんで、言語自体にスターを付ける人ってのは少ないかもしれないなと思っています。
ダウンロード数なんですが、これは発表当時とあんま変わってなくて週に41万ダウンロードされています。これも比較対象がないので、ちょっと正直申し上げにくいのとライブラリの性質、つまりよくベーシックなライブラリでよく使われるものと、あとアプリケーションによく使われるものだと、ちょっとダウンロードのされ方が違うので、あんまり比較対象にならないんですけど。前と比べればかなりダウンロードされて、使われているということが分かります。
あとこれが結構分かりやすいと思うんですけども、HonoのXアカウントっていうのがありまして。あんまりつぶやかないんだけどいつの間にか11Kフォロワー、1万1000フォロワー、今だともっといるという感じです。これは結構すごいですよね、というのが 分かりやすいかなと思います。
使っているところ
そして使っているところもすごい増えていて。増えてるだけじゃなくて実用で使っています。ここでバーッと上げてますけどもたくさんとにかくいますね。日本だとCyberAgentだとかToggle holdingsとか。CyberAgentの子会社なのかなAI Shiftとか、知ってるところもあるし、スタートアップのところでも結構使われてたりとかします。そうですね、実はCloudflareも使ってるし、Fastlyも使ってるというのが分かります。
Cloudflareプロダクト内で、かなり使われています。この資料を作る前に、この発表する前にCloudflareでどのぐらい使われてるのかな、ということを聞こうと思いまして。最初はD1ぐらいかなと思ったんですけども社内のチャットで聞いたところ、僕も使ってるよ、僕も使ってるって言ってすごい「俺が俺が」みたいになって。実はかなり使われています。Workers Logs、KV、R2、Queues、あとはwww.cloudflare.comっていうのはwww.cloudflare.comっていうドメインページのプロキシになって後ろに飛ばすみたいなことをやってます。あとWorkers PlaygroundとかもHonoを使っていて、多分これSDKの中にあるのでオープンソースで見れるのかな。
一番ヘビーに使ってるのはWorkers Logsで これは昔Baselimeっていうオブザーバビリティのサービスがあって、それをCloudflareが4月に買ったというアナウンスがあって。そこからそのチームは、Cloudflareのチームとしてやって、BaselimeのAWSで動いてたやつを、全部Workersに移して動かすっていうのをやって、9月にリリースしたんです。そこでもうAPI部分、全部Honoで作ってます。これはかなりすごいプロジェクトになってますね。あとはKVのインターナルのAPIとかも 最近では全部Honoベースになってたりとかします。なのでCloudflareはかなりヘビーにHonoを使っていることになっています。
Examples
あとはですね、SDK各種。SDKとかサービスがありますと、サービスの例として「こういう使い方しましょうよ」っていうのにHonoはかなり使われています。PrismaとかVercelのAI SDKとか、Resendってメール送信のサービスだとか。特にResendとかは最近連絡が来て、なんかコメントくれって言ってコメントを書くとランディングページみたいなのを作ってくれたということです。
インフルエンサー
あとインフルエンサーの人も結構使ってHonoいいよと言ってくれてます。でこれは海外の文脈なので、もしかして、知らない人がいるかと思います。
このBenって人はですねホワイトボードチーフなんとかって言って自分で言ってるんですけど、ホワイトボードでテクノロジーのことを解説するので、有名な人ですね。この人が言ったのは「Express is the new JQuery」って言ったんですね。その代わりにHonoはどうだっていうことも、言ってくれたりとかしています。
次はですね これはBunっていうのが発表になったときの話ですね。この人は今はいないんですけど当時BunのアドボケイトだったColinですね。こういうウェブフレームワークがBunで動くよって言ったときに「hono Express or Koa」って言ってHonoが一番最初に出てくるというのを言いました。実はこのColinっていうのは Zodの作者だったりとかします。これ豆知識です。
これがすごいのは去年の10月にDenoFestっていうのを秋葉原でやってこれはRyan DahlっていうNode.jsの作者で今Denoの人ですね。この人が「Don't use Express Use Hono」って言いました。これは素晴らしいことです。
あとはですねSyntaxっていうポッドキャストがあって。これが世界で一番強々なテック系のポッドキャストなんですけども、ここのチュートリアルみたいになってたりとかします。
この発表をする直前にですね、スライドが間違っていますね、2024年ですね。2024年の10月21日に「You Should Drop Express and Try Hono」っていうSyntaxのメインエピソードの中に掲載されました。これすごいのは会話の中でたくさんフレームワークがある中の一つです、っていうんじゃなくてHonoそのものがタイトルになってるっていうのはものすごいことでこれはめちゃくちゃすごいですね。いわばこのSyntaxっていうのはなんか何て言うんだろうな、「鉄子の部屋」みたいな存在なのでそういうところにHonoが急に出てきたというのはめちゃくちゃすごいことです。
あとはKawaiiロゴって言ってSawaratsukiさんっていう人にかわいいロゴ作ってくれて嬉しいです。
つまり「人気でたくさん使われている」というのが今の状況です、ということですね。はい、以上がこれまでがここまでがHonoのカレントステータス今の状況というものでした。
Honoの来た道
ではいよいよHonoの来た道ということでメインとなる章を始めていきたいと思います。
作ろうとしたきっかけ
最初に作ろうとしたきっかけです。これよく聞かれるんですけど2つ理由がありまして、1つがCloudflare Workersのアプリを作りたかったんですがピンとくるフレームワークがなかったというものです。ここに3つ入ってあってittry-router、Worktop、SunderというのがあってどれもルーターがあってHonoと同じなんですよね。ただ細かいAPIがちょっと気に食わないというかもうちょっといい感じないのかなと思いました。というのと、Trie木構造のルーターを作りたかったというのがあります。この2つが合わさって作ったことになります。
Trie木のルーターって何ぞやってなりますけども、そもそもTrie木って何ですかね。何ですかね、何ですかねって感じですけども。
Trie木っていうのはTrie Treeアルゴリズムの一種です。アルゴリズムの一種だと考えてください次にルータールーターって言ってますけど。
ルーターって何って話ですけども。ネットワーク機器のルーターではなくウェブフレームワークにおけるルーターのことを言ってます。リクエストのパスとメソッド例えば/hello
にGETメソッドきましたといったときにどのハンドラーを実行するかというのをルーティングするという意味でルーターと言ってます。例えば/hello
をGETするのが来たらJSONで{"message":"hello"}
とかっていうのを返すとかっていうのを司るものですね。これすごい実は重要です。
それで一般的なリニアなルーターっていうのがありまして。Expressで使われているルーターとかこれなんですけども。リニアっていうのは頭からさらっていくというものですね。登録されたルート情報がありまして、それを来たリクエストのパスに応じて頭からマッチするかっていうのを毎回正規表現を使って、マッチ、マッチ、マッチ、マッチここでマッチした、っていう感じでさらっていくというものですね。なので下に行くほど遅くなってしまう。
次にTrie木によるルーターだとパスごとに来たリクエストのパスを分解します。例えば/hello/foo/bar
って来たらhello
の次はfoo
が来ますとfoo
の次はbar
が来ますというようなものをまず登録されたルートを入れといて、そこに来たルートを入れて、それぞれがノードに分かれているのでリニアにマッチするよりかは早いというようなものですね。これがTrie木によるルーターです。これが実はやりたかったんです。
このbmf_sanって人が昔やってるのを見て参考にしました。これ面白いのはGoで実はこのルーターを使っているんです。
2021年12月15日、3年前からに作って、その12月とか1月は1日1個の機能を実装するみたいな感じで毎日コツコツ作ってすごい楽しかった思い出があります。
最初のコントリビュータ
次に最初のコントリビュータという話ですね。
12月15日に作り始めて12月19日に最初のコントリビューターの方metrueさんという方が現れます。よく見ると何もコメントもない不愛想な感じのプルリクだったんですけど、READMEを作ってくれたんですね。Getting Started的なREADMEを作ってくれたというのが一番最初のプルリクでした。これでもすごいありがたいですね。
metrueさんすごいかなりやっていて、例えばCI導入とかミドルウェアの実装もやっていてLoggerとかBasic authとかもやってくれてます。あとはコンベンショナルコミットっていうのもこの人を真似ることによって導入されたことになります。あとcompose.ts
っていうプログラムがあるんですけどそこのテストもかなり役に立ちました。今でこそ違うんですけども、コミット数ではusualomaのさんの次に多いっていうのをずっとキープしてたと思います。3番目のコントリビューターですね、数的には。一番最初のコントリビューターということです。
metrueさんが「We」っていう言葉を使って、「私たち」っていう言葉を使ってプルリクとかイシューとかで言ったというので自分だけがやるってわけじゃなくて「みんなでやろうよ」という意味でWeって言葉を使うので、なんかここでオープンソースっぽいなと思いました。
usualomaさん登場
usualomaのさん登場するんですけども「プルリクエストは突然に」みたいな感じでドラマのタイトルみたいです。
えーと、102番目のプルリクかな。「Added type to c.req.param key.」っていうのがありまして。これが2022年のバレンタインディで2月14日ですね。この時に衝撃でしたね。
はい。ちょっとこの機能は詳細な説明省きますけども、Honoの中でもかなり特徴的なTypeScriptを使った機能なんですけども。「こんなことできんの」みたいなのをいきなりプルリクで送ってきて、なんだこれと。当時も名識なかったusualomaさんですけども、今も2回ぐらいしか会ったことがないっていう人なんですけど、急に送ってきたというようなものです。
RegExpRouter誕生
次にRegExpRouterが誕生、ということでHono史上一番強烈なPRでありまして。これがusualomaさんが2番目に送ってきたプルリクですね。
「Introduce RegExpRouter」っていうもので、これがとんでもない2020年の2月20日ですね。
先ほどルーターの話をしましたがRegExpRouterっていうのは何かというと、リニアなルーターだと上からマッチさせる。そしてTrie木のルーターだとノードに分けてマッチさせる。今回はRegExpRouterっていうのは登録されたルート情報を一つの大きな正規表現にするんですね。そうすることで1回だけの正規表現でマッチすることができる、というのがめちゃくちゃ早いんですね。この1個の大きな正規表現にするっていうアイデアも素晴らしいアイデアですね。ただこれは実はPerlがバックグラウンドにあるっていうこともあるんですがちょっと置いといて。
とにかくこれが早くてですね。JS界で一番早いルーターになりました。例えばFastifyとかで使われているfind-my-wayっていうめちゃくちゃ速いルーターよりも2倍速かったりとかしますね。
先ほど言った通り、Perlの文脈っていうのがあって、Perlってプログラミング言語ですね。Perlでは複数の正規表現を一つの正規表現にする手法っていうのがありまして、それを利用しています。例えばRegexp::Assembleっていうライブラリーがありますけども、それがやってますと。さらにその手法を利用したルーターっていうのは実はもう既にあって、Router::BoomっていうルーターがPerl用のルーターでありますと。つまりそこにインスパイアされた形でusualomaさんが作ったというものですね。usualomaさんは今でもPerlを書いているし、僕も実はPerlの出身なので一つ言えるのはJavaScriptのフレームワークだからといってJavaScriptだけじゃなくてPerlの良さというかPerlの文脈も汲み取っているし、先ほど紹介したGoのTrie木の実装を参考にしてJavaScriptに生かしているというようなことが言えます。
アイデンティ is fast
次に「アイデンティ is fast」という項目なんですけども。先ほど以前紹介した通りCloudflare Workers向けのフレームワークいくつかありました。3つ紹介しました。itty-router、Worktop、Sunder、それにHonoが出てきましたと。その当時だと正直どんぐりの背比べみたいな感じではあったんですね。ただその中で個性っていうのを発揮しなくちゃいけません、という時に、じゃあ何を個性にしようか。しかも後発だし、正直JavaScriptもそんな詳しくなくてやりだしたので、実装的に劣るかもしれない、っていう時に速いっていうのをアイデンティにしようと思います。というのもRegExpRouterもあるしTrie木のルーターも速さを考えて作りました。ということで「Ultrafast」というのを謳ってます。この速いっていうのは本当に速いと思うんですけども、それだけじゃなくてこの速いっていうのをアイデンティにすることによってマーケティング的な意味合いがあって、速いから使ってみようとか速いらしい、とかホームページに「速い」って書けるとか。ルーター以外にも速いところを作ろうと思っていて、クエリパラメータパーサーとかも今自作して今のバージョンにも入ってます。あとはResponseを作る時にヘッダーを入れると遅くなるから、ヘッダーがいない時はヘッダーを入れない、とかなんかちょっと適当に言ってますけど、そんなやり方をすることによってResponseを作るのを速くしてるとかやってます。速いと似たような機能のフレームワークから嫉妬を買うんですね。ベンチマークで僕らの方が速いとやけになってもっと速いのを作ろうということで例えば機能を削ってきたりするんですよ。そういうことをつまりベンチマークだけで勝負を仕掛けてくるというのがありまして。嫉妬を買ったりやけになってしまうということの対象になってしまうのであんまり「速い速い」っていうのも良くないなと思って、今までUltrafstって言う言葉を使ってなくて「Framework based on Web Standards」っていうのを使ってます。とにかくアイデンティティは何だろうって言った時に速いっていうのを見つけて、当時はそれにしていましたよと話です。
このベンチマークの話になると結構ですね、「Hono vs Elysia」という話になっていてElysiaってフレームワークがあります。これはですねBunで動くフレームワークです。ただその他のランタイムでも動きますが、Bunに特化したとも言えるし、そうと見られているフレームワークです。正直ですねElysiaはHonoの後発です。というのはもうこれはSaltyAomeさんっていう作者の人も多分認めていることだと思います。本当にHonoの後に出てきたし、JSXとRPCとかの機能も似たようなものがあるんですけども、それらも全て後発で追加されています。ちょっと詳細はずきますけども、AOTっていうのを使っていてめっちゃ速いんですね。なので負けます。ベンチマークで負けます。ということでBun対応のフレームワークで人気があって使われていてっていう意味では、HonoとElysiaっていうのは二大勢力っていう構図になっています。
それで実際に、この作者の方が作っているベンチマークのスクリプトと結果があるんですけども、それだとやっぱりElysiaに負けちゃうんですね。Honoは負けてしまうということになっています。AOTっていうのを使っているからElysiaは必ず速いはず。
なんですけども、ベンチマークは負けると悔しいというのがあります。ただこれに終止符を打つようなものがありまして。
このツイートがあったんですけども、ElysiaはHonoより速いのか。一つのアンサーはYESだと。ただしElysiaっていうのはAOTっていうのを使っていて、そのAOTっていうのはBunで動くけどCloudware Workersで動かないんですね。そういう意味でもHonoはこのAOTっていう仕組みを使っていないということです。それでAOTを使わないモードにするっていうのがElysiaにありましてそのオプションをONにして、AOTをDisabledにすると実はベンチマーク取った時にHonoは速いというのが出ます。つまりElysiaのAOTが速いし、ちょっとの差でHonoが速いし、AOTをDisabledにしたElysiaはもうちょっと遅いということです。
それに対して作者の人は、ElysiaのAOTをオンにしないと、Honoが速いこれはよく説明されていると。ただアプローチが違うよと。ElysiaとHonoとアプローチが違う。これも確かにそうだと思うんですが、ElysiaはBunに特化してるし、AOTを使うし、例えば常駐するようなアプリケーションには向いてるけどCloudflareみたいにパンと立ち上がるようなアプリケーションには向いていないし、バンドルしたサイズも違ったりとかします。だけどもAOTを使わなくてもHonoは限りなく近く速いということで とはいえ実際にフレームワークとして速い方です。ということでこの作者の人はHonoは素晴らしいという風に言ってくれてます。これで一旦、僕としては個人的には終止符がついたような気がして、つまりお互い別々の道を歩いていこうというようなことが言えたかなと思います。ただElysiaもいいフレームワークだと思いますアプローチが違うということですね。
Sunil
次にSunilという題名がついています。これが胸熱な話ですね。Sunil Paiっていう人がいます。ハンドルネームはthreepointoneということでTwitterとかGitHubにいますと。この人はですね、以前Cloudflareにいましたと。Honoをちょうど作って出だしたときですね。開発し始めたときです。Wrangler v2っていう実装をガリガリやっていたのを知ってますと。WranglerっていうのはCloudflare Workers向けのCLIですね。このCLIのソフトウェアが今バージョン3で、実はバージョン4も出そうなんですけども、SDKっていうレポジトリに移りましてWorkers SDKのレポジトリのコミット数を見るとこの人がSunilが未だに1位になってますね。このコミットしている様子、コードを書いている様子、あとはプルリク・イシューを返している様子っていうのはなんとなくかっこよく僕には映ってました。
で、あるとき 2022年5月19日ですね。作り出して半年ぐらいかかったときですね。そのときにですね。
急にTwitterでメンションが飛んできてそれがSunilからだったんですね。「This looks like a pretty neat batteries included framework for Cloudflare Workers」ってHonoのnpmのリンクをつけて送ってくれました。これはもう嬉しいですね。
ただ当時は「neatって何」とか「batteries included is 何?」って感じだったんですけども。とにかくこういうふうに言ってくれて嬉しかったですと。憧れの人が言ってくれたんですね。
その後ですね。SunilはCloudflareを退職します。で、その後PartyKitっていうサービス そして会社を立ち上げることになりますね。
これはリアルタイムでコミュニケーションを促進するためのフレームワークを提供します。こういうふうにブログとか書いてあるように、投資を受けて開発していくということをやっていきます。
その後ですね、今年の4月、Cloudflare Developer Weekっていうのがありまして、このDeveloper Weekでいろんな製品の発表とかアップデートの発表とか、その他の発表をするんですね。で、今年の4月、実はですね一覧発表が1週間で終わってきてですね。1週間なので、1週間の4日目か5日目 4日目ぐらいが終わって一段落した後に、実はOne more thingみたいなことがありまして。
CloudflareがPartyKitを買ったんですね!これは買ったことによってSunilがCloudflareに再び入るということになります。
これはすごい胸熱な展開でちょっとラノベに言うならば「憧れてたエンジニアがやめた会社に入社したら戻ってきて同僚になった」話みたいになりますね。このような胸熱な展開になりました。
大きな決断
次に大きな決断ということで、2022年の7月16日にVer2っていうのをリリースします。その時に目玉がDeno、Bun対応っていうのが目玉になります。これまではCloudflare WorkersとFastly Computeのみをサポートしてたんですけども、ここで対応するラインタイムを増やすわけです。その後Node.jsでも動くようにすることができましたと。するとたくさんのランタイムで動くのでユーザーが増えることで品質が上がる、というこの良いサイクルを生むことになりました。この決断がすごい良い決断でした。
このBunっていうランタイムの話になりますけども、これがまあ新進気鋭のランタイムですね。Jarred Sumnerっていうのが作っています。HonoのVer2を出すちょっと前の2022年の前半に、Bunのプライベートのレポジトリっていうのがあってですね。まだBunはですね1.0も出てないということになりますね。ただプライベートなので見れないんだけども、BunのDiscordに「bun」って打つとアクセス権をもらうというようなことがあって僕もプライベートのレポジトリにのぞいていたりとかしました。2022年の7月頭ですね、これがHonoのVer2が出るちょい前ですね、パブリックになってですね。レポジトリパブリックになって話題をかっさらったというのがあります。ホームページで書いてある通りとにかく早いって言ってます。で、まあ実際ベンチを取ると、まあすごい早いですと。
で Bunが出ましたよって時に「Bunサポートしますか?」っていうのがHonoのプロジェクトにIssueが同時に立つんですね。Bunが公開したと同時に。まあ、とはいえCloudflare WorkersとAPIが同じほぼ同じなので何もせずとも動くっていうことでIssueが立った瞬間に「対応しますよ」と書きました。でも、対応しなくても今までのコードで動くと思いますよってことが言えたんですね。なので既に対応してたということですと。で、ここでフラグ回収が起こるんですよ!
というのは実はSunilが僕に対して「This looks like a pretty neat but included framework」って言ってくれた先ほどの胸熱のツイートがあるんですけども。
実はそこにコメントしてたのがJarred Sumnerで「Oh I wonder if it will work in Bun」って言ってます!Cloudflare WorkersとBunはAPIが同じだから動くと思うよっていうことを、実はですね、この当時にもコメントしてたのがJarredだったりとかします。これはすごいですね。胸熱な展開でした。
HonoきっかけでClouflareに入社する
次にHonoきっかけでCloudflareに入社するというものです。これはですね、2022年の10月17日ですね。Honoのバージョン2がリリースされてしばらくして、次バージョン3か?みたいな時ですね。
ここですね、Glen Maddernっていう人がですね、僕にTwitterでDMをくれまして。「Cloudflareにジョインすることを考えたことある?」みたいな感じで急に言ってくれました。
このGlenっていうのはですね、今CloudflareでD1の開発をやってますと。実はですね、知ってる人は知ってると思うんですけどもstyled-componentsっていうCSS in JSの走りのライブラリーがありまして、この作者です。本当に一番最初に作った人です、っていうとマジビビる人ですね。そのGlenによるとですね、Workersの開発チーム、Wrangler Integrations、D1が今求人してますと。普通日本は取らないけれども。しかしですねGlenはその当時イギリスで仕事をしてて、ただ地元のオーストラリアに帰ってオーストラリアで仕事したいから同じタイムゾーンのアジアとかオセアニアの人を探していて、ちょうど僕が目に入ったというものですね。あとはですね、言ってくれたのはHonoを周辺としたエコシステムで何かできるかもというと言ってくれました。これはすごい嬉しいことですね。
同時期にですね、DaneっていううちのETI、「The Emerging Technology and Incubation」っていうつまりWorkersを作っている部署があるんですけども。そこの一番の長の人に同時期に言ってくれましたね。「Cloudflareで働く気はないか」ということを言ってくれてました。全く同時期ですね。でこれまあGlenとシンクしてたのかっていうのはちょっと聞いても分からないって言ってますけど。もとにかく同時期にアプローチがあったのはすごい嬉しいことです。
Honoを作っていることとかXやDiscordでCloudflare関係の発言をしてたから、目も付けられたんじゃないかなと思います。
で一回じゃあおしゃべりしてみようかっていうことになりまして。おしゃべり程度だったら英語分かんないけどちょっとやってみるかっていう風にやったら、実は途中から気づいたんですけども、実は面接でした、というものです。
で、このあとたくさんインタビュー、面接をしました。
僕はですね、大学院出てからですね、起業したりフリーランスだったりとかする時期があったので初の就職活動初就職だったんですね。初就職の就活をですね、いきなりCloudflareでやるということです。たくさんインタビューしました。合計5人の人かな?と話しました。いきなりそのIgorって人がですね、一番最初におしゃべりしませんかって言われて話したら「What is your goal?」っていきなり聞かれて「おおっ」みたいなタジタジするっていうことがありましたね。で次にDaneとRitaと話した時に面接だと気づいて、あとはGlen、Peteとはですね、オンラインでエディタ見てなんかペアプロみたいなことしようっていう話で。その当時作っていたRPC機能の自慢をしたりとかしました。Peteとはですね、Wragnlerのバグがあるんだけどバグ取りをして見ないかみたいなこと言われたんですけども。なんかWranglerのバグ取りってつまんねえなと思ってじゃあこのRPCこれ見てくれよっていうことをしました。全体的に、結構ウケは良かったらしいんですけども。
今でもそうですけど英語全然しゃべれないので、これでなんか差別化されたら嫌だなと思って「Love letter」という題名のメールを送って、英語ができないからとか、「英語できないから頑張るよ」っていうのもあるんですけども、英語が母国語じゃないからとか、日本人だからとか、日本にいるからっていうことで判断しないでくれっていうことを「Love letter」という題名のメールで送りました。
当時はですね、先ほど申した通りシステムエンジニアで声をかけてもらいました。ただ途中でDaneに「開発とアドボケートどちらがやりたいんだ?」という風に言われて、当時アドボケートってなんだと思ったんですけど「both」っていう風に答えました。結果的にDeveloper Advocateになりました。当時はオープンなポジションではなかったんですけども、僕が入ることで僕用に作られた枠になります。ただDeveloper Advocateっていうのは役職としてはあって、その当時は元々2人で3人目になりました。
これが2022年の年末のことなんですけども、年明けても全然動きがないくて。「Honoが大きくなってるから早くしないと取られちゃうよ」みたいなことを言うと、Daneはですね「Give me 2 days」って言ってくれるんですね。そうすると2日後に本当にですね、アジアのリクルーターから連絡が来て、その後トントン拍子で、カルチャーフィットの面接があって、日本法人の社長の面接があって、共同設立者のZatlynと電話が出来て、オファーという風にトントン拍子で進んで。ようやくですね、2023年の4月去年の4月に入社するということになりました。
嬉しい話でした。で、胸熱なんですけども。
社内のチャットを見つけてですね。入社した後にですね、社内のチャットを見つけるとですね、そのエンジニアの人たちがですね、僕のポストをXのポストをピックアップしてですね、見てるんですね。「こいつ面白いことやってるよ」と「Cloudflareで面白いことやってるよ」と言ってくれてるわけです。その時に誰かが「We should employ that guy」って言ってるんですね。そしたらIgorかな「もう動いてんよ」みたいなことを言ってくれました。と僕がですね入社後そのチャットルームを見つけて「Dream came true」ってコメントをしましたね。
マックフルーリーの思い出
次にマックフルーリーの思い出って書いてありますけどもまずCloudflareのDeveloper RelationsチームいわゆるDevRelチームってすごい個性めっちゃ強くてですね。ここにあるように見た感じ個性強いですね
今年の4月ですね、入社して1年経ってですね、初めてチームメイトと直接会うというのがありまして。2023年4月に入社してですね、全然人と会えないんですね。あとミーティング自体もですね、実は週2週に1回しかなくて。本当は週1であったんですけども、時差がきついみたいな。全員が揃う実はきついってことでアジアフレンドリーのミーティングとヨーロッパフレンドリーのミーティングって分けたので、つまり週1回が週2週に1回になった。ということで、そもそもオンラインで会う機会もないし、オフラインで会う機会もないということ。ただマネージャーのRickyは結構日本に行く機会もあったんですけども。その時点では1回しか会ったことなかったのかな。でオースティンに行ってですねみんなで会うっていうサミットっていうのをやったんですね。DevRelチームとドキュメントチームがみんなで集いました。これはめちゃくちゃ楽しくてですね、さらにオースティンのオフィスっていうのはですね、まあまあ人いるんで他のETIのメンバーもいて僕はですね「Honoの人じゃん」っていう風に声かけられたりとかします。これがまあすごい良い思い出だし、Hono作ってて良かったなって思いました。
この写真がなんかめっちゃめっちゃいいでしょ?これがオースティンのオフィスですね。ちょっと外資っぽい感じがして。めっちゃこれなんか思い出の写真になってます。
えっとそうですね。お寿司屋さんに行ってオースティンのお寿司屋さんに行ってですね、Kyoto Beerっていうのを頼んだら抹茶が入ったビールが出てきたりとか。
味噌汁にレンゲが刺さってたりとか。
なんかやたら豪華ななんか派手な寿司ができて、なんか刺さってるとか面白かったんですけど。マックフーリーの思い出っていうのはですね。
これまあすごい平和な話なんですけども。えーと、全部諸々プログラムが終わって、ある人たちはちょっとまあおしゃれなパーティーに行くらしいと。ただ僕ら余ったDevRelの一部のチームの人たちはですね、あの寿司屋行こうかって言って寿司屋行ったんですね。その後お散歩しようって言って夜のオースティンの街をお散歩してたんですけども、マクドナルドの話になって。ポルトガルの人がいて「ポルトガルのマクドナルドって緑だよ、赤じゃなくて緑だよ」っていい出してマジかよってなって、じゃあみんなで見に行こうってことでKristianってやつの車に乗ってみんなで郊外のマクドナルドまで行くということですね。でそのポルトガルの人はですね「Finally!」って言って赤いマクドナルドをついに見た、ということです。そしたらですね、ドライブスルーで大人5人で乗ってたので、5個マックフルーリーを買ってですね、5人で狭い車の中マックフルーリーを食べるというイベントがありましたっていう話ですね。これがすごい、いい思い出になって1年ぶりに会えてよかったなっていう感慨深いものになりました。
ここで思ったのは「日本」っていうのはすごい強くてですね。英語喋れないけど英語は母国語じゃないけど日本っていうのは強いですね。例えばですね、抹茶のキットカットをサミットに持って行ったんですけどもこれがですねめちゃくちゃウケてですね。コンビニで買った抹茶のキットカットがですね、めちゃくちゃウケて。例えばみんな1個ずつあげたんですけども、1個余っちゃって。1個余ったらある人がもう1個もらっていい?って言って。いいですよって言ったら、1個自分が食べて、1個は飾っておくようにするみたいな、オタクのグッズ買うみたいな感じのことを言ってて、これはウケてるんだなと思いました。その他ですね、日本だけじゃなくて世界中に世界の言葉になっている「寿司」とか「天ぷら」とか「ラーメン」って言葉とか食べ物があるということで。つまりですね、海外の人と喋る時にもうすでにラーメンの話をすればいいし寿司の話をすればいいってことで共通の話題があるってのはすごい強いことかなと思います。あとはですね「日本へ行くんだけど東京でおすすめのレストランある?」みたいなことを結構チャットで聞かれたりとかしてですね。これも嬉しいことですし、頼られるっていうのはすごい嬉しいし、会うきっかけになったりとかしていいかなと思います。ということで「日本」ってなんか劣等感かもしれないけど、「日本」っていうことは実は強いと思っていていいかなと思います。
そして日本のミートアップに、実は僕のマネージャーとですね、Kristianっていうのが来ました。
これはすごいめちゃくちゃいい写真で、今年の8月にやったCloudflare Workersに特化したイベントですね。これも思い出の写真になっています。
中学生に大人気のフレームワーク
次のトピックは中学生に大人気のフレームワーク、ということですね。Honoには中学生コントリビューターが、僕の知っている限り3人います。このスライドの絵からですね、今、中3、中3、一番右が中2ですね。ちょっと前は中2、中2、中1だったはずです。ネカマじゃなければそのはず。
確かにですね、Honoはですね「Ultrafast」とか言ってるだけにですね、厨二っぽいかもしれないんですけども。厨二に人気のフレームワークってことで、結構嬉しいし、本当に中学生だからとかっていうような手加減どころじゃなくて、むしろ向こうの方がですね、パワーがあって時間もあるのでこっちが負けちゃうみたいな感じになるので、本気で話をしたりとかしてます。若い人も参加してくれるって非常にいいかなと思います。
JavaScript OpenSource Award逃す
次にJavaScript Open Source Awardを逃す、ということでJavaScript Open Source Awardっていうのがあって、結果が6月13日に出ました。結構これ、権威のある賞なんですけども、The Most Exciting Use of Technologyっていうのがありましてですね、そこにノミネートしてたんですね。ここにノミネートしていた他のプロダクトが、ElysiaとPartyKitだったんですよ!ただ結果としてはHonoもElysiaにPartyKitも取らずに、Effect.tsっていう割とぽっと出のライブラリが取ったということで。すごい話ですね。本当はでも、マジでこれ悔しくて取りたくてですね。Honoで賞って取ったことがなくて、取りたかったんですね。ただElysiaにもPartyKitにも取られなくてよかったかな、っていうのも思います。
Hono Conference
次にHonoカンファレンスっていうのを6月22日にやりました。これがHonoが題材だけのカンファレンスとしては一番最初のものですね。なので「Our First Step」っていう副題をつけてます。140人応募があって、100人ジャストの参加がありました。Contributors Track、パネルディスカッション、Users Track、Keynoteという風に進みました。この様子は写真を振り返ってますが、ブログとかにも上げてるんで見てください。
最後にいい写真が撮れて嬉しいです。
GitHubでHappy New Year
次にGitHubでHappy New Yearということがありまして。我々ともなるとですね正月の挨拶もGitHubでやります。これはですね、今年の1月ですね。usualomaさんにプルリク上でですね、「Happy New Year」って言ってusualomaさんも「Happy New Year」って言ってますね。実はusualomaさんとはですね、本当に2回しか会ったものがなくてリアルで。だけどGitHubではほぼ毎日話をしていたという、不思議な仲です。
触れる面を増やす
次に触れる面を増やす、というのを考えています。ユーザーがHonoに触れる面を増やすというのをとにかく考慮しています。ということは、いい機能を取り込むし、例えばバージョン4が顕著なんですけども、Client Components、Static Site Generatgion、File-based Routingみたいなことをバージョン4で唱えて入れてますと。ということは「新しい機能が出てきたから俺も使ってみようか」「私も使ってみようか」と。使われる機会が増えるということでコアのクオリティも上がるという風に考えています。ただ機能が増えたからといってコアのサイズは変わらないような仕組みになっているので、全然問題はないというものです
俺の考えた最強のフレームワーク
次に俺の考えた最強のフレームワークというものがありまして。Honoの開発ってすごい楽しい中学生を含めいろんな人がコントリビュートしてます。metrueさんもいればusualomaんもいれば、他にも、ものすごいたくさんの人がコントリビュートしてます。そこでみんなが「俺の考えた最強のフレームワーク」はこれだ、みたいなのをぶつけてきてくれるんですね。結果的に「みんなで考えた最強のフレームワーク」になるのがちょっと楽しいところだし、こういうことをどんどんやっていきたいなと思っています。
Cloudflare Blog
CloudflareでBlogをつい最近10月17日に書きまして。僕が一番最初のCloudlfareのオフィシャルブログに書く一番最初のブログですね。それでHonoの話をしました。そうするとですねちょっと自信がなかった記事だったんですけども。
結構いろんな人がですね、X上で返信くれて、あったかいことばっかなんですね。すごいありがたいなと思っています。
頑張ればなんとかなる
どんどん終わりに向かっていきたいと思いますけども。「頑張ればなんとかなる」って書いてあって、なんとかなるんですよ、ということがHonoを使って作っていてわかりました。ぽっと出だからとか、英語が苦手だからとか、日本人だからとか、日本にいるからとかっていう追い目もあったんですけども、そういうのがですね、「すごい関係あるわけではない」なというのがわかりました。つまり製品の良さだけで判断してもらえるところがあります。
Contributors!
コントリビューターを紹介します。ということで、これは今だともう200人以上なんですけども。これはHonoカンファレンスのときに見せたスライドでそのときは160人コントリビューター、今では200人コントリビューターがいます。ものすごい数の人に協力してもらってるし、楽しんで作ってるというものになっています。あとはですね、これはHonoのコアのメインのレポジトリなんで、他にWebサイトとかミドルウェアとかを含めると多分もっと倍ぐらいになるんじゃないかなと思います。
Future plan??
よく聞かれるのがですねですね「これから」の話なんですけども、「future planありますか?」みたいなこと言われるんですけども、実はですね、結構ないです。今後の考えはもちろんあるんですけども、「こういうのをやります」みたいなことを言うとやめようとしたときに大変だったりとかするし。いきなりですね、すごいPRが飛んでくるみたいなことを大事にしたいのであんまり先のことを固定しないでいきたいなと思っています。ただ、これから何かしら機会があれば、これだっていうことが見つかればそれを紹介していきたいなと思います。けども今のところfuture plan、「これから」っていうのはすごい固まってるわけじゃないっていうことを言っておきたいなと思います。
Never Stop Shipping
最後「Never Stop Shipping」っていう言葉を紹介します。「これから」の話というよりは「ずっと続けたいな」という話で。今でもですね、僕はnpmのモジュールを、Honoのコアのライブラリだけじゃなくてミドルウェアとかも含めると、毎日1個以上のペースでnpmにパブリッシュしてるんですね。どんどんバージョンを上げて出荷していくってことを止めないでいきたいなと思います。あんまりバージョン上げてもしょうがないんじゃないかとか、リリース多かったら不安になるとかそういう話もあるかもしれないけど、常に作り続けていくってことはすごい大事なので「Never Stop Shipping」していきたいなと思います。
以上です。以上がHonoの来た道とちょっとしたこれからの話でした!ありがとうございます。
Discussion