SlideShare a Scribd company logo
1 of 15
Download to read offline
お試しプログラミング
forとifとfunction()
~2020.9.30 CDLE LT会#2~
connectome.design ltd. / Akihiro ITO
プログラミングしたことない人向けです
● “世界のナベアツ”を実装してみます。
● Google Apps Script を使います。
● Python での実装例も。
仕様
● 1から順に数字を表示します。
● 3の倍数、もしくは3を含む数字の場合には、数字の後ろに、” AHO” を付加します。
Google Apps Script の準備
1. Google Driveにアクセスします。
2. Google Spreadsheetを新規作成します。
3. [ツール]→[スクリプトエディタ]を開きます。
4. スクリプトを書く準備ができました。
最初に必ず試すやつ
基本的な動作環境が整っていることを確認するた
めに、まずは最初に最小のお約束プログラムを動
かします。
HelloWorld()
function helloWorld() {
var message = "Hello World!";
var ui = SpreadsheetApp.getUi();
ui.alert(message);
}
Hello World! の実装と実行
1. スクリプトエディタにコードを書きます。
2. プロジェクト名をつけて保存します。
3. 実行します。
4. Spreadsheetのタブに、メッセージが出力さ
れます。
“世界のナベアツ”の実装/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);
}
}
}
“世界のナベアツ”の実装/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");
}
“世界のナベアツ”の実装/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);
}
}
}
※全部繋いだだけです。このまま動くはず。
“世界のナベアツ”の実装/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);
}
初期値化
まとめて出力
関数化
ここから、もっとそれらしく整形します。
● 初期値を指定できるように。
● 始めと終わりの数字を直感的に指定できる
ように修正。
● 出力を一回にまとめる。
● 判定部分を関数にまとめて外出し。
● さらに複雑な判定部分は別関数に。
結果、メイン関数はこれだけになりました。
サブ関数は次ページ。
“世界のナベアツ”の実装/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を含むかどうかを判定する。
実行結果
実行結果
● 3を含むかどうかのロジックはいろいろあ
るので、他のものも考えてみてください。
● 開始終了の数値をスプレッドシートに書
いた値から取得したり、結果を別シート
を作って書き出したりもできるので、いろ
いろアイデアを試してみてください。
● APIリファレンスには「GASで何ができる
か」がすべて書かれています。
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でも同じ行数で書けます。
自己紹介など
● 伊藤明裕/Akihiro ITO
● connectome.design株式会社[JDLA正会員]
シニアアーキテクト
● CDLEコアメンバー
● 情報処理安全確保支援士 No.7287/G2017/E2018
● 前職からのAI人材育成の取り組み、G検定数学対策など
https://www.slideshare.net/AkihiroIto1/
情報処理
安全確保
支援士
第007287号

More Related Content

Similar to 20200930 CDLE LT#2_COD_AkihiroITO

Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
Yohei Sato
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
Atsushi Tadokoro
 
はじめてのPython
はじめてのPythonはじめてのPython
はじめてのPython
Katsumi Honda
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
Atsushi Tadokoro
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
Mori Shingo
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
Unity Technologies Japan K.K.
 
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーションメディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
Atsushi Tadokoro
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
urasandesu
 

Similar to 20200930 CDLE LT#2_COD_AkihiroITO (20)

どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
Tokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテストTokyor14 - R言語でユニットテスト
Tokyor14 - R言語でユニットテスト
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
 
日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
はじめてのPython
はじめてのPythonはじめてのPython
はじめてのPython
 
C言語 学習教材
C言語 学習教材C言語 学習教材
C言語 学習教材
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
 
Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編Arduinoでプログラミングに触れてみよう 続編
Arduinoでプログラミングに触れてみよう 続編
 
#5:プログラミングの基本
#5:プログラミングの基本#5:プログラミングの基本
#5:プログラミングの基本
 
実験心理学者のためのPython
実験心理学者のためのPython実験心理学者のためのPython
実験心理学者のためのPython
 
Python東海GAEやってみた
Python東海GAEやってみたPython東海GAEやってみた
Python東海GAEやってみた
 
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.
 
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
 
2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information2018/06/23 Sony"s deep learning software and the latest information
2018/06/23 Sony"s deep learning software and the latest information
 
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーションメディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
 
