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
Materia.pdf
Search
TakutoYoshimura
January 25, 2019
Technology
1
230
Materia.pdf
TakutoYoshimura
January 25, 2019
Tweet
Share
More Decks by TakutoYoshimura
See All by TakutoYoshimura
gcp_gke_infla_design.pdf
takutoyoshimura
0
300
Other Decks in Technology
See All in Technology
ナレッジワークのご紹介(第88回情報処理学会 )
kworkdev
PRO
0
190
聲の形にみるアクセシビリティ
tomokusaba
0
170
生成AIの利用とセキュリティ /gen-ai-and-security
mizutani
1
1.6k
AIエージェント、 社内展開の前に知っておきたいこと
oracle4engineer
PRO
2
110
ランサムウエア対策してますか?やられた時の対策は本当にできてますか?AWSでのリスク分析と対応フローの泥臭いお話。
hootaki
0
110
わからなくて良いなら、わからなきゃだめなの?
kotaoue
1
290
脳内メモリ、思ったより揮発性だった
koutorino
0
270
JAWSDAYS2026 [C02] 楽しく学ぼう!AWSとは?AWSの歴史 入門
hiragahh
0
120
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
420
タスク管理も1on1も、もう「管理」じゃない ― KiroとBedrock AgentCoreで変わった"判断の仕事"
yusukeshimizu
5
2.6k
IBM Bobを使って、PostgreSQLのToDoアプリをDb2へ変換してみよう/202603_Dojo_Bob
mayumihirano
1
320
Claude Codeの進化と各機能の活かし方
oikon48
22
12k
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
340
58k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
450
Designing Experiences People Love
moore
143
24k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
WENDY [Excerpt]
tessaabrams
9
36k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
51k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
390
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
120
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
150
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
380
Transcript
サービスバックエンドOSS Materia Takuto Yoshimura
[email protected]
自己紹介 本名 吉村 拓人 カラビナテクノロジー株式会社 社内のあだ名は つちろー 元はJava の金融系SIer 昨年より顧問エンジニアとしてElixir
でWeb システ ム開発はじめました
顧問エンジニアとは 月額定額で0 からのシステム開発をサポート Web サービス立ち上げのビジネスモデル構築など からお供いたします 数名の担当で複数のお客様のサービスを開発
2018 年の私
複数のお客様へ向けてWeb システム 開発を平行で行う日々
Phoenix が標準で担保しない、業務 システムでの必須機能 ユーザー認証機構(guardian) トランザクションスコープ 楽観/ 悲観排他ロジック etc
毎回実装するのがめんどくさ・・・
もとい、もっと開発生産性あげたい
共通機能作って再利用しよう
どうせならOSS として公開しよう
Materia とは 弊社カラビナテクノロジーで開発中の Elixir/Phoenix 製サービスバックエンドライブラリ SPA(Single Page Application) での開発を想定した バックエンドAPI
を提供 サービスとして特色のないユーザー管理や認証と いった部分のバックエンド機能を個別開発せず に、本来実装したいサービスの特色となる機能の 開発に注力 Qiita 記事: Web サービスバックエンドライブラリー Materia
Materia ファイミリー構成 MateriaUtils: 日付変換、Ector ラッパー実装など各 種ユーティリティ Materia: アカウント管理、JWT 認証、権限管理 MateriaCommerce:
商品・価格・税情報、購入契 約管理 他追加開発中
サービス構築時の構成 OriginalService = MateriaUtils + Materia + MateriaHogeHoge + OriginalElixirCode
導入のステップ |> deps.get |> config 設定 |> migration ファイル生成 |>
router.ex で必要な認証機構とAPI を定義 materia README
deps.get mix.exs defp deps do [ {:phoenix, "~> 1.3.2"}, ~
中略 ~ {:cowboy, "~> 1.0"}, {:materia, "~> 0.1.2"} # add here ] > mix deps.get
con g 設定 jwt 認証(guardian) の設定 Repo の設定 参考 materia
README Materia を導入してログイン認証してみる
migration ファイル作成 > mix guardian.db.gen.migration > mix materia.gen.migration > mix
ecto.create > mix ecto.migrate > mix run priv/repo/seeds.exs
ルーティング設定 pipeline で認証ロジックの設定 pipeline :user_auth do plug Materia.UserAuthPipeline end pipe_through
でAPI 毎にパイプラインを指定 scope "/api", MateriaWeb do pipe_through [ :api, :user_auth] get "/user", UserController, :show_me post "/grant", GrantController, :get_by_role end
ログインAPI リクエスト POST http://localhost:4000/api/sign-in HTTP/1.1 Content-Type: application/json { "email": "
[email protected]
",
"password": "hogehoge" }
ログインAPI レスポンス HTTP/1.1 201 Created server: Cowboy date: Fri, 14
Dec 2018 08:16:32 GMT content-length: 740 content-type: application/json; charset=utf-8 cache-control: max-age=0, private, must-revalidate { "refresh_token": "hogehoge", "id": 1, "access_token": "fugafuga" }