GAS (Google App Script) の Moment.js の出どころを調べる #gas

概要

GAS でも Moment.js が使えるらしいが、どこもプロジェクトキーを書いてあるだけだったりして、出どころがよく分からない。

そもそもプロジェクトキーはサポートが終了したようなので、スクリプトIDを知りたい。

Moment.js の公式サイトや GitHub リポジトリにそれっぽい話はない。

Google が作ってるって書いてある人もいるけど、ホントか。。?となったので調べてみた。

あるサイトからスクリプト本体へたどり着く

public な GAS ライブラリをまとめているっぽいサイトを見つけた。

Moment - GAS Library Management (public)

Moment.js が Google の下にあるが、そもそもサイト自体ももうメンテナンスされていないようである。

ただ、ここからスクリプトの本体にはたどり着けた。

https://script.google.com/a/connehito.com/d/MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48/edit?usp=drive_web

ライセンスとかも明記しているし、ちゃんとしている感。

バージョンは Moment.js 本体とは別物のようだ。

関係者っぽい人

同じサイトから、データの元になっているスプレッドシートを見つけた。

More Google Apps Script Libraries - Google スプレッドシート

「More Info」に期待してクリックすると 404 なのだが、URL を見ると今はなき Google+ で、アカウント名っぽいのは分かる。

https://plus.google.com/u/0/+EricKoleda/posts/ThnVjUgU3E9

んで、探してみると、 Google の中の人のようなことと、 GSuite 関連の開発をしている人っぽい。

https://twitter.com/erickoleda

https://github.com/orgs/gsuitedevs/people

Google+ の投稿が消えてるので想像になるが、おそらく「GAS で Moment.js 使えるようにしたぜ!」的なアナウンスだったんじゃなかろうか。

まとめ

結局個人でやったものなのか、Google として出しているものなのか確証はない。

GAS で公開ライブラリ探したり使ったりするときは皆どうしているのかな?

なんか GAS で外部ライブラリ積極的に使おうって気持ちにはならなかった(Google公式の拡張みたいなやつは別にして)。

「SCRUM BOOT CAMP THE BOOK」にコラムを書きました (そして旧版の思い出) #scrumbcbook #devsumi

5/20 に SCRUM BOOT CAMP THE BOOK の増補改訂版が発売されました。

学習と成長を促進する Scrum ですが、 Scrum 自身も成長を続けています。

スクラムガイドの改訂を取り込み、よりパワーアップしているので、ぜひ読んでみてください。

ご縁があって、僕もコラムという形で参加しています。

とても思い入れのある本なので、自分の名前が載ることになったのは非常に感慨深いものがあります。

発売イベントも開催予定(オンライン)なので、よかったら参加してみてください(枠追加されたようです)。

connpass.com

「SCRUM BOOT CAMP THE BOOK」の思い出

ここからはただの個人的な思い出話です。

旧版を読んだのは 2013年の2/14です。

なぜこんなに正確に覚えているかというと、デブサミの会場で購入したためです。

当時の僕はチームやプロジェクトのリーダーをやるようになっていて、ある程度の自信を付け始めていた頃です。

要件定義をして、設計してテストして。。みたいなことを割とうまくやっていたと思います。

そんな中、新規サービスの立ち上げに関わらせてもらっていたのが正にデブサミのタイミングでした。

event.shoeisha.jp

サービス開発において無力だった

新規サービスではそもそも要求や要件がまったく定まっていません。

ああでもない、こうでもない、という会議が繰り返され、一体いつになれば作り始められるのか、作り始めたと思ったらやり直し、ただ時間だけが過ぎていく。。そんな状況でした。

そんなとき、たまたま手にとったのが (旧)SCRUM BOOT CAMP THE BOOK でした。

すぐ読み終えた

帰りの電車で読み始めて驚きました。

不確実で不透明な状況に立ち向かうためのヒントが SCRUM BOOT CAMP THE BOOK には散りばめられていたからです。

そのままの勢いで読み進め、その日の夜にはもう読み終えていたと思います。

