快適な開発環境を手に入れる

偉大なるオープンソース開発者達の努力と Visual Studio Code のような IDE (統合開発環境) の進化により、 私達は快適な開発環境を手に入れることができました。

Active Record と Scaffold

私達は Ruby on Rails を手にした時の感動を忘れられません。クラウドネイティブな環境でも同様の開発体験を実現したいため Active Record を採用し、分散システム用にスキーマ駆動 Scaffold を再構築しました。

RBS/Steep によるタイプチェック

rbs

RBS/Steep による型安全な開発環境の提供は不要なミスを減らし、かつ大規模なアプリケーションの構築をより安全にし、チームのアジリティも高く保ちます。

RuboCop によるコード統一

歴史的に私達はまるで石版のような難解なコードに悩まされてきました。コーディングスタイルの統一はコードベースに秩序と透明性をもたらします。シンプルに読みやすいコードは管理しやすいコードです。

RSpec を使ったテスト

テストはすぐにフィードバックを返してくれるため、変更がシステムのほかの部分に悪影響を及ぼしてもすぐ発見できるようにしてくれます。コード単体ごとに独立した検証を行い、バグが入り込むのを防ぎます。

GitHub Actions (CI/CD)

コミット毎に小さく自動デプロイしていくことでコード統合による問題を最小限に抑えます。テストが失敗すればエラーを本番環境に持ち込むことはないため、結果を確認し落ち着いて修正を行うこともできます。

GraphQL API

速度、柔軟性、開発者にとっての使いやすさを向上させるために設計されており、実行を確認できる統合開発環境(IDE)も提供します。複数のデータソースから取得するリクエストを 1 つの API 呼び出しで構成できます。

固定 IP 制限に対応

複数のインスタンスにスケールしてリクエストを処理する分散システムでは固定 IP 制限に対応するのが難しい経緯がありました。SOULs ではこの問題を Cloud NAT を使用することで解決しています。

Effortless Routing

ルーティングの作業は単純ですが広範囲に渡り、ミスも多くなりがちです。SOULs では GraphQL の Query や Mutation はもちろん、Pub/Sub ワーカーのトピック含め極力ルーティングに関する作業は自動化しています。

Docker コンテナ

インフラをコード化しファイル共有することでどこでも同じ環境を作れるようにします。ローカルの開発環境やクラウド上の本番環境等の環境差異に悩まされることなく再現可能なインフラ上で開発を続けることができます。