Slide 1

Slide 1 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 2022/10/19
 toranoana.deno #9 
 
 虎の穴ラボ
 奥谷 一陽
 閉鎖した個人開発のサービスを
 Deno Deployで復元する


Slide 2

Slide 2 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 自己紹介
 奥谷 一陽
 所属:虎の穴ラボ株式会社
 担当:とらコインSHOPなど新規事業系の開発
 興味:TypeScript、Deno
 おすすめコンテンツ:
   『プラネテス』
   『暴太郎戦隊ドンブラザーズ』
 
 Twitter:@okutann88


Slide 3

Slide 3 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 個人開発のWebサービスを作っている方
 どのくらいいるでしょう?


Slide 4

Slide 4 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. かくいう自分も
 過去にいくつか作ったものの閉鎖した


Slide 5

Slide 5 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. が、アイデアは悪くなかった
 けど、色々足りてなかった
 (と盲信して)
 Deno Deployで復元することにした


Slide 6

Slide 6 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 復元するサービス 1h. 
 
 
 
 
 
 
 
 参考: https://www.ccbaxy.xyz/1h/


Slide 7

Slide 7 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 開発中のサービス 1h.reboot 
 コンセプト:過去サービスと同じ
       匿名掲示板、書いて1時間で消える
       サービスで独自のIDを付与


Slide 8

Slide 8 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 利用技術要素的な変遷
 当初(2018下期)利用技術要素
 - EC2
 - Node.js
 - Mysql(EC2内にインストール)
 - Vue.js
 - skelton.css
 - 特に認証の仕組みの導入は無し
 - 日本語のみ
 - JavaScript
 2022年10月
 - Deno Deploy(アプリ本体)
 - supabase(DB/API)
 - upstash(キャッシュ)
 - Fresh(preact)
 - tailwind.css
 - Twitter連携
 - i18n対応
 - TypeScript
 復元といいつつ、利用技術に共通性は薄く、 
 コンセプトの継承であって、「復元」ではないなと書いていて思いました。 


Slide 9

Slide 9 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. Deno Deploy 起点フルサーバーレス サービス インフラ 構想
 
 deno deploy ・APIサーバー ・DB管理 ・ストレージ キャッシュ呼び出し Redis qStash バッチ処理呼び出し APPサーバー

Slide 10

Slide 10 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. Freshに、追加導入しているモジュール
 Fresh 単独では、目的としたものは作れない
 追加で導入しているモジュール
 - std モジュール群
 - basic_auth: 開発中の一応の保護目的
 - redis: redis接続用(deno deploy環境では、upstash-redisに差替)
 - fresh_session: Freshにセッション管理を追加
 - deno_csrf: CSRF対策用トークンの発行と検証
 - twitter_oath_1_0a: Twitter連携用トークン発行と検証


Slide 11

Slide 11 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. Freshに、追加導入しているモジュール
 - fresh_session
 コントリビューターとして機能拡張してます。
 このくらいの規模感のOSSだと、手出ししやすいと思います。
 - deno_csrf
 - deno_twitter_oauth
 この2つは、私が公開しているモジュールです。


Slide 12

Slide 12 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. Fresh ベースで開発で役に立ったこと
 - DENO_ENV という環境変数
 いわゆる development / staging / production などが書いてある変数
 動作環境ごとのインフラの差異から、使用モジュールを差し替えしている
 - 開発環境 dockerで建てた redis を参照する
 - 本番/テスト環境(deno deploy) upstash redisを参照する
   (Rails脳で考えた結果なので、他の方法もあるかも)
 


Slide 13

Slide 13 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. Fresh ベースで開発で役に立ったこと
 - 環境変数 DENO_ENV の使用箇所:Redisモジュールの差し替え
 


Slide 14

Slide 14 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. Fresh ベースで開発で役に立ったこと
 - Fresh 標準ディレクトリ構成への追加
 utils、middlewares などディレクトリを追加
 どうしても標準のディレクトリ構成だけでやるには、
 少し厳しさを感じます。
 


Slide 15

Slide 15 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. Fresh ベースで開発で役に立ったこと
 - ページテンプレートコンポーネントの導入
 
 - fresh が提供している preact用のコンポーネントHead
 htmlのhead要素への要素追加ができます。
 
 import {Head} from “$fresh/runtime.ts”

Slide 16

Slide 16 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. まとめ
 - 約5年前に開発したサービスを復元を試みたら
 - 利用技術も
 - インフラも
 - 開発体験も
   変わっていた
 - OSSのコントリビューターになるのは、
 好みのフレームワークの関連モジュールくらいだと、お手軽でおすすめ


Slide 17

Slide 17 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 今後の予定
 - サービスの正式公開: 独自ドメインも割当してから公開予定
 - このあたりのノウハウを...


Slide 18

Slide 18 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. 今後の予定
 - サービスの正式公開: 独自ドメインも割当してから公開予定
 - このあたりのノウハウを虎の穴ラボブログで、
 別のサービスとして公開していきます!


Slide 19

Slide 19 text

Copyright (C) 2021 Toranoana Inc. All Rights Reserved. ありがとうございました