直人さんの話を聞きに行く

タイミングとは不思議と噛み合うもので、デブサミの二日目に著者の一人である西村直人さんのセッションがありました。

当然、是非話を聞きたいと参加を決めたのでした。

event.shoeisha.jp

Action!!

その年のデブサミのテーマは「Action」でした。

それゆえか、直人さんの話も何か「行動を始めよう」という主旨の話だったと記憶しています。

「ひとりでペアプロを始めた」という本気か冗談か分からない話を聞いて、自分は強く背中を押されました。

Scrum に大きな魅力を感じたのは間違いありませんでしたが、少し距離を感じていたのも事実です。

プロジェクト自体はウォーターフォールだし、チームのリーダーと言ってもサブチームの一つにしか過ぎないし、そもそも関われる範囲は開発に限られるし。。

やらない理由はいくらでもありました。

でもこの講演を聞いて、「できることは何か少しでもあるはずだ」「どんな形でもいいから始めるんだ」という気持ちに切り替わりました。

Scrum を始めてみた!

土日を挟んで週明け、「やり方を変えてみたい」と、チームのメンバーを集めて思いを伝えました。1

プロダクトバックログというよりも、Excel に書いたただの TODO リストだったかもしれません。

スクラムマスターも、プロダクトオーナーもいませんでした。

見積もりは、カードもないプランニングポーカーでした(せーので数字を言う、みたいな)。

でもあの時、一歩を踏み出したことから色々なことが動き出したと思っています。

何よりも、変化と学習と成長を楽しめるようになりました。

よりパワーアップした SCRUM BOOT CAMP THE BOOK が、僕と同じように、誰かが一歩を踏み出すきっかけになればいいなと思います。


  1. 当時「やってみましょう」と賛同してくれたメンバーのみんなには今でも感謝しています

「みんなの Java 」を読んだ

主に Java のリリースサイクルの変更とか、結局 JDK どれ選んだらいいの?みたいなところを整理したくて読んでみた。

関心が低いところは流し読みだったり全く読まなかったりした。

第1章 Java 9からJava 14までに起こった変化から見るこれからのJava

新しい言語仕様や標準ライブラリの変更が分かりやすく紹介されている。

すぐに使えそうなものも多いし、どんどん便利になっていてワクワクする。

ただ一方で今後も含めて出来ることが増えていくと、ベタープラクティスを見つけていくのが大変になるかもなぁと思うなどした。

第2章 JDKに関する疑問と不安解消!JDKディストリビューション徹底解説

ちゃんと理解できたかは怪しいけど、自分の扱う領域で考えるとしたら↓のような優先順位かなぁと思った。

  • 最新に追従していけるなら Oracle Open JDK
  • LTS を使うなら Amazon Corretto
  • 有償サポートを検討するなら Oracle JDK

第5章 ネイティブイメージ生成で注目! Javaも他言語も高パフォーマンスGraalVM

ユニバーサル VM すごい。

他言語の処理を手軽に十分なパフォーマンスで呼び出せるのは夢がある。

GraalVM のネイティブイメージがどんどん洗練されていったら、 Web なんかだとそっちを利用することの方が多くなるのかな。

今後も注目。

第6章 マイクロサービス,クラウド,コンテナ対応[新世代]軽量フレームワーク入門

もともとちょっと気になっていた Micronaut は AWS Lambda との連携も簡単にできるらしい。

「ドメイン駆動設計入門」を読んだ

ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本

ドメイン駆動設計入門 ボトムアップでわかる! ドメイン駆動設計の基本

  • 作者:成瀬 允宣
  • 発売日: 2020/02/13
  • メディア: 単行本(ソフトカバー)

最近は言葉が独り歩きしているような気もするドメイン駆動設計の本。

DDD に限らず設計の話は抽象的になりがちなので、この本は入門書として「実際のところコードはどんな感じに書くのよ?」っていうのが軸で分かりやすかった。

ただそれゆえにパターンの理解としてはいいんだろうけど、ドメイン駆動設計の本質的な、ドメインに向き合うことへどう繋げていくかというのが次のテーマになるんだと思う。

