takanakahiko’s blog

多分三日坊主で辞めます。

Google Spread Sheetでライフゲームを作った

これは Spreadsheets/Excel Advent Calendar 2018 の5日目の記事です.

はじめに

Google Apps Script(GAS)という技術がある. Microsoft Officeで言うところのVBAにあたる,Googleが提供するサービスだ.

claspというツールが登場したことによってGoogle Apps Script(GAS)の開発が大変便利になった. 今回は,Google Spread Sheetにライフゲームを召喚しつつ,スプレッドシート x GASによる比較的新しい開発フローを紹介したい.

ちょっとITエンジニア寄りの話になってしまって申し訳ない.

前提

本記事では前提として

  • Node.jsがインストールされているPC
  • Googlのアカウントを持っている 
  • GASのことを多少理解している

を想定する

Claspとは

ClaspとはGoogleが提供する,GASをローカルで書けるツールである. ローカル,つまり自分のPCで書くことによって様々な恩恵を受けることができる.

例えば,ソースコードGitHubで管理できたりするわけだ.

今回はclaspのversion2を対象にする. ちなみに,version2は記事執筆時点でリリースされていないので,リリースまで待つ必要がある.

待てない人はGitHub上のソースコードからインストールする必要がある.

$ git clone https://github.com/google/clasp
$ cd clasp
$ npm i
$ npm run build-fresh

ライフゲームとは

以下を参照してください

ライフゲーム - Wikipedia

ソースコード

今回は,ソースコードの解説はしない.

github.com

興味ある方はこちらから確認していただきたい.

開発の流れ

実際に開発する流れを説明していく

Clasp によるプロジェクトの作成

Claspではブラウザを開かずともGASの作成が可能である. プロジェクトのディレクトリを作成,そこをカレントディレクトリとして以下のコマンドを実行する.

$ npm init
$ clasp create --type sheets --rootDir ./src

そうすると

Created new Google Sheet: https://drive.google.com/open?id=XXXXXXXXX
Created new Google Sheets Add-on script: https://script.google.com/d/YYYYYYYYY/edit
Cloned 1 file.
└─ appsscript.json

と表示される. このコマンドだけで,スプレッドシートとそれに紐付いたGASが作成される.

URLが2つ表示されるが,上記がスプレッドシート,下記がGASのものである.

ソースコードを記述する

カレントディレクトリに, src というディレクトリがあると思う. この中でソースコードを書いていくことになる.

凄いことにClaspによる開発ではTypeScriptが使用できる. そのためには以下のコマンドで追加でパッケージを追加する必要がある.

$ npm i typescript --save-dev
$ npm i @types/google-apps-script --save-dev

今回は,ライフゲームソースコードを用意したのでそれを使用する. 以下にソースコードがあるので,そのまま src ディレクトリにコピーすることで動くものは使えるようになるはずだ.( appsscript.json はコピーしなくていい )

github.com

プロジェクトへプッシュする

次に,記述したソースコードをプッシュする. 手元のソースコードGoogleさまのサーバへ送る訳だ.

以下のコマンドを実行する

$ clasp push

これだけ,たったこれだけでソースコードが送信される. 試しに以下のコマンドでソースコードが作成されたか確認してみる.

$ clasp open

そうするとブラウザが開きソースコードが記入されていることが確認できるはずだ.

トリガーの設定

さて,ライフゲームを実装したわけだが動かす手段がない. プログラムとしては update という名前の,スプレッドシートの内容を1段階進める処理があるのみだ.

今回は,スプレッドシートを適当に編集することでその処理が呼ばれるようにしていこうと思う.(我ながら強引だ)

ブラウザに表示されている,時計みたいなアイコンをクリックする.

そうすると以下のような画面が開かれる.

そこで,右下の「トリガーを追加」で表示される画面で以下のように設定する.

これは「スプレッドシートを変更したらUpdateを実行する」といったトリガーだ.

動作確認する

さて,最初の clasp create した際に表示された2つのURLから前者(スプレッドシート)を開く. で,スプレッドシートを適当に正方形サイズにしてやり,以下のように塗りつぶす.ちなみにこの塗りつぶしパターンについては 「ライフゲーム グライダー」で調べると詳しく知ることができる.

この画面で適当に編集をしてみよう.

無事に動いているのが確認できたと思います

おわりに

以上. ClaspとかGASに少しでも興味を持っていただけたのなら幸いである.

