Open8
Locoを使いこなしたい話

Loco
ってなあに?
Loco
は、Ruby on RailsライクなRustのフレームワークであると認識していれば大体OKです。
公式ページに飛んだらデカデカと It’s Like Ruby on Rails, but for Rust. って書いてあります。
Railsによる良い開発体験を、パフォーマンスと安全性の高いRust言語上で実現するというのが目的なんだと思っています。
scaffold
が使える!
Railsでは、MVCの仕組みを採用しており、scaffold
というコマンドによって
新しいスキーマを扱いたい時、そのスキーマに関するファイルを生成してくれます。
なんと!Locoにもあります!とても嬉しいですね!
Node.js(Express)や大元のRailsより速い!
なんとNode.jsと比較して10倍の速度が得られる可能性があるとのことです
じゃあRailsからお引越しした方がいい?
Rustでプログラムを書くことに慣れてからの方がいいでしょう

必要なものを入れよう
cargo install loco
cargo install sea-orm-cli # DBを扱うことが必要なときに導入
Locoのアプリケーションを作成する
loco new
を実行すると
- アプリケーション名
- どんなものを作成するか?
- どのDBを使用するか?
- バックグラウンドで動作するワーカーはどのようなものがいい?

Locoの開発サーバを立ててみよう
今回は
項目 | 回答 |
---|---|
アプリ名 | backend |
作成コンテンツ | Saas App with client side rendering |
使用DB | Postgres |
バックグラウンドで動作するワーカー | Async (in-process tokio async tasks) |
で作成する

そうすると、以下のようなディレクトリ構造のもと、様々なファイルが生成される
[命名したフォルダ]
├── config
├── examples
├── frontend
├── migration
├── src
├── target
└── tests

GitHubリポジトリ

さ〜て今回作るものは〜?
お薬飲む時間通知サーバ
法に触れないかがこわかったので聞いてみた
とても良い質問ですね!個人で「薬の飲み忘れ防止プログラム」を作成・公開する場合、日本では いくつかの法律や規制との関係を把握しておく必要 がありますが、基本的に**「医療行為」や「薬機法(旧・薬事法)」に触れないよう注意すれば大丈夫**です。
以下に主なポイントをまとめます👇
✅ 問題になりにくいケース(多くの場合これに該当)
- 単に「服薬の時間を通知する」「ユーザーが設定した内容をリマインドする」などの一般的なリマインダーアプリである。
- 薬の種類や効能についての診断や助言をしない。
- ユーザー自身が入力した薬の情報を使っているだけで、開発者側が処方や助言をしない。
この場合は、医療行為ではなく、生活支援アプリとみなされるため、基本的に法律に触れることはありません。
⚠️ 注意が必要な点
-
薬機法(旧・薬事法)
- 医薬品の「効能・効果」をうたうと広告規制に触れる可能性があります。
- 例:「この薬を飲めば必ず治る」といった表現はNG。
-
医師法・薬剤師法
- 診断や処方を行うと医師でなければ違法行為になります。
- 例:「この薬を飲んでください」「あなたにはこの薬が合います」などの助言は禁止。
-
個人情報保護法
- 薬の服用履歴は場合によっては要配慮個人情報とされる可能性があります。
- 特にクラウド保存する場合は、適切な取り扱い・プライバシーポリシーの整備が必要です。
💡 安全に公開するためのコツ
- アプリやサービスの説明には「医療・診断・処方を目的としたものではありません」と明記する。
- 「ユーザーが入力した服薬時間を記録・通知するアプリです」と明確に説明する。
- 万が一のため、プライバシーポリシーと利用規約を用意しておくと安心です。
もし具体的な機能構成や表現を考えている場合、それがグレーかどうかチェックもできますよ!
どういった機能を想定していますか?✨

データ定義

scaffold
という機能で一気に生成しちゃう!
さて、scaffold
で爆速開発をしていきましょう!
まずは、それぞれのモデルを生成する必要があります!
# Medicineモデルの作成(既存のUserモデルへの参照)
cargo loco generate scaffold Medicine user:references name:string! count:int! --api
# CronTimeモデルの作成
cargo loco generate scaffold crontime medicine:references hour:int! minute:int --api