Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
個人ブログ作ってデプロイしました。
Search
Yuxki
April 17, 2024
0
49
個人ブログ作ってデプロイしました。
Yuxki
April 17, 2024
Tweet
Share
More Decks by Yuxki
See All by Yuxki
TypeScriptのクロージャで型エ ラーにハマった話
yuxki
0
18
N+1問題について調べてみた
yuxki
0
17
Conoha VPSでIaCはできる!!!
yuxki
0
130
チームでプロダクトを作る機会でタスクの自走に役立った、個人開発の経験や習慣。
yuxki
0
49
Featured
See All Featured
Visualization
eitanlees
148
16k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Making Projects Easy
brettharned
117
6.4k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Transcript
個人ブログ作ってデプロ イしました。 Yukihiro Uejo
自己紹介 New‼ • 自己紹介 ◦ エンジニア職への就職(アプリのバックエンド)を目指して、日々勉強中です。 経 験者と初心者の中間くらいだと思ってます。(実務2年 →個人開発3年) ◦
最近はご縁もあって、ベンチャー企業の手伝いもさせてもらってます。 ▪ PythonとPostgreSQL、時々TypeScript • 使用言語 ◦ Go言語、TypeScript、Python、SQL、AWK、Bash、Vimスクリプト、Scratch
ブログサイトをつくる必要ってある? • 世の中には便利なブログサイトが山ほどある。 • 現代のネット環境において、自分で作る理由はなかなか見つかるものではな い。 • ZennやQiitaで十分。そっちの方がLaprasやFindyで連携できるので、転 職にも有利に働くのではないか?
いやいや、
自分の秘密基地を持ち、カスタマイズし、自分 でデータを持ち、管理することに憧れがあるの です。
あえて具体的な理由をつけるなら • 発信活動を長続きさせるために、まずは愛着を持てるブログをつくろうと 思ったから。 • DBを使った動的ウェブサイトを作ってみたかったから。 • せっかく自分のためのアプリ公開基盤をつくったのだから、それを利用して みたかった。 •
ブログサイトを作る→ブログが書きたくなる→ネタ探しのために勉強する→ス キルが上がる。みたいな流れを期待しているから。
気持ちの後押しもありました • VimCon 2023 Tinyや、YAPC::Hiroshima 2024に参加し、少しでも自 分のスキル向上をしたい!発信活動も欠かさずやっていきたい!と背中を押 された気持ちになりました。
利用した技術 Conoha VPS(OpenStack) Ubuntu Alpine Linux Postgre SQL NextJS Terraform
Packer Next Auth Docker Swarm Docker Nginx
ブログの機能 • ログイン機能(Auth0によるOAuthを利用) • 記事の編集機能(Markdownで書く形式) ◦ タイトル、タグ、サマリー、本文 • 記事の公開・非公開機能 •
プロフィールの編集機能 ◦ プロフィール、Githubアカウント、Xアカウント、自分のホームページ
デモ blog.atoriegg.net
開発工程(DB編) • Postgre SQLと監視用のエージェントが入ったイメージを作成(Packer) ◦ Packerはサーバー仮想化やコンテナ仮想化で使うイメージを作成するツール。 • ConohaVPSにサーバーインスタンスを作成(Terraform) ◦ ConohaVPSはOpenStackを採用しているため、
IaC関連のインフラが利用できる!すご い! • スキーマとロールを設計して設定(手動) • マイグレーションを実行(Drizzle) ◦ DrizzleはTypeScriptのORMライブラリ
開発工程(アプリ編) • コンポーネントのデザイン(Storybook) • 単体テストを作成(Jest) • E2Eテストを作成(Cypress) • Github ActionsでCI・CDのワークフローを作成。
• アプリをプログラム(NextJS+TypeScript+Drizzle+NextAuth) ◦ NextAuthは認証、特にOAuthを楽に実装できるライブラリ。 • Dockerでイメージをビルド • AWSのECRにプッシュ
開発工程(デプロイ編) • ブログのドメインのためにサーバー証明書を更新 ◦ Let's Encryptを使わせてもらいました。 • ローカルネットワークのための、サーバ証明書を発行 ◦ プライベートCAを運用しているので、この工程が必要。
• Docker Swarmの設定ファイルを作成 ◦ 言わずと知れた、Docker内蔵のコンテナオーケストレーションツール ! • Portainrの設定 ◦ PortainerはDockerのコンテナを管理できる OSSのWebアプリケーション。 ◦ Kubernetesのダッシュボードのようなもの!多分。
ブログを開発して • 動的アプリをイチから開発して、イチからデプロイしたことはなかったの で、良い経験になった。 • 自分の作ったアプリで記事を書いて公開するというのは、心地が良い。 • 「不特定多数の人に対するサービスの開発」という目標に一歩近づいた。
反省 • 認証基盤は自作したかった。 ◦ できればGo言語で • 技術的に基礎的なことしかやれなかったのは残念。 ◦ あまり複雑なことはやっていない。 •
もっと面白い要素を加えられればよかった。 ◦ 独自インフラという特徴以外、オリジナリティーのある要素はない。
今後の展開 • OpenAIのAPIを使って、記事から自動的にサマリを作れるようにしたい。 • 画像の添付機能が欲しい。 • DBのバックアップは早めにとれるようにしたい。 • 動作が安定してきたら、ぜひOSSとして公開したい。
最後に • エンジニア職への就職のアドバイス待ってます!