views4GCPのストレージサービスについてまとめてみた。Exp:190284普段はGCP専門のエンジニアをやっています。最近は個人的な活動としてGOとswiftでアプリ作ってます。G+TweetShareHatena注意この記事は2016年10月18日に更新されたもので、内容が古い可能性がありますのでご注意ください。iOSやAndroid等のクライアントアプリを開発する場合、サーバ側の開発も必要となるケースは多いと思います。APIを開発することになると思いますが、アーキテクチャスタイルとしてRESTを採用することは現在当たり前と言っても良いと思います。APIを利用したことがあるのではないでしょうか(APIをラップしたライブラリを使って無意識に利用している可能性もあります)。APIの活用はスマフォアプリに限らず、JSフレームワークを利用したWebサイトやloTデバイス等、Webに繋がる有りとあらゆるモノが対象となります。APIをGAE/GO上で構築する方法について解説します。APIを構築するためのライブラリやFWがいくつかありますが、本記事ではGAE上で動作するものを2つ程ピックアップして、構築の手順をそれぞれ説明していきます(※1)。本記事はGO言語を多少でも触ったことがあるユーザを対象にしています。そのため、基本的なGO言語の設定方法については本記事では説明しません。記事内容は前後編に分けて説明します。APIとはRESTの原則を満たしたAPIを指します。RESTの原則はいくつもありますが、代表的なものを上げると以下のようなものがあります。URIは一意なリソースを表現するリソースの扱いはHTTPメソッドで決まるRESTは決して複雑なものではなく、シンプルな設計をおこなうための設計スタイルです。上記の原則に沿って開発することで、非常に解りやすいAPIを構築することができるようになります。RESTは、前述したGoogleやTwitter等の大手IT企業だけでなく、Webサービスを展開する多くの日本企業にも広く利用されており、Webエンジニアにとっては現在なくてはならない存在になっているのではないでしょうか。API構築のためのフレームワーク・ライブラリ本記事では、以下2種類のREST用ライブラリ・フレームワークの導入方法について説明します。APIの構築には、以下2種類のフレームワークを同時に利用する必要はありません。本記事では、それぞれ独立した導入方法について説明します。Gorilla/muxGorillaはGO言語でWebプログラミングをおこなうためのツールキットです。API構築方法を説明します。EchoEchoはGO製の軽量Webフレームワークで、ルーティングやセッション、テスト等Webサービスを開発する上で必要になる様々な機能を提供します。非常に高速で導入もとても簡単です。Echoについては本記事の後編で取り上げる予定です。Engine上でおこないます。SDKのインストールをおこなってください。SDKのインストール手順については以下をご参考ください。APIのインターフェースを構築するためにはmuxパッケージを利用します。gorilla/muxは以下のコマンドでインストール可能です(※2)。サードパーティのパッケージをインストールするためには上記のgoコマンドを実行する必要があり、このコマンドを実行するためにはGOPATHの設定が必要となります。GOPATHの設定手順については以下を参考にしてください。パッケージのインストール先はこのパスによって決まります。https://github.com/astaxie/build-web-application-with-golang/blob/master/ja/01.2.mdGorilla/muxの利用方法Gorilla/muxの利用方法について説明します。APIのサンプルプログラムとその動作について解説します。URLマッピングまずは単純にURIとハンドラのマッピングをおこなう方法について説明します。}以上で、基本的なURLマッピングの設定手順についての説明は完了です。ここまでの説明で、任意のURIに対するハンドラがリクエストを受け付けるところまで実装できるようなりました。URIに挿入されたクエリパラメータを取得する前節では、任意のURIに対するハンドラがリクエストを受信するまでの実装方法について説明しました。次のステップでは、クエリパラメータをURI上から受け渡すためのルーティング設定とURI上のクエリパラメータをハンドラから取得する方法について説明します。1.クエリパラメータを含むURIのルーティング設定をおこなう定義するURIに{パラメータ名}を定義します。idというパラメータ名で値を取得したい場合は{id}を定義するURIに挿入します(※3)。*http.Request)からリクエストパラメータMapを取得し、パラメータ名{id}をキーにURIに挿入された値を取得します。定義するクエリパラメータについては、以下のように正規表現を利用することも可能です。以下の例では「/users/123」「/users/0」のようなURLで接続した場合に、マッピングしたハンドラが呼び出されます。「/users/abc」のような文字列が含まれたURIで接続した場合はハンドラは呼び出されません。UserHandler)アクセス元のホストを制限するアクセス元のホストを制限する場合は、以下のようにHost()関数を利用します。この設定によって対象ホスト以外からアクセスすることができなくなります。UserHandler)r.Host("www.example.com")HTTPメソッドを限定するHTTPメソッドを限定する場合はMethods()関数を利用します。この関数には複数のメソッドを登録することが可能です。以下は、GETメソッドでのみハンドラを呼び出しできるようにした例です。UserHandler).Methods("GET")JSON応答のサンプルプログラムを動作させてみる実際にサンプルプログラムをローカル環境で動かしてみます(Max/Linux環境を想定)。サンプルプログラムは、URIで渡したパラメータをJSONで返すだけの簡単なプログラムです。APIにはcurlコマンドで接続してみます。SDK、GO/muxのインストールが完了していることが前提となります。SDKのインストール」「Gorilla/muxのインストール」を読み直してください。1.ローカル環境にフォルダを作成する以下のコマンドを実行しプログラムや設定ファイルを同梱するフォルダを作成します。sample2.app.yamlの作成1で作成したフォルダに移動し、以下のファイルを作成します。app.yamlというファイル名で作成してください。app.yamlはローカル環境でアプリを動作させるための必須ファイルとなります。アプリケーションをGAEにデプロイする場合「application」にはGCPプロジェクトのIDを指定します。ローカル環境でアプリを動作させるだけの場合「application」の設定値は適当な文字列で問題ありません。上記ファイルでは「sample」という適当な文字列を指定しています。3.サンプルプログラムの作成1で作成したフォルダ内で以下のファイルを作成します。ファイル名は任意で構いません。以下のコマンドを実行する。引数には1で作成したフォルダのパスを指定します。/path/to/sample5.curlコマンドの実行4が起動したら以下のcurlコマンドを実行します。http://localhost:8080/api/users/12346.実行結果の確認5のコマンドを実行すると、以下のように結果が出力されます。GMT{"message":"id(1234)を取得しました"}以上で、サンプルプログラムの動作確認は完了です。サンプルプログラムを実際にGoogleのサーバにデプロイしたい場合は以下URLをご参考ください。API構築をおこなう手順の説明は完了です。Gorilla/muxの詳細を知りたい場合は以下のリファレンスをご確認ください。http://www.gorillatoolkit.org/pkg/muxまた、さきほど動作させたサンプルプログラム、または自作したアプリケーションを世界中に公開したい場合は以下のURLを参考にしてください。自分のアプリケーションをとても簡単に公開することができます。API構築手順について説明します。GorillaはWebアプリケーション開発のためのライブラリ集で必要なパッケージ毎にインストールが必要でしたが、EchoはライブラリではなくWebアプリケーションフレームワークです。軽量フレームワークではありますが、セッション・テスト・ロギング等Webアプリ開発に必要な様々な機能を搭載しており開発も活発に行われています。本格的なアプリケーションを開発する場合は、Echoを利用するケースが多いのではないでしょうか。次回記事もぜひチェックしてください。