こんにちは、広報の坂井です。
本日3月28日、VASILYテックブログが公開されました!タイトルは『APIを長く運用するための仕組み化』、担当はバックエンドエンジニアの北條です!
今回もどんなことが書いてあるのか、執筆者本人に解説してもらいました!
ー 今回のブログ、どんな内容が書いてあるのでしょうか?
VASILYが運営するIQONは様々なコンテンツや膨大な情報が入っていますが、 ここまで規模の大きなサービスを開発していくには、共通のルールを決めてみんなで守っていくことが大切です。そして、単にルールを作るだけでなく、仕組み化していくことで開発者個人ごとのブレをなくしています。今回は、具体的なルールと仕組み化の方法を紹介しています。
ー 具体的なルールとは?
サービスを運用していくために、VASILYでは以下のルールを設け仕組み化しています。
- APIのレスポンスを統一する
- デコレーターを使ってレスポンスの定義を綺麗に書く
- パラメーターを統一する
- Validatorによりパラメーターの明記を強制する
- コーディング規約を守る
- LinterとSideCIを導入して修正とレビューの自動化
- Linterのルールを適度に調節する
ー …難しいルールですね(笑)「1. APIのレスポンスを統一する」とはどういうことでしょうか?
すごくシンプルなんですよ!「レスポンスを統一する」とは、例えばアイテムについての情報が、どんな場合でも統一されたフォーマット(値段、タイトル、カテゴリーなど漏れがない状態)できちんと返ってくるようにすることです。
ー そのために行った仕組み化が、「デコレーターを使ってレスポンスの定義を綺麗に書く」ということですね?
はい!デコレーターという、コードを綺麗に書くテクニックを使い、統一されたフォーマットを別のファイルに切り出して見やすくすることで、開発のブレをなくしています。
例えば、社内の様々な情報を1つのExcelファイルにまとめているとします。これを社員全員で共有していると、だんだんどこに何が書いてあるか分からなくなってしまい、他の人が同じ内容を追加してしまったり、間違った読み方をしてしまったりしまうかもしれません。そうならないよう、「顧客リスト」「売上」など、細かく分けたシートを用意していますよね?こんな感じで、ファイルを切り出すことで、整理しています!
ー 分かりやすい!次に、「2. パラメーターを統一する」とは?
「パラメーターを統一する」とは、システムに対する指示の仕方を統一するということです。
このルールを守るために、「Validatorによりパラメーターの明記を強制する」という仕組みを導入しています。
Validatorとは、システムへ指示を送った際に、事前にその指示が妥当なものかをチェックしてくれるもので、これを厳しくすることで、開発者へ強制的に指示の仕方を一覧リストへ明記させています。これにより、様々な指示が送られることを防ぎ、システムを使いやすくしています。
ー 「3. コーディング規約を守る」とは?
「コーディング規約を守る」とはそのままの意味で、皆で規約を作り、それを守っています。しかし、ただ規約を定めたとしても、意識のみで守り続けることは難しいので、チームでコーディング規約を守るために行った仕組みを紹介しています。
具体的には、LinterとSideCIというシステムを導入し、コーディング規約のチェックを自動化しました。
Linterとは、コーディング規約に反している場合指摘をしてくれるツールです。SideCIとは、Linterが指摘したことについて、具体的にコメントとして残してくれるサービスです。この2つを使うことでコーディング規約のチェックを自動化し、人の手間を省いています。
また、「Linterのルールを適度に調節する」というのも行っています。Linterの初期設定はかなり厳しく設定してあるため、直す必要がない部分まで指摘されることがあります。これを調整することで、必要な指摘のみ受けてチームの士気を下げないようにしています!
ー なるほど、とても細かいルールを設けて運用していたんですね!
はい、ルールを決めるだけでなく仕組み化まで行うことで、長い間運用することができます。あまりややこしいルールばかり決めても、守っていくのは大変なので、シンプル且つ自動化しているところがポイントだと思います!
ありがとうございました!
VASILYでは各チームごとにルールをつくり、VASILYが大切にしている価値観である『HIPSTER』の“T”チームワークを発揮できるように工夫しています。
HIPSTERについてはこちらをご覧ください。
あなたもVASILYの技術者と共に働いてみませんか?18年新卒募集を開始しました!
ご応募お待ちしております!
【お問い合わせ】
株式会社VASILY 広報担当
press@vasily.jp