YOUTRUSTのRails APIのソースコードを公開しました。

こんにちは、YOUTRUSTのやまでぃ(YOUTRUST/Twitter)です。

前回の記事より半年振りの登場です。

最近のわたくし事ですが

昨秋から新しくピアノをはじめました!(夏に友達から電子ピアノを譲ってもらってたのを秋になってようやく開封した)

取り敢えずYouTubeで「ピアノ Summer」と検索して、出てきた動画を繰り返し何度も観て手を動かす所からはじめました。(ここ数ヶ月間は世界で一番Summerを再生していた人かもしれない)

そしてひょんなことから、プロの音楽家や愛好家の方々の前でグランドピアノを弾ける機会にも恵まれました。(初心者OKの参加型イベント)

定期的に新しい環境に身を置いてLv.1になってみるの大事だなぁと思いました。(次何やろうかな)

グランドピアノなんて初めて触ったよ

今回は何書くの?

「YOUTRUSTのバックエンドを支えてくれているRailsのサンプルコードを公開しました!」という告知です。

github.com

前回の記事では「YOUTRUSTがどのようにRailsを使っているか」をテキストや断片的なサンプルコードで紹介しましたが、今回はよりその具体度を上げて、実際に動くコードとして公開レポジトリにまとめてみました。

どんなコードが含まれるの?

下記APIを実際にYOUTRUSTのコーディングスタイルに合わせた形で実装しました。(RSpec付き)

  • ユーザーリスト取得API
  • つながり申請の送信API
  • つながり申請の承認API
  • つながり申請の既読API
  • 受信したつながり申請リストの取得API
  • 送信したつながり申請リストの取得API

取得系は、「Queryを用いてフィルター&ソート済みのIDsを取得するAPI」と「IDs指定でリソースを取得するAPI」に分けて実装しています。

更新系は、Controller→UseCase→CommandとNotificationと責務を分けて実装しています。

  • あくまでサンプルコードであり、脆弱性があるコードを一部含みます。
  • 実際のユートラのProductionコードよりもシンプルな仕様にしてはありますが、書き方は現場のコードに非常に近いものとなっています。
  • 今後、フロントエンド(React)などにも対応予定。(予定)

サンプルコードを用意したモチベーション

全エンジニア間で、最新のコーディングスタイルの共通認識を持てるようにするためです。

キャリアSNS「YOUTRUST」はサービスリリース(2018年4月20日)からもうすぐ5年経ちます。

その間の、

・エンジニアメンバーの成長や入れ替わり(勿論自分含む)

・当初想定していなかった仕様への(締切に追われて止むなく取ってしまった)アドホックな対応

・流行りのライブラリ

などなどが原因となり、新旧さまざまなスタイルのコードが生まれてきました。

理想としては、コーディングスタイルの変更があった場合には既存のコードをすべてリファクタリングして最新のコーディングスタイルに合わせる運用ができればよいのですが、現実的ではないと思います。(AIをうまく利用すればできるのだろうか…)

さまざまなスタイルのコードがレポジトリに含まれていることはある程度は受け入れるべきものだと判断はしつつも、それでも何かスタイルの指針となるものがないと、引き続き各々が自由に実装し過ぎたり古い書き方を参考にしてしまってコード全体のエントロピーが更に増大し、将来技術的負債となって開発速度や品質の低下を招いてしまう恐れがあると思います。

そこで、最新版のコーディングスタイルを具体性のある小さなサンプルコードで表現し、その共通認識をチームで持てるようになれば、コード全体のエントロピーのこれ以上の増大は防げるのではないかと考えました。

そして折角作ったのであれば別に隠すものでもないし、ついでにYOUTRUST社内のRailsノウハウを世界にも公開することで、Railsコミュニティに少しは貢献できるのではないかとも思い、今回公開に至りました。

終わりだよ

ここまで読んでいただきありがとうございました!今回の記事はいかがでしたか?

最後になりますが、サンプルコードは公開レポジトリなので「ここ間違っているよ」「こここうした方が良いんじゃない?」「ここなんでこうなっているの?」などありましたら、ドシドシissueなりPRなりを送っていただければと思います。

それでは、また次回の記事でお会いいたしましょう!またね!

P.S. もちろんWebエンジニアの採用もしておりますので、下記も是非チェックしてみてください〜! herp.careers