皆さんこんにちは!!
普段、WebAPIとかを開発するとなると大体FastAPIを使っている筆者ですが、Cloudflare Workersに興味があったので、workersではPythonも動くらしいですけど、せっかくならHonoを使ってみよう!ということで使ってみた感想を記事にしてみました。
いいな~と思った点
FastAPIと結構似てる
FastAPIとHonoはとにかくシンプルなWebフレームなので、結構似てます。
わりとサクサクと使えました。
例えばFastAPIならこんな感じです。
@app.post("/api/test")
async def test():
~~処理~~
一方、Honoならこんな感じです。
app.post("/api/test",async (c) => {
~~処理~~
})
こんな感じでわりと似てるんですよね。
まあたまにクセでHonoで@appとかやっちゃってエラーでるんですが笑
Honoの方が日本語情報が多い
FastAPIはわりと最近増えてきていますが、まだ日本語情報が体感的には少ない気がします。
(まあPythonではまだまだFlaskとかDjango使ってる人のが多いイメージですね。)
一方Honoは最近プチブームになってるのと日本人の方が作ったみたいなので、結構情報が多い気がします。
認証の実装が楽で色々ある
Honoは認証の実装がとにかく楽で分かりやすい。
FastAPIでも標準でOAuth2をサポートしていますが、使おうとしたことがあるんですが、個人的にはちょっと複雑で使いにくいです。
一方、HonoではJWTやBasic 認証など色々あって、シンプルで楽で実装できるな~と個人的にはこっちのがいいじゃんと思いましたね。過去にFastAPIを使ったときはサードパーティーログインのみでの実装だったんですけど、標準のやつでログインを実装しようとしてみても複雑でサードパーティーログインと混ぜるのがめんどくさいので自分でログインのロジックを実装しちゃいましたが、ログインだけでもHonoでやってれば、かなり工数減って楽だったなと思いましたね。
一方、デメリットに感じたところ
※この記事は普段、Pythonを使い倒している人が書いています、TypeScriptに慣れてないから使いにくいとか舐めたことぬかしてますが、ご許しください。
ORマッパーが使いにくい
ここはあんまりHono関係ないですが、FastAPIではというか、Pythonでは基本的にORマッパーはSQLAlchemyを使います、わりとシンプルで使いやすいですが、一方Honoではまず、ORMが色々ある!!僕は普段フロントエンドでJavaScriptは扱いますが、バックエンドでは初めて、、どれを選べばいいのかわからんという事態になりました、ChatGPTに聞いてDrizzle ORMに使うことにしたんですが、なんかセットアップがクソめんどくさいですね。
一方、途中でDBの構造変えるのが楽っていう点は評価できますが、それ以外はめんどくさい、コマンド実行したりする手間が大変です。
Cloudflare Workersでは使えるライブラリに制約がある
これもあんまりHono関係ないかもしれませんが、Honoは元々Cloudflare Worker用に作られたので入れました。
とりあえず、使いたいライブラリがあったら使えるかどうか調べる。
みたいなプロセスが発生します、また日本語の記事だと使えないって書いてあったりするんですが、公式には対応しました!!と書かれて情報が錯乱しているな~とも思いました。
TypeScriptがわからん!
はい、普段Pythonを使ってます、型ヒントを使ってコードを見やすく設計しているタイプやからいけるやろという謎のノリと所詮JavaScriptだろ~という軽い気持ちでコード書き始めたんですが、ちょくちょく特有の機能がわからん!ってなります、ググったりChatGPTに聞いたりとして解決しますが、静的型付け言語はあんまり使わないので、余計に理解するのに時間がかかるっていう、、、、これからTypeScript頑張ります。
感想
普段、バックエンドでJavaScriptを一切使わずにフロントエンドでJavaScriptを使っていました、そこが今回完全仇になったな~と思います。
あとちゃんとTypeScriptを勉強したいなと思いましたね。
でも、Honoは結構好きです、シンプルで使いやすい!日本人が作った!!という点です!!
同じ日本人が作ったフレームワークなので成長して欲しいと思います!
(日本人が作ったんやから、公式ドキュメント日本語も用意してくれよ~~~)


