GoogleCloudのGAEを使ったWebAPI作成方法


現在(2018/08/13)Googleで12か月無料のサーバを使えると聞いたので、それを使うためのメモ。

まずは登録

参考:ゼロから始める Google App Engine の使い方

Google Cloudでは、無料トライアル登録の際にクレジットカードの番号入力を求められるがこれは個人特定のために必要なものらしい。
今のところ何の請求も来てないので多分大丈夫なのだろう。

上記のリンク先記事は一年前のものになるが使い方は変わっておらずそのままの手順で登録・使用開始することができた。

環境設定

Google Cloud SDKをインストールが完了するとshell画面入力でログインやアップロードができるようになる。
使いたいフォルダをshift+右クリックするだけでPowershellをそのフォルダで開けるのでそれを使うとちょっと楽

またXAMPPなどのlocal環境が作れるソフトとAtomなどのテキストエディタを用意しておくと開発がしやすかった。

コマンド

基本的に使うコマンドは二つ
gcloud init と gcloud app deploy
initでログインして、deployでアップロードするだけでサーバにデータを送信できる。
一応ページを確認したければ、gcloud app browseのコマンドで確認できるが別に使わなくてもいい

PHP

echo,変数

PHPにはC言語と違い変数型宣言が不要で変数名を$から始めることで区別している
「''」で文字列を定義し、「.」で文字列結合ができる。便利
表示するときはechoと使えばHTML表示される

$TEXT = 'TEST TEXT';
echo '入力テキストは' . $TEXT . 'です。';
実行結果:
入力テキストはTEST TEXTです。

GET,POST

HTMLのURLから情報を取得するには_GETを使えばその名前の値を拾うことができる
逆に送りたいときは_POSTを使えば情報添付して送信できる。
PHPでフォームからデータを受け取る方法

$Input = $_GET['in'];  
$Output= $_POST['out'];

保存先

Google Cloudで厄介なところとして、localとデータの保存されるところが違う
本来なら

$Fulename = 'test.txt';
file_get_contents('./' .$FileName);

これでtest.txtを開くことができるのだが、Google Cloudだと

$Fulename = 'test.txt';
file_get_contents('gs://xxxxxxxxxx.appspot.com/' .$FileName);

になる(xxxxxxxxxxはプロジェクト名)
localとGoogle Cloudを手動で変える必要があるので、注意する必要がある。

define("FILE","./");

で定義しておけるので適時コメント化すれば少し楽になると思う。

yamlって何よ

app.yaml の作成
Google App Engine にデプロイするには「app.yaml」という設定ファイルが必要になります。
設定ファイルは、YMAL(ヤムル)というフォーマットで記述します。

とのこと
正直使ったことがないので全く意味が分からなかったが要するに
HTMLとしてサーバを使うときに「どの言語で記述されている」かと「どこにアクセスするとどの機能が動くか」が書いてあるようだった

- url: /.*
  script: xxx.php

これでプロジェクトのどこにアクセスしてもxxx.phpが起動することになる。

- url: /a
  script: a.php

- url: /.*
  script: xxx.php

- url: /b
  script: b.php

このように2つ以上書く時には上から順に割り当てられていきa.phpにはアクセスできるがb.phpにはアクセスできなくなる(xxx.phpにつながってしまう)ので注意が必要
他にもいろいろ機能があるようだが詳細はGoogle Cloud Configuration Filesに書いてある

おわりに

PHPにGETやPOSTを送ってDBにアクセスするサーバサイトを作りたくて適当に調べたもののまとめ
英語が読めればもっと詳しく書いてあるものもたくさんあったんだろうけども英語ばっかりなのがつらたんです(´・ω・`)
Google Cloudの無償期間を過ぎた後も個人利用程度なら無料で使えるようなので、これを使って遊んでいきたいなーと思ってます。