私はだいぶ前からGASを利用してきているのですが、Googleの良いところでもあり悪いところでもあるのが密かに仕様変更するところです。いつの間にかロゴが変わり、いつの間にかログの出力方法も変わり、実行トランスクリプトが無くなりそうになり。大体の場合は改善のための仕様変更なのですが、場合によっては利用者の手間が増える場合があります。今回お話するライブラリ化もそのような困ったちゃんのうちの1つです。
ライブラリとはそもそも何なのかおわかりの方もそうでない方もいらっしゃると思うのですが、簡単に言い換えると開発したコードをインターネット上に公開して、他のプログラムからライブラリ化したコードを再利用できるスグレモノという感じです。
以前はGASをライブラリ化する際はそれほど手間もかからずに、Qiitaのこちらのページにあるようにほんの少しの手順でライブラリ化が可能でした。しかしながら、今はこの方法ではライブラリ化を行うことができません。いくつかのページを行ったり来たりしなければならないためかなり手間が増えました。
ちなみに、上記のやり方で『公開』から『実行可能なAPIとして導入…』をクリックすると、このようなダイアログが表示されるようになっています。
いつの間にかこのような流れに変わっていましたので、今回の話は私がいろんなページを行ったり来たりしながらライブラリ化しようとしてとても焦ったお話を共有します。私と同じように迷子になる人がこれ以上出ませんように参考になればと思います。
ちなみにGoogle先生のLibraryの翻訳に一人で笑ってしまいました。スクリプトエディタを開いて、上部メニューから『リソース』→『ライブラリ』をクリックするとライブラリを追加するためのダイアログが表示されるのですが、そのダイアログがこちらです。
さて、それでは本題のライブラリ化のやり方についてご紹介していきます。
ライブラリ化の手順
① Google Cloud Platformにアクセス
② Cloud Platform プロジェクトの作成
Google Cloud Platformにアクセスしたら、まずは上部左上あたりにあるプロジェクトの選択というメニューをクリックします(下記スクリーンショットを参考にしてください)
メニューをクリックすると、『プロジェクトの選択』というダイアログが表示されますので、ダイアログの右上にある新しいプロジェクトという部分をクリックしてください(下記スクリーンショット参照)
画面が下記スクリーンショットのように『新しいプロジェクト』という表示に切り替わりますので、プロジェクト名を入力し、作成をクリックします。この際、プロジェクト名は既存のプロジェクト名と被らない一意のプロジェクト名をつける必要があります。
③ OAuth同意画面の
プロジェクトが作成できたら、次にOAuth同意画面の設定を行います。
まずは、Google Cloud Prlatformで、『プロジェクトの選択』をクリックし、先程作成したプロジェクト名を選択します。次に、左側にあるサイドバーの中から、『OAuth同意画面』という項目をクリックし、メインコンテンツエリア(サイドバーの右側)部分が『OAuth同意画面』の表示に切り替わったら、下記スクリーンショットの③クリックと書いてある部分の『アプリを編集』をクリックします。
『アプリを編集』クリックすると、画面が切り替わり、細かい設定を入力する画面が表示されます。この中で最低限入力が必要な項目は『アプリケーション名』のみとなります(今回は最低限必要な項目のみで説明を進めます)アプリケーション名を入力したら、画面をしたまでスクロールして『保存』ボタンをクリックします。
④プロジェクト番号のコピー
保存ができたら、画面の左上にあるGoogle Cloud Platformのバナーをクリックします。すると、下記のスクリーンショットのような画面が表示されますので、『プロジェクト番号』と書かれた部分にある実際のプロジェクト番号をすべて選択し、コピーしてください。ここまでできたらGoogle Cloud Platformのページは閉じてしまって構いません。
⑤ スクリプトエディタでプロジェクトの関連付けを行う
スクリプトエディタに戻り、画面上部の『リソース』→『Cloud Platformプロジェクト』の順番にクリックします。
Cloud Platformプロジェクトというダイアログが表示されますので、中央部分にある『ここにプロジェクト番号を入力』と書いてある部分にコピーしたプロジェクト番号をペーストして、『プロジェクトを設定』ボタンをクリックします。
すると、確認ダイアログが表示されますので、確認ボタンをクリックします。
今回は先程とは違う新しいダイアログが表示されます。バージョンに『新規作成』を選択し、バージョンに説明書きを入れたければ任意の説明を入力(ライブラリとして利用する際にライブラリ追加先のスクリプトエディタからこの説明欄まで確認することができます)してください。スクリプトにアクセスできるユーザーは『自分のみ/全員』が選択できます。APIを実行ができる人の設定ですので、自分だけが利用するのであれば自分のみ、他の方も使用するのであれば全員を選択肢、『配置』をクリックします。
これで、開発したシステムをAPIとして導入することができました。配置をクリックしたあとは、APIキーというものがシステムから生成され、このキーを用いて他のスクリプトからAPI化したスクリプトへのアクセス設定ができるようになります。ちなみに、API化したスクリプトのファイル名は、他のスクリプトにライブラリとして登録する際にタイトルとして表示されますので、わかりやすい名前をつけることをおすすめします。
デフォルト値では、『APIのファイル名.関数名』として関数を実行することができます。(例)ファイル名が『ExcutableApi』で、関数名『excute』を実行する場合は、ExcutableApi.excute()という形式で実行ができます。ExcutableApiという部分はライブラリ設定側のスクリプトエディタから任意の値に変更することも可能ですが、デフォルト値としては、APIのファイル名に設定されています。やろうと思えば日本語を設定することもできます。その辺りは好みに合わせて各自調整を行ってみてください。
API化設定時の注意点
コードをAPI化して誰でも使えるようにする際に、注意しなければいけないことがいくつかあります。
-
秘匿性の高い情報をコードに入力しない
-
コードの編集権限は付与しない
-
APIを乱用しない
コードを全員が使用できるようにすることは、コードに記載された内容を誰でも確認することができるということと同義ですので、秘匿性の高い認証情報(Credentials)などはコードに直書きしないようにしましょう。APIキーだけではAPI化されたスクリプトエディタに直接たどり着くことはできませんが、そこから得られる情報をつなぎ合わせるとスクリプトにアクセスすることができますので、この点に関しては絶対の注意が必要です。
また、上記とも関連しますが、編集権限を付与してしまうとAPIの内容を変更することができてしまうので、注意が必要です。
最後にAPIを乱用しないというのは、API使用するときと使用しないときで同じ処理を実行するとAPIを使用するほうが処理速度が遅くなります。
便利だからと大量のAPIを利用しているコードは効率的とは言えず、処理時間が無駄に長くかかってしまいますので、あまり乱用しないようにすることをおすすめします。
まとめ
今回はコードをAPI化する方法を学びました。API化することは繰り返し使用する処理や、私のブログのように他の人に使ってもらうようなコードを提供する際にはとても有効な手段です。以前はとても簡単にAPI化することができたのですが、最近は準備が複雑化しているようで、その手順をこちらのページでまとめています。おそらく、初めてAPI化するときには何をすればいいかよくわからないと思いますので、こちらのページを参考に進めてもらえればと思います。
コードをAPI化することは便利ではありますが、注意しなければならない点もいくつかありますので、使用する際には注意点にも留意して利用してください。