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
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
190
AWS DevOps Agentで インシデント対応をAIに任せたい
honmarkhunt
7
2.8k
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
110
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
430
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
300
ALB ログから Trace を気合で繋げる技術
fohte
7
890
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2k
AHC070解法紹介
eijirou
0
110
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
240
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
Intent as Code
shoppingjaws
6
970
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
330
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
500
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
530
Between Models and Reality
mayunak
4
450
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Ruling the World: When Life Gets Gamed
codingconduct
0
330
Odyssey Design
rkendrick25
PRO
2
800
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
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 ご清聴ありがとうございました