しかし,なんでこんな無意味なものを作ってしまったのか. 3時間前の僕に詰問したい.本当に無意味なエントリを書いてしまって,全国のSpreadsheets / Excelファンの方々にはお詫びをしたい.

次は◯◯さんです って誰も登録してないのか...

明後日はyone-yamaさんの「aikoを讃えるSpreadsheet + GAS」,名前からして絶対面白い.楽しみにしています.

P.S. 駅のホームでブログを書いている.寒すぎて指が死んできた.涙が出てきた.こんな極限状態でブログを書いたのは初めてだ.二度とやらん.

プリッカソンのご紹介

f:id:takanakahiko:20181201233537p:plain

この記事はプリッカソン Advent Calendar 2018の1日目の記事である.

今回は,コミュニティ「プリッカソン」について紹介したいと思う.

プリティシリーズについて

プリティシリーズは

の総称である.

これらは,アーケードゲームやアニメーションへ展開をする 女児向けコンテンツ である.

このシリーズのファンには女児でない人も存在する. 自分の趣味を職場や学校で打ち明けられず日々苦悩する我々には,ファンコミュニティ が大きな心の支えとなる.

その中でも ITエンジニア に焦点を当てた プリッカソン というコミュニティについて紹介したいと思う.

プリッカソン二本の柱

プリッカソン とは,前途にもあるが, ITエンジニア に焦点を当てた プリティシリーズファンコミュニティ である.

注意されたい点がある. このコミュニティは公式に組織されたものではない. つまり部類としては 同人活動 に当たるため,あくまで ファンとしての活動である といった認識で読んでいただければと思う.

プリッカソンの活動には

といった二本の柱があり,これらの活動を総称して「プリッカソン」と呼ぶ. 以降より,それぞれ紹介していきたい.

ハッカソン

プリッカソンでは「プリティシリーズに関する創作」といったテーマを設定し,不定期でハッカソンを開催している.

ハッカソンとは,決まったテーマに向けて一定時間以内にプロダクトを制作するというイベントである.主にITエンジニアを対象に開催されることが多い.

具体的な情報は下記リンク先を参照いただきたい.

https://prickathon.connpass.com/event/104704/ prickathon.connpass.com

「プリティシリーズ(プリティーリズム/プリパラ/プリチャン)を技術の面から支えていきたい,そんな思いから生まれたハッカソン」とある通り,我々はITエンジニアといった側面から作品を盛り上げていきたいといった思いでこのイベントに参加している.

チームで開発をする人もいれば個人で開発する人もいる. また,わからないことや相談があれば詳しい人に聞いたりと,助け合いながらそれぞれの創作をしていく,とてもいい雰囲気になっている.

開発中に「あの曲いいよね...」「いい...」みたいな話をしつつ開発をしている. 普段煙たがれるような会話を,話題を共有できる空間は本当に心地が良いと感じる.

プリティシリーズの初心者プログラミングの初心者 といった方々も参加し,いい意味で非常に敷居の低いイベントである.

また,成果物として毎回素晴らしいプロダクトが完成している. 作ったものは,(製作者から許可を取り)公式ページにて掲載されているので,気になる方はチェックしてみてほしい.

https://prickathon.github.io/#works

オンラインコミュニケーション(Slack)

プリッカソンは,Slackといったコミュニケーションツールを使用した,オンラインコミュニケーションの場を提供している.

雑談をしたり,アニメの感想をしたり,ハッカソンの連絡をしたり,映画を見に行く仲間を募ったりといった会話がされている.

また,複数人で開発しているプロダクトの開発用チャンネルや,キャラクターの誕生日がBotにお知らせされるチャンネルもあり,日々便利に進化している.

プリッカソンの運営に関するオープンなチャンネルも建てられ,風通しの良い状態で運営がされている.

興味ある人は気軽に参加してほしい

プリッカソンSlack登録フォーム

まとめ

プリッカソンは, 「 ITエンジニア に焦点を当てた プリティシリーズファンコミュニティ 」である.

現在,ハッカソンやSlackでのコミュニケーションを主な活動としているが,どちらも新しい参加者を募集中である.

そうそう,実はこの記事公開の翌日にプリッカソンのハッカソンが開催される.

prickathon.connpass.com

興味あったらぜひ参加していただきたい. 以上.

短期インターンシップでAkatsuki Inc.に行った

この度,Akatsuki Inc.(以下アカツキ)で短期インターンシップをさせて頂いた. 得た経験を忘れないように,そしてインターンシップに興味のある若者へ少しでも参考になるように,記録を残しておこうと思う.

続きを読む