Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HonoXで動かすアプリケーションのリアル

takahiro suzuki
November 25, 2024
860

 HonoXで動かすアプリケーションのリアル

自社イベントにて使ったHonoXの資料

takahiro suzuki

November 25, 2024
Tweet

Transcript

  1. 4
 © toggle holdings inc. 沿⾰ BUKUROUを買収 シリーズB 1st 12億調達

    2023年7⽉ シリーズA 5.6億調達 2022年4⽉ MINE事業が 軌道に乗り始める 2021年8⽉ 不動産業界の デジタル化に向けた 挑戦を開始する 2020年6⽉ 設⽴ MINE事業により、 ⼟地を買い建物を建てる ノウハウ的基盤ができる ⼟地を買い建物を建てる ための業務インフラをリ リースする ⼟地売買の専⾨業務を AI化する研究開発が形に なり始める ‧物件管理 ‧VCプロ / VCライト ⼟地を買って建物を建てるための業務を、技術に転換す るための研究が進⾏する 地図GISデータ活⽤、建物3Dデータ活⽤、賃料予測の機 械学習など、さまざまな技術の掛け合わせた活⽤に、レ バレッジがかかる未来が⾒え始める ⼟地流通 プラットフォームの 実現へ 売上 95億 売上 51.0億 売上 23.4億 トグルホールディングス エンジニア組織 トグルホールディングス全体 2023年10⽉
  2. HonoXの特徴 
 • ファイルベースルーティング
 • Bring Your Own Renderer
 •

    Islands アーキテクチャ
 • Vite のエコシステム

  3. HonoXの特徴 
 • ファイルベースルーティング
 • Bring Your Own Renderer
 •

    Islands アーキテクチャ
 • Vite のエコシステム

  4. HonoXの特徴 - ファイルベースルーティング
 
 まとめ
 • routes/配下に置けば簡単にルーティングできる
 • ルーティングは createRoute

    して c.render を返すだけの超お手軽
 • フックしたければ、middleware を追加するだけでOK!
 直感的でプロジェクトに参画直後も理解しやすい!
 

  5. HonoXの特徴 
 • ファイルベースルーティング
 • Bring Your Own Renderer
 •

    Islands アーキテクチャ
 • Vite のエコシステム

  6. HonoXの特徴 
 • ファイルベースルーティング
 • Bring Your Own Renderer
 •

    Islands アーキテクチャ
 • Vite のエコシステム

  7. HonoXの特徴 
 • ファイルベースルーティング
 • Bring Your Own Renderer
 •

    Islands アーキテクチャ
 • Vite のエコシステム

  8. PandaCSS とは 
 ゼロランタイム CSS in JS 
 • JS内にCSSを書きつつも、ビルド時に実際のCSSファイルを

    生成する
 • 動的にCSSを生成するハイブリッドなライブラリもある(Kuma UI) など

  9. パッケージ構成について 
 Web(フロントエンド)とServer(バックエンド)で分けています。 
 Serverは Classベースで Transaction, Service層などを用意 
 


    export class UserTransaction {
 private userService: UserService
 
 constructor(infra: Infra) {
 this.userService = new UserService(userService) 
 }
 
 async getUsers(): Promise<User | ErrorResponse> {} 
 }
 Transaction層
 Service層

  10. パッケージ構成について 
 
 Web(フロントエンド)とServer(バックエンド)で分けています。 
 Serverは Classベースで Transaction, Service層などを用意 


    
 export class AppServer {
 private infra: Infra
 private userTransaction: UserTransaction
 
 constructor() {
 this.userTransaction = new UserTransaction(this.infra)
 }
 }

  11. パッケージ構成について 
 
 export const backendMiddleware = createMiddleware<Env>(async (c, next)

    => {
 const backend = new AppServer() 
 c.set(‘backend’, backend) 
 await next()
 })

  12. まとめ
 • jsxによるrender や、ファイルベースルーティングなど、Honoを活かしつつ honoXで実現している機能は⾯⽩い! • ViteやHonoが、ある程度「素」の状態で使えるので、HonoXだから困るとい うことは少ない。 • islands

    コンポーネントでCSRと境界は区切られるが、気を抜くとなんでもか んでもislandsコンポーネントになりがち。ゆえにライブラリ選定も難しい。 • HonoXを使っている!というイケイケ感。