Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
380
ECテックカンファレンス2023 EC事業部のモバイル開発2023
tatsumi0000
0
1.4k
MobileTechConference-1016
tatsumi0000
1
3.3k
Other Decks in Programming
See All in Programming
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
AIエージェント時代のコードレビューを設計する
nogu66
6
2.7k
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
320
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.3k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.1k
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
110
wkhtmltopdfの次どうするか問題2026
willnet
2
1.3k
速習iPhone Duo対応
yuukiw00w
1
560
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
110
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
340
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
250
SREの越境 / SRE Collaboration
y0hgi
2
220
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
109
250k
Unsuck your backbone
ammeep
672
58k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
YesSQL, Process and Tooling at Scale
rocio
174
15k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Abbi's Birthday
coloredviolet
4
10k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
WENDY [Excerpt]
tessaabrams
14
39k
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 ご清聴ありがとうございました