サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ChatGPT
zenn.dev/yusukebe
Honoの面白いネタがあるので書きます。 Web標準 HonoはWeb標準のAPIを使って作られています。Web標準は元々ブラウザで動くもの(JavaScriptやCSS、HTML)に対して考えられた技術仕様もしくは指針です。昨今はCloudflare Workers、Deno、BunといったJavaScriptランタイムはV8やJavaScriptCoreブラウザのエンジンを使っていて、サーバーサイドでWeb標準のAPIを動かすようになっています。Node.jsもそれに追従して使えるようになっています。例えば、HTTPのレスポンスを返したければResponseオブジェクトを使います。 これは多くのブラウザで動くし、上記したサーバーサイドのランタイムでも動きます。 Honoを作った動機は「Cloudflare Workers上で動くフレームワークが欲しかった」なので、初期からWeb標準のみ
これまでHonoは数々の新しいことを提供してきました。正規表現を活かしたルーター、サーバーサイドの軽量JSX、TypeScriptの型によるRPC、Web Standardを使ったマルチランタイム対応などなど。アイデアと実装力で世界と戦って来たわけです。 本日私達が紹介するのは「Hono CLI」です。 Hono CLIは全く新しいコンセプトのコマンドラインインターフェースです。 create-* ではありません ただの開発用(dev&build&deploy)のコマンドではありません Viteのラッパーではありません 人間とAIのためのCLIです。インストールすると のようにhonoコマンドを使うことができます。5つのサブコマンドがあります。 hono docs hono search hono request hono serve hono optimize では一つ一つを見ていきまし
Webアプリをベンチマークする方法について書きます。ここでいうWebアプリはCloudflare Workers、Deno、Bun、Node.jsで動くJavaScriptのバックエンドのアプリです。また、測るものは速度です。JavaScriptですが、他の言語のWebアプリにも応用できるかもしれません。僕がHonoを開発する上でパフォーマンス計測、ベンチマークをしているのでそこで得た知識です。 どうやってベンチマークするか? どうやってベンチマークするかについて考えます。今回紹介するのは以下の3つです。 マイクロベンチマーク サーバーを立てるベンチマーク サーバーを立てないベンチマーク 「1. マイクロベンチマーク」ではある単一の機能、小さな機能同士の速度を比較します。例えば、ボトルネックになっている関数をピックアップして、新旧の実装を比べたりします。 Webアプリのインとアウトをロード
10月18日(土)、docomo R&D OPEN LAB ODAIBAにて第2回目になる「Hono Conference 2025」を開催します!Hono Conference、略してHonoConfは僕が開発しているWebフレームワーク「Hono」をテーマにした世界最大のイベントです。今回はHonoConfの簡単な紹介をします。 過去のHono Conference 第1回目のHonoConfは2024年6月22日(土)、今回と同じくdocomo R&D OPEN LAB ODAIBAにて開催しました。 参加者はおよそ100人で、時間は昼の13時から初めてだいたい17時まで。内容はHonoコントリビュータによる「コントリビューショントラック」、「パネルディスカッション」、Honoユーザーによる「ユーザートラック」、キーノートという具合でした。 100人のイベントなので、カンファレンスと
HonoXを公開して1年が立ちました。以下はその当時の記事です。 今回はこの1年間を振り返り、最近のHonoXについて知ってもらいます。 そんなに変わってない 実は1年前の公開以降、HonoXはそんなに変わってないです。リリースノートを遡るとわかりますが、featと書かれた新機能が少ないです。つまり当初のコンセプトはズレてないです。また、HonoXはHonoとViteのメタフレームワークなので、HonoX自体は機能を提供していません。ですので、新機能の導入はすごく少ないです。 今の課題は「やれるはずなのにできないこと」をなくすことです。これもだいぶ潰れてきました。 次はハマりどころをなくして、ドキュメントを整備するところだと思っています。ドキュメントはこれまで、GitHubのhonojs/honoxのREADMEに書いていました。最近は別にドキュメント用のWebサイトを作るプロジェクトを始
Cloudflareの開発者プラットフォームには様々なプロダクトがあります。例えば、オブジェクトストレージのR2、SQLデータベースのD1、AIモデルが動くWorkers AIなどです。Cloudflare Workersの中でこれらを使う時に欠かせないやり方が「Bindings」です。Workers特有ですが、Bindingsを使うと、SDKを使って外部サービスとつなぐことが必要なくなります。シークレットを文字列の環境変数で扱うケースが少なくなります。JavaScript/TypeScriptのオブジェクトとして外部サービスを使うことができるDXは快適です。このBindings、知らない人も多いと思うので、紹介します。 AIを12行で実装する Bindingsの感覚を掴むために、実装をみてみましょう。Workers AIをCloudflare Workersの中から使います。 まずwra
Cloudflareを使った画像の配信パターンを紹介します。 Cloudflareで画像配信をする方法はたくさんあります。例えば、Cloudflare Imagesというプロダクトがありますが「それだけ」を使うのではなく、Cloudflare Workersをプロキシのように使ってR2をバックエンドにするといった画像配信の方法もあります。たくさんあるがゆえ、アプリケーションに最適な方法とその実装が分からないことがあるので、少しでも分かるようにしたいです。 Cloudflare Imagesについて 名称からして、画像配信というとこのプロダクトに辿り着きます。 ただ、Cloudflare Imagesは機能の集合です。これから紹介するようにCloudflare Imagesだけで配信ができるパターンもありますし、他のパターンでは、Cloudflare Imagesの画像変換や最適化の機能を使
Cloudflareという会社でDeveloper Advocateとして働いています。この「Developer Advocate」というのはなかなかレアなロールで、馴染のない方も多いと思います。僕も他の同じロールの人たちがどんなことしてるのかを十分理解しておらず、人によってやってることは様々です。 今回はDeveloper Advocateについて理解するきっかけとして、僕が日々どんなことをしてるのかを紹介します。 発端 そもそもどうやってDeveloper Advocateになったか。Cloudflareへの入社の経緯は以前書きました。 そこでも触れている通り、当初はシステムエンジニアとして声をかけてもらったのですが、当時の部長にあたる人から 開発とAdvocateどっちがやりたいんだ? と聞かれて「Both」と答えた結果Developer Advocateになりました。質問された時点
MCPイントロ MCP = Model Context Protocolを活用する話です。MCPとはAnthropicが11月26日に発表したAIが外部のコンテンツやツール、環境にアクセスするためのプロトコルです。プロトコルなので、Anthropicが自分のためだけにつくってものではなく標準的なものです。MCPを使うことは、ファインチューンやRAGなどAIを特化するための手法の一つとも言えます。やっていることはFunction Callingに近いです。今回「MCPとは?」はこのくらいにしておきます。ここでやりたいのは「MCPを活用するとこんなことができるんだ」というデモを一緒に体験することです。 空前のMCPブーム 11月26日にMCPが発表になるとCloudflare社内で盛り上がります。早速、MCP専用のチャットルームが作られ、「Cloudflare MCP Server」の実装が始
この記事は2024年10月22日に行われた「さくらじまハウス 2024」で発表した「Honoの来た道とこれから」の内容を、先ほど口頭で喋って文字起こして修正したものです。 アジェンダ 今日はHonoの来た道とこれからという題名で話していきたいと思いますゆーすけべーと申します。よろしくお願いします。今日のアジェンダですけども、Honoの現在の状況とメインのHonoの来た道とこれからということを紹介したいと思います。「これから」は少なく「来た道」というのが焦点になっていてそれぞれをトピック別で紹介していきたいと思います。 Honoとは? まずHonoとはという話をしたいんですが今回はですね、文字起こし版ということで省きます。 紹介したいのはイニシャルコミットということで最初のコミットが2021年12月15日になりましてもうすぐ3年経ちます。もうちょうど3年経ちますね。結構長い間やっているプロジ
ここで言う「Web標準のバックエンドアプリ」とはCloudflare Workers、Deno、BunなどのWeb標準をサポートするランタイム上で動くWebアプリです。もしくは、Node.jsでもWeb標準のAPIをサポートしているので、これから紹介するアプリとテストコード自体はNode.js上も動きます。 これらのテストを書く、実行するのは実にシンプルで、拍子抜けしてしまうほどです。ですが、現在、20,000行あるHonoのテストコードは、これらのやり方と全く同じ方法を取っています。注目すべき点は、実際のサーバーを立ち上げることがなく、抽象化されたリクエストとレスポンスのやり取りを試験するだけで、品質が保たれる点です。Honoのテストでは、ランタイムによっては一部実サーバーを立ち上げますが、コアの20,000行ではサーバーを立ち上げていません。この抽象化はPythonのWSGI、Ruby
生成AIをよりよくする手法の一つにRAG = Retrieval-Augmented Generationがあります。これは単純な仕組みから作ることができて、効果的で面白いです。そして、Cloudflare Workersを中心としたCloudflareスタックで実現できます。やってみると、Cloudflareを使ったアプリケーション作成に必要なエッセンスをいくつも体験できることが分かりました。そこ今回は、シンプルなRAGアプリを作りつつ、Cloudflareスタックを学んでみましょう。 リポジトリ 今回扱うコードや関連する例は以下のリポジトリでみれます。 CloudflareスタックでRAGを作るとは? RAGの実装方法を説明します。いくつかありますが、簡単な方法にします。 LLMと会話をするにはsystem、userというロールで以下のようなパラメータを渡します。 app.get('/
2024年6月22日(土)に第一回の「Hono Conference」を東京で行いました。Honoに焦点当てたトークのみで構成されるイベントとしては初の試みです。ですので、"Our first step"という副題をつけました。100人が参加し、イベントは大成功に終わりました。 この記事ではHono Conferenceについてレポートしたいと思います。 会場 会場はdocomo R&D OPEN LAB ODAIBAさんにお借りました。開放感がありとても素敵な会場でした。ありがとうございます! 参加者 以下のページで参加者を募りました。 定員90人のところ、140人の希望者がいました。人気のほどが伺えます。当日は、発表者も合わせて100人が参加しました。 Honoを以前に使ったことがあるか?という質問にほぼ全ての人が手を挙げていたのが印象的でした。 トーク イベントは午後1時から4時30
僕が開発しているWebフレームワークHonoは、同じJavaScriptのフレームワーク、Expressと比べられることが多いです。どちらもやれることはほぼ同じですが、HonoのアドバンテージはファーストクラスでTypeScriptをサポートしていることです。特に「RPC」機能は他のフレームワークにはなかった「TypeScriptの型でサーバーとクライアントの仕様を共有する」ことを可能にしています。今回はそのHonoのRPCについて紹介します。 どんなものか まず、どんなものかを箇条書きで共有します。 Web APIの仕様、特にインプット・アウトプットをサーバーとクライアント間で共有するためのもの OpenAPIやgRPCを使ってやりたかったことを叶えるかもしれない サーバーとクライアントをどちらもTypeScriptで書くことが大前提である 同種のものにtRPCがあるが、Honoの場合、
前置き 4月の第1週に行われたCloudflare Developer Week 2024でAIやデータベース関係のアップデートの影に隠れ、WorkersをつくってるKenton氏のブログが2つ投下されました。 そして「JS RPC」という機能が追加されました。 これが一見地味なんですが、非常に楽しい未来を想像できるので、書いてみます。というか以前chimameさんが書いた記事でだいぶ理解できるのですが、もう少し噛み砕いて書いてみます。 Bindings Cloudflareにはいくつもプロダクトがあります。ストレージのR2、データベースD1、KVストアのKVなどです。そしてそれらに繋ぐ方法が「Bindings」という方法です。このBindingsで繋げられるものはたくさんあります。 AI Analytics Engine Browser Rendering D1 Environment
先日行われたCloudflareのDeveloper Week 2024の記事の中にPicsartというサービスの事例記事がありました。 よくよく読んでみると「Cloudflareを導入したらパフォーマンス上がった」という簡単なセリフでは済まされない努力と工夫が書かれていました。非常に面白いので、自分なりに噛み砕いた要約を書いてみます。コードはあまり出てきませんがテクニカルな内容になっています。 Picsartとは そもそもPicsartとは?ということなんですが、iOSとAndroidのモバイルデバイスとWebに対応した、世界的なオンラインの写真編集サービスです。 Wikipediaによると180カ国で10億ダウンロードを超えているとのことです。 問題 Picsartには固有の問題がありました。 各アプリの起動時にクライアントデバイスは1.5MBの設定ファイルをダウンロードする クライア
Cloudflare PagesでURL短縮サービスを作ってみましょう!これを作ることであなたは以下を体験することができるしょう。 HonoでWebページをつくること Cloudflare KVをアプリケーションの中で使うこと アプリケーションをCloudflare Pagesへデプロイすること アプリケーションの特徴 今回作ってもらうアプリケーションはこのような特徴があります。 Viteを使って開発 UI付き JSXを使ってHTMLを書ける メインのコードは100行以下! Zodを使ったバリデーション バリデーションエラーも表示 簡易なCSRF対策 デモ 完成品を使っている様子です。 完成品 完成済みのコードは以下にあります。 アカウント 今回、アプリケーションを作ってCloudflare PagesへデプロイするにはCloudflareのアカウントが必要です。無料の範囲で遊べるので、も
編集中 ここにコードを置くと思います。 このイベントが今週末で、その中で「Honoハンズオン」をやるので超絶ネタバレですが、そこで話す内容を書きます。 方針 ハンズオンと言いつつ「みんなで一斉にやりましょう」ってやると合わせるのに時間がかかるので、僕がどんどん進めます。なので、ついてきたい人だけついてきてください。そうじゃない人は僕がコード書くのを見てください。むしろその方がよくわかっていいと思います。 Honoとは? ウェブサイトを見てください。 あと正直、僕はブログ書くのとか好きなんですが、いわゆるちゃんとした「ドキュメント」を書くのが正直苦手でそれは英語に限らずなんですが、なので、よくしている方いたら貢献してください。コントリビューションウェルカム! create-hono さてこれからやっていくわけですが、Honoのプロジェクトをつくるときにはcreate-honoというCLIを使
laisoさんが書いてたのほぼなんだけど Honoは文字列でもStreamでもなんでも返せるからサーバーサイドもReactで書けるし、tsconfig.jsonで適切に設定すればJSXなんでもいけるし、Viteのdev-serverがあるから、サーバーもクライントも同時に開発、ビルドできて、もちろんAPIを生やすのが得意で、雑React SPA環境(API付き!)作るのに向いてるよ。 作り方解説します。めんどい人はここにプロジェクト作ってるからclone、ダウンロードしてください。 まず、create-honoして、cloudflare-pagesのテンプレートを選ぶ。bunをパッケージマネージャーに使ってる。
2月9日、予告していた通りHono v4をリリースしました。 そのHono v4のリリースと同時に、Honoを使ったメタフレームワーク「HonoX」を公開しました。 今回はHonoXのいくつかの特徴について書いてみたいと思います。これは使い方というより作者目線の思想みたいなものです。 メタフレームワーク HonoXとは一言で言うと「HonoとViteを組み合わせたメタフレームワーク」です。HonoX自体が機能を提供しないのが肝です。 もう少しだけ具体的に言います。HonoXで扱うのは「Honoのインスタンス」そのものです。つまりあなたがHonoXでアプリを作るということは「Honoのアプリを作る」ことになります。その証拠にエントリーポイントになるapp/server.ts内で出てくるappはHonoのインスタンスなので、hono/devにあるヘルパー関数showRoutes()がそのまま使
X dayは2月9日です! ということで、Honoの現在のバージョンはv3系なのですが、v4を2月9日にリリースする予定です。偶然にもYAPC::Hiroshima 2024の前夜祭の日ですね。 当初はdeprecatedな機能を廃止したいという「ポジティブではない」理由でメジャーバージョンアップをしたかったのですが、大きな機能が入ることになりました。ずばりこの3つです。 Static Site Generation Client Components File-based Routing お分かりの通り、よりフルスタックなフレームワークに進化します。今回は2月9日に先駆けてこの3つの機能を軽くオーバービューしてみましょう。 RC版 v4のRC版が出てます。現在は4.0.0-rc.3が最新なので以下のコマンドでインストールできます。 npm create honoで作ったプロジェクト内で実
いわゆるファイルベースルーティングをするJavaScript/TypeScriptのWebのフレームワークを作ってみましょう。 ファイルベースルーティングの例 ここで言うファイルベースルーティングとはファイルを置いたパスに応じてWebのルーティングも決定する、というものです。例はこんな感じです。 $ tree ./app/routes ./app/routes ├── about.tsx // http://localhost:3000/about ├── index.tsx // http://localhost:3000/ └── posts └── [id].tsx // http://localhost:3000/posts/123
昨日、HonoのNode.jsアダプタのv1.3.0をリリースしました。これまでのものより2.7倍速くなるパフォーマンス向上が含まれています。 このリリースは「2.7倍」という数値以上にHonoにとって大きなものになりますので、それについて解説します。 Request/Responseの翻訳 HonoはWebスタンダードAPIのみを利用したWebフレームワークで、WebスタンダードAPIのみで構成されたものがWebアプリになるうるランタイムのみを対象にしていました。具体的には、Cloudflare Workers、Deno、Bun、Fastly Computeなどです。 Honoを使わない例を出すと、以下のコードはWebスタンダードのみを利用してる非常に素朴なものですが、これだけでCloudflareでもBunでも立派にWebアプリになります。
先日リリースしたv3.9.0でHonoの「Cloudflare Pages」のスターターテンプレートが新しくなりました。 これがなかなか面白いので詳しく紹介します。 使ってみる 使ってみてください。create honoコマンドを使います。C3(Create Cloudflare CLI)コマンドでもHonoを選べますが今のところそれだとWorkersのテンプレートになるのでcreate honoで。npmの場合は以下です。 選択肢がでてくるのでcloudflare-pagesを選びます。 そしたら、ディレクトリに入って、npm installしてnpm run devすれば開発サーバーが立ち上がり、npm run deployすればデプロイできます。 Viteベース で、以前からCloudflare Pages、もしくはWorkersも含み、Honoでアプリ開発をしていた人はこのスタータ
この記事は以前7月に自分で書いた「Hono + htmx + Cloudflare is a new stack」という記事を一部修正し、訳したものです。 Hono + htmx + Cloudflareは新しいスタック 以前、バックエンドエンジニアだった身からすれば、Reactは複雑だと感じることがあります。さらに(私はフレームワーク開発者なのですが)フレームワーク開発者にとってはハイドレーションの仕組みを作ることは厄介です。しかし、しばしばReactを使うことになります。 Reactの優位な点の一つは「JSX」です。最初見た時、JSXは奇妙に思えました。「なんでJavaScriptの中にHTMLのタグが入っているんだ!」。しかし、一度慣れると、JSXは柔軟で、書きやすいことに気づきました。 今日はこれから、JSXをサーバーサイドのテンプレートとして使う技術スタックを紹介します。これはつ
ワークショップ 来週というか今週の金曜日、名古屋でCloudflare Workers + Honoのワークショップをやるのですが、先日Birthday Weekで発表された「Workers AI (AIアプリがGPUで動く!)」が楽しいので、それを使ったアプリを作ろうということになりました。 先日もServerlessDays Tokyo 2023というイベントでCloudflare Workers + Honoのワークショップをやったのですが(4時間!)、その時にドタバタしちゃったんで、今回はもうやることを全部ここに書こうと思います。とはいえ「Cloudflare Workersとは」とか「Honoの特徴は?」とか書き出すとキリがないので、参考文献を参考にしてください。 準備してもらうこと まず、Cloudflareのアカウントを作って、Dashboardに入れることを確認してください
JavaScriptのランタイム、Bunのv1.0がリリースされましたね 🎉 さて、僕がメインとなって開発しているHonoはBunと関係があるので、その話をします。 hono Express or KOA Bunのリリース時に使われた動画がかっこいいです。まるでApple。 この中で作者のJarredから肉まんのパスを受けるのがBunのDeveloper AdvocateでZodの作者のColinです。彼は「Web APIを作るためのフレームワーク」として以下のように言いました。 hono Express or KOA おおー。Express、Koaより前に来てていい感じですね。上記で貼ったリリースノートには順番が変わってますが、しっかりと名前が出てます。 Bun is tested against test suites of the most popular Node.js pack
題名に「CDN」と書きましたが、いわゆる「エッジ」のことです。オリジンありきなのであえてCDNと呼びました。とはいえ、オリジン自身がエッジにある可能性もあります。 メタフレームワークを作る Sonikというメタフレームワークを作っています。まだDevステージなんでどんなことができるか可能性を探っている最中です。 このフレームワークの特徴はとにかくエッジファーストです。 SSRしたバンドルの大きさを極力小さくする。 Islandsアーキテクチャを採用する。 DenoのFreshを参考にする。 CloudflareのBindingsを扱いやすくする。 Honoの上に乗せる。 とりあえずStreamingはサポートしない。 で、こういうのを作っていると、フレームワークは最小限にして、Core Web Vitalsのスコアを上げるために身を削る最後の部分はCDNに任せてしまった方がいいってことです
CloudflareのDeveloper WeekではAI基盤のConstellationや、HTTP以外のTCP接続が可能になるconnect()、PlanetScaleやSupabaseなどのデータベース統合など魅力的な製品の紹介やアップデートがありました。これらを活用することでよりフルスタックなアプリケーションをエッジ上で構築する事が可能になります。 また、Cloudflareに限らず、FastlyでもCompute@Edge上でNext.jsが動いたり、先日KVストアが導入されたDeno Deployではエッジ上でリッチなアプリケーションをつくるこができます。 一方、CDNのエッジで実行されることの醍醐味のひとつに「オリジンを活かす」ことがあります。オリジンに対しての「リバースプロキシ」です。「フルスタック」に目が行きがちですが、エッジコンピュートはリバースプロキシに新しい風を吹き
次のページ
このページを最初にブックマークしてみませんか?
『zenn.dev』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く