593 文字
3 分
路線情報・駅情報のREST APIサービスを作りました

概要#

https://train.teraren.com/

Ruby on Rails 7 + Tailwind + daisyui で作りました。

まだ、エンティティの一覧と取得しかできませんが、これから機能拡充をしていきます。ほしいAPIがあったら教えて下さい。

#

  • ある駅の周辺駅を近い順に表示
  • GraphQL対応
  • 駅の距離

API呼び出し例#

駅の名前と位置情報の一覧をCSVで取得する例

Terminal window
% curl -s https://train.teraren.com/stations.json| json_pp | jq '.[] | [.station_name, .lon, .lat] | @csv'
"\\"函館\\",\\"140.726413\\",\\"41.773709\\""
"\\"五稜郭\\",\\"140.733539\\",\\"41.803557\\""
"\\"桔梗\\",\\"140.722952\\",\\"41.846457\\""
"\\"大中山\\",\\"140.71358\\",\\"41.864641\\""
"\\"七飯\\",\\"140.688556\\",\\"41.886971\\""
"\\"新函館北斗\\",\\"140.646525\\",\\"41.9054\\""
"\\"仁山\\",\\"140.635183\\",\\"41.930011\\""
"\\"大沼\\",\\"140.669347\\",\\"41.971954\\""
"\\"大沼公園\\",\\"140.669758\\",\\"41.980958\\""
"\\"赤井川\\",\\"140.642678\\",\\"42.003267\\""
"\\"駒ケ岳\\",\\"140.610476\\",\\"42.038809\\""
"\\"東山\\",\\"140.605222\\",\\"42.06172\\""
"\\"姫川\\",\\"140.591632\\",\\"42.081312\\""
"\\"池田園\\",\\"140.700333\\",\\"41.990692\\""
"\\"流山温泉\\",\\"140.716358\\",\\"42.003483\\""
"\\"銚子口\\",\\"140.720656\\",\\"42.015471\\""
"\\"鹿部\\",\\"140.771393\\",\\"42.06439\\""
"\\"渡島沼尻\\",\\"140.747596\\",\\"42.10706\\""
"\\"渡島砂原\\",\\"140.689451\\",\\"42.12164\\""
"\\"掛澗\\",\\"140.64598\\",\\"42.119205\\""
"\\"尾白内\\",\\"140.613449\\",\\"42.111232\\""
"\\"東森\\",\\"140.59353\\",\\"42.106823\\""
"\\"森\\",\\"140.573846\\",\\"42.108917\\""
"\\"桂川\\",\\"140.5427876\\",\\"42.1156004\\""
"\\"石谷\\",\\"140.506525\\",\\"42.135519\\""
"\\"本石倉\\",\\"140.471957\\",\\"42.159668\\""
"\\"石倉\\",\\"140.458436\\",\\"42.17285\\""
"\\"落部\\",\\"140.420755\\",\\"42.187617\\""
"\\"野田生\\",\\"140.37586\\",\\"42.217104\\""
"\\"山越\\",\\"140.326593\\",\\"42.231172\\""
"\\"八雲\\",\\"140.273342\\",\\"42.253391\\""
"\\"鷲ノ巣\\",\\"140.269919\\",\\"42.278389\\""
"\\"山崎\\",\\"140.2746\\",\\"42.314635\\""
"\\"黒岩\\",\\"140.288173\\",\\"42.368296\\""
"\\"北豊津\\",\\"140.297868\\",\\"42.400969\\""
"\\"国縫\\",\\"140.320885\\",\\"42.439319\\""
"\\"中ノ沢\\",\\"140.346077\\",\\"42.477928\\""
"\\"長万部\\",\\"140.37507\\",\\"42.512477\\""
"\\"長万部\\",\\"140.37507\\",\\"42.512477\\""
"\\"二股\\",\\"140.320821\\",\\"42.575869\\""
"\\"蕨岱\\",\\"140.313353\\",\\"42.626353\\""
"\\"黒松内\\",\\"140.305704\\",\\"42.669608\\""
"\\"熱郛\\",\\"140.375084\\",\\"42.675653\\""
"\\"目名\\",\\"140.465742\\",\\"42.761432\\""
"\\"蘭越\\",\\"140.52894\\",\\"42.804542\\""
"\\"昆布\\",\\"140.596107\\",\\"42.797984\\""
"\\"ニセコ\\",\\"140.684588\\",\\"42.808746\\""
"\\"比羅夫\\",\\"140.722615\\",\\"42.84856\\""
"\\"倶知安\\",\\"140.745471\\",\\"42.90164\\""
"\\"小沢\\",\\"140.677657\\",\\"42.97185\\""

Tailwind良い#

最近、lighthouseでのベンチマークをしているとCSSやJSが重すぎるというアラートが出ています。

assetをprecompileすると一部のスタイルしか使わないのに全部を読み込まないといけなかったのが必要最低限の読み込みだけで済むようになりました。

おかげで、lighthouseのスコアがめちゃめちゃ高い!

しかしながら、TailwindはOSSでは無いので、今後長期的にコミュニティが乗っかってくるのかは不明です。

しかもライセンスの制約が厳しくて、コンポーネントの配布が制限されています。Twitter Bootstrapの場合はテーマがたくさん作られたことによって導入のハードルをかなり下げましたが、Tailwindはそのようなコンポーネントが制限されているようです。

じゃあ、このnpmは良いのか?って感じがします。。。

https://daisyui.com/

路線情報・駅情報のREST APIサービスを作りました
https://blog.teraren.com/posts/ekidata-api/
作者
Yuki Matsukura
公開日
2022-05-21
ライセンス
CC BY-NC-SA 4.0

コメント