ji-1. Java を使ってみる
ji-1. Java を使ってみるji-1. Java を使ってみる
ji-1. Java を使ってみる
 
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦Eclipse を使った java 開発 111126 杉浦
Eclipse を使った java 開発 111126 杉浦
 
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
 

More from Akihiro ITO

More from Akihiro ITO (16)

Bootleg_202303_越境してみたときのアウェイ感。.pdf
Bootleg_202303_越境してみたときのアウェイ感。.pdfBootleg_202303_越境してみたときのアウェイ感。.pdf
Bootleg_202303_越境してみたときのアウェイ感。.pdf
 
始まりは2017年のG検定。
 始まりは2017年のG検定。 始まりは2017年のG検定。
始まりは2017年のG検定。
 
202209_kintoneCafeNagoya_deepkintone.pdf
202209_kintoneCafeNagoya_deepkintone.pdf202209_kintoneCafeNagoya_deepkintone.pdf
202209_kintoneCafeNagoya_deepkintone.pdf
 
20220810_JDLA合格者の会_CDLE_LT_06.pdf
20220810_JDLA合格者の会_CDLE_LT_06.pdf20220810_JDLA合格者の会_CDLE_LT_06.pdf
20220810_JDLA合格者の会_CDLE_LT_06.pdf
 
20220713_JP_Stripes#100-3
20220713_JP_Stripes#100-320220713_JP_Stripes#100-3
20220713_JP_Stripes#100-3
 
20200807 Aidemy Meetup
20200807 Aidemy Meetup20200807 Aidemy Meetup
20200807 Aidemy Meetup
 
2019_G検定対策_数学講座03_微分
2019_G検定対策_数学講座03_微分2019_G検定対策_数学講座03_微分
2019_G検定対策_数学講座03_微分
 
2019_G検定対策_数学講座02_行列とベクトル
2019_G検定対策_数学講座02_行列とベクトル2019_G検定対策_数学講座02_行列とベクトル
2019_G検定対策_数学講座02_行列とベクトル
 
2019_G検定対策_数学講座01_ディープラーニングでの基礎計算問題
2019_G検定対策_数学講座01_ディープラーニングでの基礎計算問題2019_G検定対策_数学講座01_ディープラーニングでの基礎計算問題
2019_G検定対策_数学講座01_ディープラーニングでの基礎計算問題
 
20190301_SkillUpAI_AI導入スタートへのG検定活用
20190301_SkillUpAI_AI導入スタートへのG検定活用20190301_SkillUpAI_AI導入スタートへのG検定活用
20190301_SkillUpAI_AI導入スタートへのG検定活用
 
20181022 abeja cloudai_night_nico_airesourcedev
20181022 abeja cloudai_night_nico_airesourcedev20181022 abeja cloudai_night_nico_airesourcedev
20181022 abeja cloudai_night_nico_airesourcedev
 
20181016 ceatec2018 meti_session_nico_ito
20181016 ceatec2018 meti_session_nico_ito20181016 ceatec2018 meti_session_nico_ito
20181016 ceatec2018 meti_session_nico_ito
 
201807_AnnotationMeetUp_JetsonTX2での顔認識+Annotation用UIの実装
201807_AnnotationMeetUp_JetsonTX2での顔認識+Annotation用UIの実装201807_AnnotationMeetUp_JetsonTX2での顔認識+Annotation用UIの実装
201807_AnnotationMeetUp_JetsonTX2での顔認識+Annotation用UIの実装
 
Jetson TX2での顔認識+Annotation用UIの実装
Jetson TX2での顔認識+Annotation用UIの実装Jetson TX2での顔認識+Annotation用UIの実装
Jetson TX2での顔認識+Annotation用UIの実装
 
「G検定」を受けてみた。 2018/6/6 JSAI2018
「G検定」を受けてみた。 2018/6/6 JSAI2018「G検定」を受けてみた。 2018/6/6 JSAI2018
「G検定」を受けてみた。 2018/6/6 JSAI2018
 
JDLA Deep Learning for GENERAL 2017(所謂、G検定)はどんなだったか。
JDLA Deep Learning for GENERAL 2017(所謂、G検定)はどんなだったか。JDLA Deep Learning for GENERAL 2017(所謂、G検定)はどんなだったか。
JDLA Deep Learning for GENERAL 2017(所謂、G検定)はどんなだったか。
 

Recently uploaded

TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
 

Recently uploaded (8)

ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 

20200930 CDLE LT#2_COD_AkihiroITO