Ruby on RailsでつくるAPI(導入編)

やぎすけAdventCalendar2016 Rails

Posted on Dec 21


こんにちは、やぎにいです。 やぎすけ Advent Calendar 2016の21日目です。
今日を含め残り4日。頑張っていきましょう。

昨日は僕が今更理解するREST(ful)についてを書きました。

今日からはRuby on Railsを使ってAPIをつくってみるという企画記事をやってみたいとおもいます。


はじめに

今回作るAPIはTHE IDOLM@STER(以下アイマス)APIになります。
リポジトリはGitHub - yagi2/imasapirailsです。

もともと実はFuelPHPを使ってGitHub - yagi2/imas_apiを作っていて、それを自宅のサーバで動かし身内のSlackでわいわい使っていた過去がありました。
自宅のネットワークが一度リセットされたことをきっかけにこのAPIは停止し、長らくメンテ更新もしないままとなっていました(キャラデータもほとんど無かったけど)。

ちょうどそこにRuby on Railsの5ではAPIモードというのが存在するという情報を得たのがつい先月の事。前々からRubyもといRailsには興味があったので、うなすけの力を借りつつこのRails5のAPIモードで作ってみようと思ったのがきっかけです。

機能的には簡単なものを考えていて、URIを指定してGETすると、アイマスのキャラなり楽曲なりのデータがjsonで返ってくるような物を考えています。
目的はトレーニングと自分で使う目的ですし。


とりあえず作ってみる

Rails5はインストールされている前提でいきます。

1
$ rails new imas_api_rails --api

この--apiオプションを指定してあげるとAPIモードでの生成をしてくれるらしい。調べたところに寄るとAPIモードとそうでないときの差分はViewとかそういう部分のファイルらしい。

とりあえずキャラクターの情報を得たいのでcharactersというコントローラーを作ってみる

$ rails g scaffold characters `

これでcharacters_controller.rbとかが作成された。

適当にschema.rbにキャラのスキーマを作ってみる

1
2
3
4
5
create_table "characters", force: :cascade do |t|
    t.string "name"
    t.string "phonetic"
    t.string "production"
end

カラムは増やす予定だが、とりあえず名前とふりがなとプロダクション。 そしてrails db:migrate

db/seeds/characters.ymlにデータを書いてみる。

1
2
3
4
5
6
7
8
9
10
characters:
  -
    name: '天海春香'
    phonetic: 'あまみはるか'
    production: '765'
  -
    name: '如月千早'
    phonetic: 'きさらぎちはや'
    production: '765'
...

そしてrails sしlocalhostでcharactersを叩いてみると

おお、それっぽいjsonが返ってきた。

なんかFuelPHPのときはもっと時間がかかった気がするが、railsだと概ね数時間で知識がなくともここまですることが出来た。
データの充実度は考えないとしても、「アイマスのキャラの情報が/charactersを叩くとjsonで返ってくる」というAPIが出来てしまった。
同じようにスキーマを設定し、データを書き/songsとかを作れば同様に楽曲のデータも同じように得られるAPIを作れるはず。

これは……ハマってしまう。

次は

では全部ではなく、クエリで名前の一部を投げるとそれに合致したものだけが返ってくるなどの絞込をしたい。
でも、全部欲しいときは全部欲しいです。

そんな実装ともっとrailsのコマンド(特にDBの挙動がイマイチ理解できていない)を深めていきたいと思います。

うなすけは今のところ監督とテストおじさんとして貢献して頂いています。



comments powered by Disqus

<< Ruby on RailsでつくってみるAPI(2日目)     今更理解するREST(ful)について >>



2016 やぎ小屋