初老プログラマのREST API

REST APIって?

RESTは、Representational State Transferの略で、複数のソフトウェアを連携させるのに適した設計原則の集合、考え方。

  • ステートレスなクライアント/サーバプロトコル
    • サーバーもクライアントも状態を記憶しておく必要がない
  • すべての情報(リソース)に適用できる「よく定義された操作」のセット
    •  “GET”, “POST”, “PUT”, “DELETE”を利用してリソースを操作する
  • リソースを一意に識別する「汎用的な構文」
    •  リソースはUniform Resource Identifier (URI) で表される一意的な(ユニークな)アドレスを持たせる事で一意にアクセスできる
  • アプリケーションの情報と状態遷移の両方を扱うことができる「ハイパーメディアの使用」
    •  多くはXMLを利用する。JSONなど他の表現方法でも問題なく利用できる。こうした文書に情報およびその他のリソースへのリンクを含め、辿る事で情報を横断的に取得することができる。

簡単な例として、ゲームに登場するキャラクター情報を作成・取得・更新・削除するようなシステムをRESTなAPI経由で操作する事を考えてみましょう。

RESTなAPIの場合はキャラクター情報にURLが対応します。キャラクター番号1番に対して操作するなら以下の感じになります。

上記の処理では、キャラクター情報の作成・取得・更新・削除に対して一つの”/character”をURLに対応づけしています。

https://grezzo.co.jp/character/1/ (実際にアドレスは実在しませんよ)

キャラクターID等は”/character”と共にURLに含んでシステム側に渡しており、
HTTPの一般的なリクエストメソッドを使用して「GET」なら取得、「POST」なら新規作成、「PUT」なら更新、「DELETE」なら削除のように処理を決定しています。

仕様書とチケットの連携

私がゲーム開発を始めた頃はEメールすら無かったので、付箋などメモベースで仕事をしていました(バグはVHSビデオで報告され塔の様でした…)が、IT化が進んでからはメールによる作業依頼に変わっていきました。

しかし、メールには作業依頼だけではなく不具合報告、連絡や情報共有の為の通知など多くの内容が送られて来るので、受信箱は常にパンパンで何をするべきか探すのも大変。
しかもメールは個人の情報。メールの内容を他人が見ることも出来ないので、忙しい事や手伝える事を知ることも出来ません。
そこで、作業や不具合修正の内容を掲示板の様に登録するWEBサービスを使った、チケット駆動型の開発が現在では一般的です。

Redmineはプロジェクト管理ができるオープンソースソフトウェアで、登録されているチケットを分析してチームの進捗状態を把握する事が出来ます。

Redmineは単体でも非常に便利なソフトウェアですが、REST APIを使って他のソフトウェアと連携すると、さらに便利になります。
例えば仕様書と進捗状況を合わせる事を考えてみましょう。

成長システムや戦闘システムなどゲーム全体に関わる仕様を大局的仕様。キャラクターなど限られた範囲の仕様を局所的仕様と私は切り分ける事にしています。
局所的な仕様は開発全体のページから分離した方が閲覧しやすいので、REST APIを使ってページをカスタマイズする事が多いです。

例えばキャラクターの仕様なら、キャラクター一覧のページから、プログラミングするキャラクターのページを開くと、作るべき仕様やアート、アニメーションの一覧など注意書きが書かれています。
そのページに、RedmineのREST APIを使ってデザインのチケットやモデリング、アニメーション、エフェクト、効果音など担当者の名前。さらには作業内容や不具合内容のチケット一覧が表示される。
こうする事で、そのキャラクターに必要な情報を一つにまとめる事が出来ます。

レシピと注文票を合体させたと想像すると近いかもしれません。

REST APIと老後の準備

状態を持たないステートレスな仕様、HTTPとXMLで簡単に実装できる事から多くのソフトウェアに採用されています。
RubyやPythonなど軽量プログラミング言語を使って簡単にリソースを操作するソフトウェアを作る事が出来るので、シングルボードコンピュータ Raspberry PiとRubyで投資ロボットを自宅で作ってみました。

ドルコスト平均法という定期的に定額分購入する投資手法があります。
証券会社様が公開しているREST APIを利用して、定期的に指定した金額分購入するプログラムを自宅のRaspberry Piにて稼働させました。

2018年2月14日から2018年12月28日まで運用した実現損益のグラフ(評価損益ではありません)です。投資にはリスクが伴いますが、偶然にも良い結果を得る事ができました。

このようにREST APIは様々なサービスを簡単につなげる事が出来るので、アイデア次第でさらに様々なサービスを作り出す事が出来るすごい技術です。

開発環境の改善に興味がありませんか?

扱うデータが大変巨大になり、開発を補助する開発というのも日々大きくなってきました。
開発環境に興味のある方は採用窓口までご連絡下さい。お待ちしております。