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
gtb_presen
Search
Tatsumi0000
May 29, 2020
Programming
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
gtb_presen
Tatsumi0000
May 29, 2020
More Decks by Tatsumi0000
See All by Tatsumi0000
iOSDC 2024-08-21
tatsumi0000
0
350
ECテックカンファレンス2023 EC事業部のモバイル開発2023
tatsumi0000
0
1.4k
MobileTechConference-1016
tatsumi0000
1
3.3k
Other Decks in Programming
See All in Programming
Oxcを導入して開発体験が向上した話
yug1224
4
350
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
590
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.8k
AIで効率化できた業務・日常
ochtum
0
150
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
120
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
9.2k
Inside Stream API
skrb
1
810
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
210
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
250
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.1k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
220
Featured
See All Featured
Mind Mapping
helmedeiros
PRO
1
270
Designing Experiences People Love
moore
143
24k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
Designing Powerful Visuals for Engaging Learning
tmiket
1
430
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.6k
The SEO Collaboration Effect
kristinabergwall1
1
490
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
210
From π to Pie charts
rasagy
0
220
Scaling GitHub
holman
464
140k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
350
Transcript
None
2
ラテン語で「物々交換」という意味の「 Barter」が由来です。 コミュニティ内の交流が円滑をすることが目的なので、ナチュラル且つ「つな がり」を意識した配色とデザインにしました。 フォントは親しみやすく、遠目にみてもわかりやすい「うずらフォント」を利用し ました。 ロゴ編 3
メインカラーは、居心地がよい穏やかなグリーンにしました。 黒を使う場合は、グレーを使うことによってやさしさが損なわれないように 気を付けました。 カラー編 4
5
使った技術 • フロントエンド ◦ Vue.js(JavaScript) ◦ Vuetify ◦ VueRouter •
バックエンド ◦ Go言語 ◦ gorilla ◦ gorm ◦ jwt-go • インフラ ◦ ConoHaVPS ◦ nginx ◦ MariaDB • その他 ◦ git(GitHub) ◦ ESLint ◦ GitHub Actions ◦ GitHub Wiki ◦ Netlify ◦ ZenHub Renée French 6
フロントエンド • Vue.js(JavaScript) • Vuetify ◦ Vueアプリケーションで使える UIフレームワーク。簡単に「美しくモダンな UIデザイン」を実装することが 可能*1。
• VueRouter ◦ ルーティングを制御するための公式プラグイン *2。 7 *1 Vuetifyアプリを作成するための環境設定 https://rightcode.co.jp/blog/become-engineer/vuetify-create-application-environment (2020/05/28 アクセス) *2 今さら聞けない?Vue Router https://qiita.com/hshota28/items/765cf903f055754f7557 (2020/05/28 アクセス) GitHubリポジトリ
バックエンド • Go言語 ◦ 2009年にGoogleで開発されたコンパイル言語。 • gorilla/mux ◦ 軽量なWEBツールキット。ツールご毎にリポジトリが切られているため使用しない機能はインストール が不要。gorilla/muxはルーティングを提供。
• gorm ◦ ORM(オブジェクト関係マッピング)。カラムの中身は作ってくれない。 • jwt-go ◦ Go言語でJWT(JSON Web Token)を取り扱うためのライブラリ。 8 GitHubリポジトリ
データベース設計 9 ユーザを管理するテーブル ユーザを管理するモデル
データベース設計 10 ポイント履歴を管理するテー ブル ポイント履歴を管理するモデル
JWT(JSON Web Token) • 属性情報(Claim)をJSONデータ構造で表現したトークンの仕様*3。 • 署名、暗号化ができる。 • <ヘッダ>.<ペイロード>.<署名>で構成。 11
• 属性情報(Claim)の一部*4 ◦ sub ・・・ ユーザの識別子 ◦ name ・・・ フルネーム ◦ exp ・・・ 有効期限 ◦ iat ・・・ 発行した日付 *4 JSON Web Token (JWT) https://openid-foundation-japan.github.io/draft-ietf-oauth-json-web-token-11.ja.html (2020/05/28 アク セス)
JWT(JSON Web Token) 12 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTA3MTIwMTMsImlhdCI6IjIwMjAtMDUtMjlUMDg6Mj Y6NTMuNTQzNDcyKzA5OjAwIiwic3ViIjoxfQ.YkmabphLOip01LvajfO4wmdoRIIA2E6Y4Kl9oWk0qRc eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 . eyJleHAiOjE1OTA3MTIwMTMsImlhdCI6IjIwMjAtMDUtMjlUMDg6MjY6NTMuNTQzNDcyKzA5OjAwIiwic3ViIjo xfQ
. YkmabphLOip01LvajfO4wmdoRIIA2E6Y4Kl9oWk0qRc これを戻すと • ログイン成功時に返すJWTの例 分割
JWT(JSON Web Token) 13 JWT.io*5でデバッグ。 *5 JWT.io https://jwt.io/ (2020/05/28 ア
クセス)
14 バックエンドのディレクトリ構成 Makefile ・・・ Makefile go.mod ・・・ 依存関係のパッケージを管理* go.sum ・・・
パッケージごとのチェックサムを管理 *6 main.go ・・・ エントリポイントを管理 pkg ・・・ パッケージを管理 auth ・・・ 認証を管理 db ・・・ データベース操作を管理 handler ・・・ ハンドラを管理 model ・・・ データベースのモデルを管理 *6 Golangのパッケージ完全に理解した←わかってない https://note.crohaco.net/2019/golang-package/(2020/05/28 アクセス)
インフラ関連 15 • NginxによるWebサーバ機能の実装 ◦ Vue.jsで作成したWebページを公開できるよう、設定変更を行った。 • オレオレ証明書を用いたSSL機能の実装 ◦ httpsでアクセスできるようにはできたが、ドメイン取得までは行わなかったので、
証明書エラーまでは取り除けなかった。 • MariaDBを用いたデータベースの実装 ◦ 今回は実装に至らなかったが、このサービスで使用できる仮のテーブルの作成。
その他 • git(GitHub) • ESLint ◦ JavaScriptのための静的検証ツール *7。コーディング規約に準じていないとエラーを出す。スタイルは Airbnbスタイルにした。commit時に自動整形する。 •
GitHub Actions ◦ CI/CDツール。今回は、フロントエンド開発でのみ使用。 GitHubにpushすると自動でビルドし、 Netlifyへ デプロイする。高速でビルドするために、依存関係をキャッシュするようにした。 • GitHub Wiki ◦ VSCodeの設定やPR中のコードを手元でレビューする方法を記述。 • Netlify ◦ 静的サイトをホスティングするための Webサービス。 • ZenHub ◦ Issueをチケットとしてカンバン方式で進捗を管理できるプロジェクト管理ツール。 *8 16 *7 ESLint最初の一歩 https://qiita.com/mysticatea/items/f523dab04a25f617c87d(2020/05/28 アクセス) *8 「ZenHub×GitHub」を軸としたアジャイルプロセスの作り方 https://codezine.jp/article/detail/11346 (2020/05/28 アクセス)
GitHub Actions • キャッシュ ◦ キャッシュの設定をすることで、2分31秒→1分23秒に短縮。 17 キャッシュなし キャッシュあり
苦労した点(フロントエンド) • HTML/CSSが言うことを聞いてくれない。 • サーバサイドとの連携が途中までしか出来なかった。 • ローカルで開発した時とサーバに上げたときでなぜかレイアウトが違った。(もしかした ら、違うやつをアップした可能性があるかも …) 18
苦労した点(バックエンド) • 本格的なバックエンド開発は初めてだったので、色々苦労した。 • ORM(gorm)が言うことを聞いてくれなかった。(SQLを直で書いたほうが楽なのにという気持ち になった) • Go言語のディレクトリ構成のベストプラクティスが分からなかったので、適当に調べ て、取り敢えずそれっぽいディレクトリ構成にした。 19
苦労した点(その他) • gitでコンフリクト祭りの開催。 • ESLintの設定いらなかったかも。 20
21 ご清聴ありがとうございました