Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
事業とRubyとアプリ開発/Business and Ruby and App development
Teruhisa Fukumoto
June 24, 2020
Programming
0
69
事業とRubyとアプリ開発/Business and Ruby and App development
Gotanda.rb #43の登壇資料です
https://gotanda-rb.connpass.com/event/178017/
Teruhisa Fukumoto
June 24, 2020
Tweet
Share
More Decks by Teruhisa Fukumoto
See All by Teruhisa Fukumoto
teruhisafukumoto
2
380
teruhisafukumoto
1
55
teruhisafukumoto
0
470
teruhisafukumoto
0
190
teruhisafukumoto
2
7.4k
teruhisafukumoto
5
550
teruhisafukumoto
0
320
teruhisafukumoto
1
1.7k
teruhisafukumoto
1
610
Other Decks in Programming
See All in Programming
korosuke613
2
270
takapdayon
0
180
mrtc0
2
1k
antonshilov
1
130
oracle4engineer
0
120
joergneumann
0
150
temoki
3
230
manfredsteyer
PRO
0
240
ianaya89
2
230
manfredsteyer
PRO
0
160
ybrliiu
0
110
numeroanddev
1
240
Featured
See All Featured
qrush
285
19k
marcelosomers
221
15k
tmm1
61
9.4k
akmur
252
19k
cherdarchuk
71
260k
dotmariusz
94
5.5k
sferik
610
55k
yeseniaperezcruz
302
31k
smashingmag
230
18k
jcasabona
8
560
dougneiner
55
5.4k
rasmusluckow
318
18k
Transcript
事業とRubyとアプリ開発 2020/06/24 Gotanda.rb #43 @terry_i_ MedPeer, inc. - Engineer
Agenda 自己紹介 事業ドメイン Railsバックエンドとgem アプリ開発におけるRuby まとめ
自己紹介
福本 晃之 Teruhisa Fukumoto MedPeer, inc. Web Developer Gotanda.rb /
.js Organizer f-teruhisa @terry_i_
出したばかりのこちらの記事をベースに、もう少しRuby側の 事例やコミュニティについて踏み込んで話します 今日話すことは... URL: https://tech.medpeer.co.jp/entry/2020/06/22/121153
Rubyでお金を稼ぐ仕組み 事業ドメイン
• 定期検診で引っかかった方が対象 • 主に食事面から生活習慣の改善をサポート • 食のtoBサービスみたいなイメージ 特定保健指導事業
健康保険加入者 お金の流れ 健康保険組合 健康保険料 特定保健指導の 委託 特定保健指導 特定保険診査と 特定保険指導を依頼
None
• 予防医療の領域を食の観点からケア • 医療費削減などの背景で重要視される • 労働者の健康を守る 社会的意義
作られたのがこちら
今回話すのは ここ (Rails) ここ (Swift)
DietPlus dietplus-server (管理画面/バックエンド)
• アプリもWebも両方ともカバー • 必要なライブラリが充実 • ソフトウェアを継続的に発展していける 受けているRubyの恩恵について話します
使用技術と工夫 Railsバックエンドとgem
さきにこちらを話します ここ (Rails)
• 管理画面 • アプリのAPI • その他バッチ処理など Railsバックエンドの役割
複数のアプリを同じ管理画面で管理 DietPlus DietPlusPro
関連ライブラリやgem(一部)
認証 / 認可まわり Banken Sorcery ユーザーの認証 (アプリ/管理画面) ユーザーの権限管理 (管理画面)
• 画面ごとに権限を管理したいので便利 (Controllerベースで管理できるため) • アプリ間をmoduleで切っており、ひとつの Modelに複数のControllerがアクセスする可 能性 Banken
Bankenでテスト
• 権限管理が複雑に... ◦ 権限が複数あるアプリが複数ある ◦ コンテキストをコードで残しづらい 懸念 権限はビジネスにつきものなので、 うまくやる方法を模索したい
Sorcery • Admin::UserとUserで共通で使っている • 基本的にはメールでの認証 • 特定保健指導の画面はPINコードを使用
• 自分たちでコードを書く量が多い ◦ 自チームの責任で保守できる ◦ gemのお作法に気を使いすぎなくて良い ◦ コードに合ったテストを書きやすい Sorcery(vs devise??)
(※前職でdeviseを使ってました)
ちょっとメンテナンスが...?? • 最近Rails6対応されましたが... • Rails3のテスト記法が残ってるそう
houston iOSまわり venice iOSアプリでの サブスクリプション課金 アプリへのPush通知を 設定、送信
欲しいものがだいたい Rubyコミュニティにある
• iOS最新バージョンへの追随が少し遅い • 例: houstonがiOS 13のheader未対応 ◦ gitオプションでチートしてケア 懸念
• 代替手段があるので個人的にはOKの範疇 とはいえ... サブスクリプション課金 Push通知
アプリ開発でのRubyの存在感 アプリ開発におけるRuby
次はこちら ここ (Swift)
DietPlus
• アプリを通じて、食生活の改善を行う • 管理栄養士から食事にコメントが来る • イメージ的にはFiN•の人力版 DietPlus
主要ツール
えっ、SwiftのコードベースでRubyの話を? (※MobiRubyとかの話ではないです...)
1. bundlerやgemの存在感 2. Clean Architecture(VIPER) DietPlus開発でのRubyみポイント (前提: これまでiOS開発には触れたことがない)
①bundlerやgemの存在感
DietPlusでcloc
環境構築時
Rubyみの例 fastlane (CI/CDツール) CocoaPods (Xcodeの依存管理) bundler (割愛)
• Ruby製のbundlerやgemを多く使う • bundlerの使用感はRailsと変わらない 日本の開発者コミュニティはRubyが活発なの で、Ruby発信で色々OSSが盛り上がると◎ 意外とRubyが使われている
他の言語やフレームワークで 使われているのを見ると嬉しい 感じたこと①
②Clean Architecture(VIPER)
DietPlusはVIPERで設計
• Clean Architectureの一種 • 単一責任の原則に忠実 • Entityにドメインロジックを閉じ込め、アプリの 依存関係を外に切り出していく VIPER(諸説あり) 『iOS
Project Architecture : Using VIPER [和訳]』 https://qiita.com/YKEI_mrn/items/67735d8ebc9a83fffd29
• 実際Entityはかなり薄い ◦ 設計できてる前提 • 適切にPresenterとかに 処理を切り出せてる ◦ ControllerはFatになりづらい DietPlusのEntity(例)
RubyだとHanamiっぽいなと ※個人的にHanamiをDocker上で動かして遊んだりしてましたhttps://github.com/f-teruhisa/hanami-tutorial_with_docker
• moduleたくさん切って責務分けたり • ActionClass切って1画面≒1Controllerな所 • RepositoryパターンでDBとアプリを分離 ふたつのArchitectureに触れて設計の学びに HanamiとClean Architecture HanamiがそもそもClean
Architectureに影響を受けている https://techracho.bpsinc.jp/hachi8833/2018_03_28/54381
他の言語を触っていても 参考になりそうな色々な発見がある 感じたこと②
まとめ
• Rubyコミュニティの充実度はやはり良い • 他の言語やFWに思わぬ関連や学びが まとめ この恩恵を受けて、事業とソフトウェアを継続して 作っていけるのはすごく良い体験
Thank you!! @terry_i_ MedPeer, inc. - Engineer