Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
ブログを自作した話 0Yu 隅田川.dev vol.1
Slide 2
Slide 2 text
0yu(おゆ,ぜろゆー) ● 北海道出身 好きな技術 ● Webフロントエンド、Rust 趣味 ● 映画鑑賞・旅行・ゲーム etc ● 最近はハイラルの勇者をしています 自己紹介 っっっz yud0uhu 2
Slide 3
Slide 3 text
● 自作マークダウンパーサーで動く技術ブログを自作した はじめに
Slide 4
Slide 4 text
フロントエンド ● Next.js/Type Script ● Apollo Client ● styled-components + emotion(mantine) 技術仕様
Slide 5
Slide 5 text
バックエンド ● Rust+WebAssembly(マークダウンパーサー) ● Express ● GraphQL Yoga ● Prisma Photos ● Vercel Postgress 技術仕様
Slide 6
Slide 6 text
ホスティング ● Vercel 認証・認可 ● NextAuth 技術仕様
Slide 7
Slide 7 text
Introduction to Apollo Client 特徴 ● GraphQLを使用してローカルデータとリモートデータを管理する JavaScript向けの包括的な状態管理ライブラリ メリット ● クライアント側でデータのキャッシュやクエリの結果の追跡し、デー タフェッチと更新を効率化 ○ クライアント側のデータの変更に応じて自動的に再レンダリング を行ったり、必要なデータのみフェッチを行う Apollo Client
Slide 8
Slide 8 text
Vercel Postgres: Scalable SQL for the web 特徴 ● 2023年5月1日に発表された新機能のStorageサービスの一つ ● Vercelが提供するPostgreSQLベースのサーバレスデータベース メリット ● Vercelのデプロイメントフローと統合されているため、アプリケー ションとデータベースのデプロイが一括管理可能 ● オートスケーリングによりリソースの調整が容易 Vercel Postgres
Slide 9
Slide 9 text
NextAuth.js 特徴 ● Next.jsアプリケーション上で認証・セッション管理を行うためのラ イブラリ ● Google・Twitter・GitHubなど、OAuthを使った認証サービスが利 用可能 ● サーバーレス環境以外に、AWS Lambda、Docker、Herakuなど主要 なホスティングプロバイダ上で動作する NextAuth
Slide 10
Slide 10 text
GraphQLサーバーを開発する際に検討すること ● schema-firstかcode-firstか? schema-first ● スキーマを先に書き、スキーマから言語固有のコードを生成する code-first ● 言語固有のコードを先に書き、コードからスキーマを生成する code-first+TypeScriptなGraphQLライブラリ
Slide 11
Slide 11 text
GraphQL Nexus Nexus ● Apollo Serverに対応する型安全なGraphQLスキーマビルダーライブ ラリ ● スキーマ定義やリゾルバをもとにGraphQLスキーマを生成 ● 拡張性に優れており、カスタムスカラーやディレクティブ、中間オブ ジェクトタイプなどを簡単に追加できる ● Photosに移行する動きがある code-first+TypeScriptなGraphQLライブラリ
Slide 12
Slide 12 text
Prisma plugin for Pothos GraphQL Pothos ● prismaのデータモデリング言語を使用して、DBスキーマとGraphQL スキーマを自動的に生成 ● GiraphQL→視認性・検索性の観点から改名 メリット ● ランタイムのオーバーヘッドがなく軽量で高速 ● Nexusよりも型チェックが俊敏 code-first+TypeScriptなGraphQLライブラリ
Slide 13
Slide 13 text
● prismaObject でオブジェクトを、prismaField でフィールドを定義 する Pothosでスキーマを定義する
Slide 14
Slide 14 text
● Queryを投げて、データが取得できることを確認する 疎通確認
Slide 15
Slide 15 text
● Queryを投げて、データが取得できることを確認する 疎通確認
Slide 16
Slide 16 text
● Mutationを投げて、データが取得できることを確認する 疎通確認
Slide 17
Slide 17 text
● フロントエンドで記事のfeedを取得する
Slide 18
Slide 18 text
● submoduleで紐付けする ● クライアントでWASMを扱えるように、next.config.jsでWebPackの 設定を行う ● クライアントでsubmoduleのpkgをimportして使う 自作マークダウンパーサーの導入
Slide 19
Slide 19 text
● WASMビルド on Vercel ハマりポイント①
Slide 20
Slide 20 text
● Next AuthとVercel Hostingの噛み合わせの悪さ ○ Options | NextAuth.js ハマりポイント②