Slide 1

Slide 1 text

お試しプログラミング forとifとfunction() ~2020.9.30 CDLE LT会#2~ connectome.design ltd. / Akihiro ITO

Slide 2

Slide 2 text

プログラミングしたことない人向けです ● “世界のナベアツ”を実装してみます。 ● Google Apps Script を使います。 ● Python での実装例も。

Slide 3

Slide 3 text

仕様 ● 1から順に数字を表示します。 ● 3の倍数、もしくは3を含む数字の場合には、数字の後ろに、” AHO” を付加します。

Slide 4

Slide 4 text

Google Apps Script の準備 1. Google Driveにアクセスします。 2. Google Spreadsheetを新規作成します。 3. [ツール]→[スクリプトエディタ]を開きます。 4. スクリプトを書く準備ができました。

Slide 5

Slide 5 text

最初に必ず試すやつ 基本的な動作環境が整っていることを確認するた めに、まずは最初に最小のお約束プログラムを動 かします。 HelloWorld() function helloWorld() { var message = "Hello World!"; var ui = SpreadsheetApp.getUi(); ui.alert(message); }

Slide 6

Slide 6 text

Hello World! の実装と実行 1. スクリプトエディタにコードを書きます。 2. プロジェクト名をつけて保存します。 3. 実行します。 4. Spreadsheetのタブに、メッセージが出力さ れます。

Slide 7

Slide 7 text

“世界のナベアツ”の実装/Step.1 1. 1から10まで繰り返し処理します。 2. 数字を出力します。 3. そのとき、3の倍数なら、” AHO”を付加しま す。 function nabeatu() { var ui = SpreadsheetApp.getUi(); for(var i=0; i<10; i++) { var num = i+1; if (num % 3 == 0) { ui.alert(num + " AHO"); } else { ui.alert(num); } } }

Slide 8

Slide 8 text

“世界のナベアツ”の実装/Step.2 1. 1から10まで繰り返し処理します。 2. 数字を出力します。 3. そのとき、3の倍数なら、” AHO”を付加しま す。 4. もしくは、3を含む数字なら、” AHO”を付加し ます。 // 3を含むか判定 var j = num; var flag = false; while(j > 0) { k = parseInt(j / 10); if(j - k * 10 == 3) { flag = true; break; } j = k; } if(flag) { ui.alert(num + " AHO"); }

Slide 9

Slide 9 text

“世界のナベアツ”の実装/Step.3 function nabeatu() { var ui = SpreadsheetApp.getUi(); for(var i=0; i<10; i++) { var num = i+1; var j = num; var flag = false; while(j > 0) { k = parseInt(j / 10); if(j - k * 10 == 3) { flag = true; break; } j = k; } if(flag) { ui.alert(num + " AHO"); } else if (num % 3 == 0) { ui.alert(num + " AHO"); } else { ui.alert(num); } } } ※全部繋いだだけです。このまま動くはず。

Slide 10

Slide 10 text

“世界のナベアツ”の実装/Step.4-1 function nabeatu() { var start = 1; var end = 100; var output = ""; var ui = SpreadsheetApp.getUi(); for(var i = start; i < end+1; i++) { output += i; if(isAho(i)) { output += " AHO"; } output += "\n"; } ui.alert(output); } 初期値化 まとめて出力 関数化 ここから、もっとそれらしく整形します。 ● 初期値を指定できるように。 ● 始めと終わりの数字を直感的に指定できる ように修正。 ● 出力を一回にまとめる。 ● 判定部分を関数にまとめて外出し。 ● さらに複雑な判定部分は別関数に。 結果、メイン関数はこれだけになりました。 サブ関数は次ページ。

Slide 11

Slide 11 text

“世界のナベアツ”の実装/Step.4-2 function isAho(number) { var flag = false; if(number % 3 == 0) { flag = true; } else { flag = isIncludeThree(number); } return (flag); } function isIncludeThree(number) { var i = number; var flag = false; while(i > 0) { j = parseInt(i / 10); if(i - j * 10 == 3) { flag = true; break; } i = j; } return(flag); } 3で割り切れるかを判定する。 3を含むかの結果も評価して返す。 3を含むかどうかを判定する。

Slide 12

Slide 12 text

実行結果

Slide 13

Slide 13 text

実行結果 ● 3を含むかどうかのロジックはいろいろあ るので、他のものも考えてみてください。 ● 開始終了の数値をスプレッドシートに書 いた値から取得したり、結果を別シート を作って書き出したりもできるので、いろ いろアイデアを試してみてください。 ● APIリファレンスには「GASで何ができる か」がすべて書かれています。

Slide 14

Slide 14 text

Pythonで簡単に書くとこんな感じ for num in range(1, 1000, 1): i = num flag = 0 while i>0: j = (int)(i / 10) if i - j*10 == 3: flag = 1 break i = j if flag == 1 or num % 3 == 0: print(str(num) + " AHO") else: print(str(num)) ※GASでも同じ行数で書けます。

Slide 15

Slide 15 text

自己紹介など ● 伊藤明裕/Akihiro ITO ● connectome.design株式会社[JDLA正会員] シニアアーキテクト ● CDLEコアメンバー ● 情報処理安全確保支援士 No.7287/G2017/E2018 ● 前職からのAI人材育成の取り組み、G検定数学対策など https://www.slideshare.net/AkihiroIto1/ 情報処理 安全確保 支援士 第007287号