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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for takahiro suzuki takahiro suzuki
November 25, 2024
4.1k

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

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

Avatar for takahiro suzuki

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を使っている!というイケイケ感。