あと個人的に、コードの記述量やファイルが増える問題に対する解決策が自動生成というのはかなりもにょるのであった。

ドメイン駆動設計読書メモ · GitHub

Javaの単一ファイル実行を試してみる #Java

概要

みんなの Java 読んでいたら、Java の単一ファイル実行試してみたくなったのでやってみた。

環境

Mac で試した。

Java のバージョンは12。

$ java -version
openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment (build 12.0.1+12)
OpenJDK 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

単一ファイルで実行してみる

下記のようなファイルを App.java という名前で用意する

package myapp;

public class App {
    public static void main(String... args) {
        System.out.println("Hello");
    }
}

実行してみる。

$ java App.java
Hello

すごい。。感動する。

Shebang として実行する

手順は下記の通り

  1. 先頭に Shebang を書く
  2. ファイル拡張子を外す
  3. ファイルに実行権限をつける
#!/usr/bin/env java --source 12
package myapp;

public class App {
    public static void main(String... args) {
        System.out.println("Hello shebang Java!");
    }
}

Shebang--sourceJava のバージョンの指定が必要らしい。

$ mv App.java app # 拡張子を外す
$ chmod +x app    # 実行権限をつける

実行してみる。

$ ./app 
Hello shebang Java!

すごい!

小さなプログラムも Java で書きやすくなった!

Localstack の SQS を使ってみる #AWS

概要

AWS サービスの Mock ツール、LocalStack で Amazon SQS を使ってみました。

かんたんに扱えるので、ローカル環境での開発等に重宝しそうです。

github.com

Localstack の構築

いろんなやり方があるようですが、 docker-compose でやるのが楽そうです。

本家の docker-compose.yml を適当なディレクトリに配置して起動します。

https://github.com/localstack/localstack/blob/master/docker-compose.yml

TMPDIR=/private$TMPDIR docker-compose up -d

Mac で起動する場合、 $TMPDIRシンボリックリンクが含まれており、 Docker でマウントできないため、書き換えて起動します。

起動に成功すると、ブラウザからリソースが確認できるようになります。

http://localhost:8080/

awscli-local の導入

localstack を操作しやすいように awscli-local を導入します。

github.com

awscli だけでも使えるんですが、 --endpoint-url をいちいち指定する必要がなくなります

pip install awscli-local

キューの作成

SQS に local-sqs-sandbox という名前でキューを作成してみます。

awslocal sqs create-queue \
  --queue-name local-sqs-sandbox

キューを作成するとブラウザからも確認できるようになっているはずです。

f:id:su-kun1899:20200426212920p:plain
こんな感じ

メッセージの登録

作成したキューにメッセージを登録してみます。

awslocal sqs send-message \
    --queue-url http://localhost:4576/queue/local-sqs-sandbox \
    --message-body "test localstack sqs"

登録後、取得してみるとメッセージが取得できます。

awslocal sqs receive-message \
    --queue-url http://localhost:4576/queue/local-sqs-sandbox

もちろん削除もできます。 (ReceiptHandle は recieve すると分かります)

awslocal sqs delete-message \
    --queue-url http://localhost:4576/queue/local-sqs-sandbox \
    --receipt-handle "{ReceiptHandle}"

補足

  • docker-compose.yml環境変数をいじることで、起動するサービスを制限したり、Portを変更したりできます
  • Localstack は一部サービスを除いて永続化に対応していないため、基本的に停止したらリソースはいなくなります

「テスト駆動開発」を読んだ

テスト駆動開発

テスト駆動開発

  • 作者:Kent Beck
  • 発売日: 2017/10/14
  • メディア: 単行本(ソフトカバー)

自分程度のキャリアでも、テストを取り巻く環境は大きく変わったと思う。

テストコードは多くの場所で当たり前になった。

それでも、日々のプログラミング(テストコードに限らない)で「こういった場合はどう書くのがよいだろう」と考えるとき、この本の内容が今でも大きな助けになる。

t-wada さんによる訳者解説も面白くて役に立つ。