社内で勉強会をすることになり、トップバッターが私になりました。
何処にでもある話だと思いますが、社内でTECH勉強会を開催することになりました。会社のキャラクターとしては、テック寄りのITコンサルというところです。
私の所属する部署(最大150人程度?)宛に招待メールを送ることになり、仮に30%が参加するとすると、45人が参加することになります。
勉強会というと、もっとこじんまりとしたものを想像していたのでこの数字にちょっとビビり始めます。
さて。これは難しい問題です。
何が難しいって、「全員に分かるようなレベル感の題材を選ぶ必要があり、全員にとって役に立ったと思わせる単元」を採用しないといけないからです。
これはマジで難しい...
そこで目を付けたのが、恐らく誰しも使っているであろう「Googleスプレッドシート」。ただそれだけだと「勉強会」の題材としてちょっと弱いよなあ...そうだ!GASにしよう!ということでGoogleAppsScriptを題材にすることにしました。
題材は「Googleスプレッドシートで業務効率化!」になったが、オーダーで「ハンズオンして欲しい」と言われる...
GoogleAppsScript x 業務効率化 であれば、エンジニアもマネージャー層(来ないと思うけど)にも興味をもたせられるだろう、ということでこれに決めました。
しかし、そこにさらに追加で、「どうせなら実際に手を動かしてもらった方がいいよね。体にも刻み付けた方が記憶に残るだろうし!」と偉い人から言われました。
マジかよ...
あんまりにショボすぎるハンズオンだと勉強会の質が疑われるハメになるし、レベルが高すぎると「ああやっぱエンジニアってこうだよね。まわりのこと考えてない」みたいな評価を受けることになってしまいます...
丁度いいレベル感で、やった気になれるハンズオンの題材は無いかな...あった!そうだ!翻訳アプリ作ろう!!
誰でもやった気になれる、「4行で英単語を日本語に翻訳して保存するアプリ」をハンズオンの題材にした
というわけで、ハンズオンの題材が決まりました。英単語を入力してもらうとそれを翻訳して保存するスプレッドシートメモ帳みたいな感じのアプリにします!
これなら、作りやすいですし、多少の意義もありますし、アプリの本質である「入力→ロジック→出力」を学べるということで最高の題材です!うおお!よくこんな丁度いい案が湧いてきたな!
というわけで、早速作っていきます。本当に4行でできるのか!?
ソースコードはこちら
できました。最小動作のみを行うもので、下記のように4行になっています。(function定義部は除いて4行ね)
function myFunction() {
var enText = Browser.inputBox("英単語を入力してください!")
var jaText = LanguageApp.translate(enText, "en", "ja")
var sheet = SpreadsheetApp.getActiveSheet()
sheet.getRange(sheet.getLastRow() + 1, 1, 1, 2).setValues([[enText, jaText]])
}
です。
ちなみにこれ、最初に出てくるプロンプトでキャンセル押すと、cancelの文字列を日本語翻訳して「キャンセル」がスプレッドシートに追加されてしまいます。ので、実際はエラーチェックする必要があるんでプラス数行になります。
(微妙に気になるのは、ユーザがマジで「cancel」を入力した場合はどうなるのかというところですが、まあ今回は対象外ですね)
動かすまでの手順がこちら
まずは、スプレッドシートからスクリプトビューに移動します。
次に、表示されるスクリプトビューに先ほどのソースを書いていきます。
問題なければ保存して、コードを名前を付けて保存します。(ここでエラーが起きたら、メッセージ内容を参考にしてなおします。なおさないと保存できない...はず...)
保存ができたら、関数を実行してみます。下記の通り。
実行→関数を実行→myFunction(別名をつけた人はそれを選択)
実際の動作の様子
果たして動くのか!?
実行したら、スクリプトビューからもとのスプレッドシートに移動して、ダイアログが表示されていることを確認します。
ここに翻訳したい単語を入力します。でOK押下。結果は...
うおおおおおお!!翻訳されて追加されているぞおおおおおい!!
こんな感じになります。
まあ正直、だからどうした的なところはありますが、4行でできて雰囲気を掴むための題材としては極めて有用なのではないかと思いました。
欲を言うなら、「スプレッドシートから値を取得して」という部分も入れ込みたかったんですが、そうするとたぶんループすることになり、コード行数が微妙に増えるかなと。ともすると、エラーにハマる人の割合が数パーセント上昇するし...というところでやめました。
興味のある人はさらに深堀しておけばいいよね。うんうん。