さて、前回ついに自作のライブラリを作成して利用してみました。
確認されたい方は、こちらの記事をご確認ください。
さて、今回は自作ライブラリを作るときのtipsや留意点・注意点を何点か紹介していきます。
自作ライブラリ作成の際の参考にしてください。
Tips List
Tips プロジェクト名はライブラリ名
プロジェクト名がライブラリ名になります。そのため、ライブラリとして利用者が何ができるものなのかわかる名前にすることがいいです。
例えば、抽象的な以下のような名称をつけると何のライブラリなのか判断が付かなくなります。
❌ usefull_library ❌ general_method_library
そのため、便利ライブラリで紹介したような、何をするためのどういうライブラリなのかがわかる名称にするのがいいです。
⭕️Slack API Library for Google Apps Script ⭕️OAuth2 for Apps Script
Tips 公開しない関数を作成する方法
ライブラリを作成していると内部利用だけの関数とかアクセスして欲しくない関数も一緒にライブラリ対象に含まれてしまう場合があります。
そのような場合に非表示の関数を作る方法があります。以下のような関数名の付け方です。
function AAA_(){
....
}
関数名の最後に_(アンダースコア)をつける、という方法です。
一般的な関数のプライベート化は関数名の前に_(アンダースコア)を付けますが、ライブラリでの非表示化の場合は、関数名の後にアンダースコアをつけるのでご注意ください。
Tips オートコンプリート機能をサポートする
JS Docを作成する必要があります。githubにあるjsのclosure complierを貼っておきます。
ただ、残念ながらGASにおいては、全てのJSDocアノテーションが利用できるわけではなく、以下しか利用できないとドキュメント上記載されております。

正直私も全て試したことはないのですが、基本@paramと@returnだけしか利用できないと想定してDocを組んでいく必要があります。
Tips 関数を全てローカルスコープに閉じ込めておく(即時関数の利用)
メジャーなライブラリをみてもらうとよくわかるかと思いますが、だいたい最初から()で全てが括られています。
これは、グローバルスコープを利用することなく、ローカルに閉じ込めておくことで、不要な動作を呼び起こさせないための工夫となります。
Attention List
注意点1 Active系のメソッド
ライブラリはあくまで利用される側の環境で呼び出されます。そのため、アクティブ系のmethod( activespreadsheet/ activesheet/ activecellなど)は呼び出し側環境のスプレッドシートのアクティブなものを取得してしまいます。
もちろんそれを狙うメソッドということであれば、いいですが、ライブラリ元のデータを送りたいみたいなことはactive系メソッドを使ってはできないのでご注意ください。
注意点2 runtime version相違
ライブラリがインポート先の環境で利用されるということは、当然動くスプリクトのベースもインポート先の環境で設定されているものということになります。
そのため、rhino環境ベースで作成されたライブラリをV8ベースの環境にインポートして利用しようとした場合、エラーを起こす可能性があります。
注意点3 ライブラリの方が遅い?
絶対とまでは言い切れないのですが、ライブラリを利用した方が遅くなる場合があります。
これは、呼び出し管理とうが絡むからなのでしょうが、まぁJSでもCDNの呼び出しとかを不要な物は最後に持ってきますし、ライブラリが遅いのは最低限仕方ない面もあるかなと思います。
どの程度GAPが出るのかはライブラリによりけりでしょうから、あまりに遅いようで、そのライブラリ自体が公開されているのであれば、直接内部に取り込んだ方がいいかと思います。
まとめ
まだまだデバックモードの利用や色々説明してもいいかなと思う情報もありましたが、長くなってきたので今回はこの辺までで。
皆さんもぜひライブラリ作成してみて、関数の共通利用を促進してみてください。
人にライブラリ見せるとなると書き方含めて考えることになるので、非常にいい勉強にもなります。
関連記事: ライブラリ〜外部ライブラリ利用と自作ライブラリの作成〜
外部ライブラリの利用方法や自作ライブラリの作成方法を紹介していきます。外部ライブラリ活用による開発の簡易化や自作ライブラリ作成による共通関数の使い回し方法など。