事業とRubyとアプリ開発/Business and Ruby and App development

事業とRubyとアプリ開発/Business and Ruby and App development

Gotanda.rb #43の登壇資料です
https://gotanda-rb.connpass.com/event/178017/

Bfc42a2fb137897db919bac632c83085?s=128

Teruhisa Fukumoto

June 24, 2020
Tweet

Transcript

  1. 事業とRubyとアプリ開発 2020/06/24 Gotanda.rb #43 @terry_i_ MedPeer, inc. - Engineer

  2. Agenda 自己紹介 事業ドメイン Railsバックエンドとgem アプリ開発におけるRuby まとめ

  3. 自己紹介

  4. 福本 晃之 Teruhisa Fukumoto MedPeer, inc. Web Developer Gotanda.rb /

    .js Organizer f-teruhisa @terry_i_
  5. 出したばかりのこちらの記事をベースに、もう少しRuby側の 事例やコミュニティについて踏み込んで話します 今日話すことは... URL: https://tech.medpeer.co.jp/entry/2020/06/22/121153

  6. Rubyでお金を稼ぐ仕組み 事業ドメイン

  7. • 定期検診で引っかかった方が対象 • 主に食事面から生活習慣の改善をサポート • 食のtoBサービスみたいなイメージ 特定保健指導事業

  8. 健康保険加入者 お金の流れ 健康保険組合 健康保険料 特定保健指導の 委託 特定保健指導 特定保険診査と 特定保険指導を依頼

  9. None
  10. • 予防医療の領域を食の観点からケア • 医療費削減などの背景で重要視される • 労働者の健康を守る 社会的意義

  11. 作られたのがこちら

  12. 今回話すのは ここ (Rails) ここ (Swift)

  13. DietPlus dietplus-server (管理画面/バックエンド)

  14. • アプリもWebも両方ともカバー • 必要なライブラリが充実 • ソフトウェアを継続的に発展していける 受けているRubyの恩恵について話します

  15. 使用技術と工夫 Railsバックエンドとgem

  16. さきにこちらを話します ここ (Rails)

  17. • 管理画面 • アプリのAPI • その他バッチ処理など Railsバックエンドの役割

  18. 複数のアプリを同じ管理画面で管理 DietPlus DietPlusPro

  19. 関連ライブラリやgem(一部)

  20. 認証 / 認可まわり Banken Sorcery ユーザーの認証 (アプリ/管理画面) ユーザーの権限管理 (管理画面)

  21. • 画面ごとに権限を管理したいので便利 (Controllerベースで管理できるため) • アプリ間をmoduleで切っており、ひとつの Modelに複数のControllerがアクセスする可 能性 Banken

  22. Bankenでテスト

  23. • 権限管理が複雑に... ◦ 権限が複数あるアプリが複数ある ◦ コンテキストをコードで残しづらい 懸念 権限はビジネスにつきものなので、 うまくやる方法を模索したい

  24. Sorcery • Admin::UserとUserで共通で使っている • 基本的にはメールでの認証 • 特定保健指導の画面はPINコードを使用

  25. • 自分たちでコードを書く量が多い ◦ 自チームの責任で保守できる ◦ gemのお作法に気を使いすぎなくて良い ◦ コードに合ったテストを書きやすい Sorcery(vs devise??)

    (※前職でdeviseを使ってました)
  26. ちょっとメンテナンスが...?? • 最近Rails6対応されましたが... • Rails3のテスト記法が残ってるそう

  27. houston iOSまわり venice iOSアプリでの サブスクリプション課金 アプリへのPush通知を 設定、送信

  28. 欲しいものがだいたい Rubyコミュニティにある

  29. • iOS最新バージョンへの追随が少し遅い • 例: houstonがiOS 13のheader未対応 ◦ gitオプションでチートしてケア 懸念

  30. • 代替手段があるので個人的にはOKの範疇 とはいえ... サブスクリプション課金 Push通知

  31. アプリ開発でのRubyの存在感 アプリ開発におけるRuby

  32. 次はこちら ここ (Swift)

  33. DietPlus

  34. • アプリを通じて、食生活の改善を行う • 管理栄養士から食事にコメントが来る • イメージ的にはFiN•の人力版 DietPlus

  35. 主要ツール

  36. えっ、SwiftのコードベースでRubyの話を? (※MobiRubyとかの話ではないです...)

  37. 1. bundlerやgemの存在感 2. Clean Architecture(VIPER) DietPlus開発でのRubyみポイント (前提: これまでiOS開発には触れたことがない)

  38. ①bundlerやgemの存在感

  39. DietPlusでcloc

  40. 環境構築時

  41. Rubyみの例 fastlane (CI/CDツール) CocoaPods (Xcodeの依存管理) bundler (割愛)

  42. • Ruby製のbundlerやgemを多く使う • bundlerの使用感はRailsと変わらない 日本の開発者コミュニティはRubyが活発なの で、Ruby発信で色々OSSが盛り上がると◎ 意外とRubyが使われている

  43. 他の言語やフレームワークで 使われているのを見ると嬉しい 感じたこと①

  44. ②Clean Architecture(VIPER)

  45. DietPlusはVIPERで設計

  46. • Clean Architectureの一種 • 単一責任の原則に忠実 • Entityにドメインロジックを閉じ込め、アプリの 依存関係を外に切り出していく VIPER(諸説あり) 『iOS

    Project Architecture : Using VIPER [和訳]』 https://qiita.com/YKEI_mrn/items/67735d8ebc9a83fffd29
  47. • 実際Entityはかなり薄い ◦ 設計できてる前提 • 適切にPresenterとかに 処理を切り出せてる ◦ ControllerはFatになりづらい DietPlusのEntity(例)

  48. RubyだとHanamiっぽいなと ※個人的にHanamiをDocker上で動かして遊んだりしてましたhttps://github.com/f-teruhisa/hanami-tutorial_with_docker

  49. • moduleたくさん切って責務分けたり • ActionClass切って1画面≒1Controllerな所 • RepositoryパターンでDBとアプリを分離 ふたつのArchitectureに触れて設計の学びに HanamiとClean Architecture HanamiがそもそもClean

    Architectureに影響を受けている https://techracho.bpsinc.jp/hachi8833/2018_03_28/54381
  50. 他の言語を触っていても 参考になりそうな色々な発見がある 感じたこと②

  51. まとめ

  52. • Rubyコミュニティの充実度はやはり良い • 他の言語やFWに思わぬ関連や学びが まとめ この恩恵を受けて、事業とソフトウェアを継続して 作っていけるのはすごく良い体験

  53. Thank you!! @terry_i_ MedPeer, inc. - Engineer