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
文化祭で使うアプリを1人で作った話
Search
Ogata Katsuya
November 12, 2024
0
46
文化祭で使うアプリを1人で作った話
Ogata Katsuya
November 12, 2024
Tweet
Share
More Decks by Ogata Katsuya
See All by Ogata Katsuya
大学のサークルプラットフォームを作った話
ogatakatsuya
0
41
Go College
ogatakatsuya
0
56
twitter-cloneを作った話
ogatakatsuya
0
18
Featured
See All Featured
Designing for humans not robots
tammielis
253
25k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
720
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
4 Signs Your Business is Dying
shpigford
184
22k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
We Have a Design System, Now What?
morganepeng
53
7.7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
How GitHub (no longer) Works
holman
314
140k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Transcript
文化祭で使うアプリを1人で作った話 緒方 克哉
自己紹介 名前 : 緒方 克哉(おがた かつや) 出身 : 宮崎県小林市 所属
: 大阪大学 基礎工学部 情報科学学科 B3 趣味 : 登山 旅行 サウナ 役割 : アプリケーションエンジニア 屋久島登山 地元小林市 ブルネイのビーチ
• ユーザーがいるサービスを要件定義から実装(運用まで)行った際に 意識したこと・学んだこと • Bizサイドとのやりとりについて学んだこと • エムニでのインターンで学んだことをどのように実装に活かしたか 伝えたいこと
• 文化祭で謎解きを出展するので、その解答アプリを作成したい • 謎解きは質問を答えるごとに前の問題がヒントになったりするので、その場で解 答の正誤がわかる必要がある • 運営メンバーが10人弱なので最小限の人数で運営を行う必要がある • 文化祭は3日間にわたって行われ、大体600~700人がこのアプリを用いる •
1時間に3回のセットで謎解きが行われ、1回あたり10組づつアプリを用いる 概要
今回のサービスの難しいところってどこ? 難所 • 本当に使ってもらえるのか? • 限られた時間内で実装を行う必要がある • Bizとのコミュニケーション
目指すエンジニアのスタンス
アンチパターン 強いBiz 実装するDev
• BizとDevの関係をフラットに • BizがDevにお願いするという形ではなく、Bizはユーザーの価値を追求してそれを実現する ための手段をDevに要求する • Devは本当に必要なのか?また、いつまでにできるのか、もっと良い方法がないかを提案す る • 同じ価値をもっと簡単で、長期的にみて良い方法を選択する
• Dev側で責務を負うのではなく、運用でカバーできるのではないか?を考える • Devが不十分な意思決定だと思ったらBizに要求し返す • 意思決定の背景をきちんとはっきりとさせておく • 確信のある意思決定でない or ユーザー目線でない軸での意思決定は再考を促す エンジニアのスタンス
• 優先順位を明確に、最速で最良のものを作る • まずはDB構造を意識しながら認識を深めていく • 参加が個人だったところからグループに • 解答は複数 • 次にbackendの認識をすり合わせる
• スコアの付け方 • 管理画面ではどう言った操作が考えられるか • どう言ったページの遷移が行われるか • 最後にfrontendの画面構成 • figmaでデザインを起こしてもらう • できるだけ早めに作成してFBをもらって改善する 優先順位
ER図
APIサーバー
謎解き画面 CLE : https://www.cle.osaka-u.ac.jp/?new_loc=%2Fultra%2F
管理画面
開発環境
開発環境 •Dockerを用いて簡単環境構築 • ゆくゆくはDevContainerを使いたいなぁ。。 •CIを設けて、コード品質を担保する • Frontend: Biome, Build •
Backend: Ruff •エディタでも楽々開発 • BiomeとRuffを用いて保存時に自動フォーマット • npm runコマンドにして簡単実行 •OpenAPIを用いて型安全で簡単にAPI疎通をとる • こちらもnpm runコマンドにして簡単にclient更新
開発環境 Source : 新卒1年目が向き合う生成AI事業の開発を加速させる技術選定
インフラ
インフラ •とにかくお金をかけない構成 • AWSの無料枠をフル活用 • できる部分はサーバーレスに • フロントエンドはpushしたら自動更新される • バックエンドは更新負荷を少しでも下げるためにECRへのpushまでをactionsで自動化
• OIDCを用いた安全なCDを作成 • ref: https://zenn.dev/miyajan/articles/github-actions-support-openid-connect • 検証のために簡単にRDSにSQLを叩けるように踏み台サーバーを用意
今後の展望 • 本番3日間をどうにか成功させる • 1日目大丈夫そうだったら2,3日目は登山に行きます • バックエンドのテストを書きたい • 文化祭後の仮説検証のための開発 •
直接EC2経由でSQLを書いても良いが。。 • 時間帯ごと、人数別、問題セットごと、スコア平均 etc… • API実装?