GASでプログラミング入門 Vol.5

# GASでプログラミング入門 Vol.5

社内サークルにてエンジニアから非エンジニアの方向けにプログラミングを教えるという活動を行っています。<br>
今回はその教材第5弾です。
前回の記事は[こちら](https://qiita.com/YoshinagaYuta/items/05ed55663786218ad72a)

## 前回の演習問題の解答例

(1). 引数を二つ受け取る関数 myPow を作成し、下記の表示になるようなプログラムを作成してください。

引数 1 が 2、引数 2 が 3 の時

```
2の3乗は8です。
```

引数 1 が 10、引数 2 が 2 の時

```
10の2乗は100です。
```

解答例コード

```js
function myFunction() {
    myPow(2, 3);
    myPow(10, 2);
}
function myPow(num1, num2) {
    let ans = num1 ** num2;
    console.log(num1 + "の" + num2 + "乗は" + ans + "です。");
}
```

(2). 引数を四つ受け取る関数 selfIntroduction を作成し、下記の表示になるようなプログラムを作成してください。
四つの引数の役割はそれぞれ下記に従ってください。
第一引数・・・氏名を受け取る
第二引数・・・出身
第三引数・・・趣味
第四引数・・・一言

```
氏名：鈴木一郎
出身：東京都
趣味：ドライブ
一言：GASを頑張ってマスターする！
```

解答例コード

```js
function myFunction() {
    selfIntroduction("鈴木一郎", "東京都", "ドライブ", "GASを頑張ってマスターする！");
}
function selfIntroduction(arg1, arg2, arg3, arg4) {
    console.log("氏名：" + arg1);
    console.log("出身：" + arg2);
    console.log("趣味：" + arg3);
    console.log("一言：" + arg4);
}
```

なお解答例はあくまで例なので、必ずしも上記のようになっていないといけないわけではありません。

## 関数の戻り値

前回までで関数に入力を渡して実行するところまでは学びました。
今回は関数を使って出力する方法について学んでいきます。
関数で出力を行うには`戻り値`というものを使用します。

```js
function add(num1, num2){
    let num3 = num1 + num2;
    return num3;
}
```

関数で戻り値を呼び出し元に返すには`return`というキーワードを用います。
なお、上記コードは下記のように簡略化して記載することも可能です。

```js
function add(num1, num2){
    return num1 + num2;
}
```

このように記載することで、関数の呼び出し元では下記のように関数からの出力を受け取ることが可能になります。

```js
let num = add(1, 2);
```

上記のコードとしては、右辺に関数の呼び出しコードを記載し、左辺に関数の戻り値を受け取る変数を記載しています。
このようにすることで、関数に何かしらの処理や計算をさせた結果を受け取って、柔軟なプログラムを行うことが可能になります。
戻り値を使うことで、`関数`という名称がようやく数学的な関数というものとイコールになりました。
前回までに学んだ関数はどちらかというと`メソッド`と呼んだ方がしっくりくるなというのが個人的な感想ですが、この辺りは色々エンジニアによって論争になりがちな箇所なので、この辺にしておきます。

## コメント

プログラムには通常コメントを記載して、第三者から見た時に、このコードはどのような意図があって記載されているのか？などを伝えやすくしておきます。
コメントはプログラムの保守性や可読性を向上させる意味でも非常に重要なので、積極的にコメントを記載するようにして方が良いです。
コメントを記載するには２種類の記法があります。

### 単一行コメント

```js
// コメントです
```

単一行コメントは`//`のようにスラッシュ記号を2回続けて入力します。
行の途中からでも記載でき、例えば下記のような使い方も可能です。

```js
let num = 10; // 計算用の数値格納用変数
```

### 複数行コメント

```js
/*
複数行にまたがるコメントを
記載することが可能です。
*/
```

複数行コメントを記載するにはまず`/*`でコメント領域を開始します。
そして、コメントの記載が終われば`*/`でコメント領域を終了します。
複数行コメントと呼ばれますが、下記のような記載で、単一行コメントのような書き方も可能です。

```js
let num = 10; /* 計算用の数値格納用変数 */
```

### 単一行コメントと複数行コメントの使い分けについて

二つのコメント記法を紹介しましたが、何故２種裏あるのか？どんな風に使い分けるのか？について疑問を持った方もいるかと思います。
これについては正直正解はなく、プロジェクトにもよりけり、プログラマーにもよりけりといったことが多いのですが、私の個人的な経験による、使い分けについてご紹介します。

例えば本日の演習問題の解答例にコメント付ける場合の例です。

```js
/*
* 関数名：myFunction
* 概要：myPowを呼び出します
* 引数：ありません
*/
function myFunction() {
    myPow(2, 3); // 2の3乗を計算
    myPow(10, 2); // 10の2乗を計算
}
/*
* 関数名：myPow
* 概要：引数で受け取った数の冪乗を計算
* 引数：num1 冪乗計算の底
* 引数：num2 冪乗計算の冪指数
*/
function myPow(num1, num2) {
    let ans = num1 ** num2; // num1のnum2乗の計算結果をansに格納
    console.log(num1 + "の" + num2 + "乗は" + ans + "です。");
}
```

上記のように複数行コメントは主に関数についての概要や説明を記載する際などに使用し、単一行コメントは関数内のコード部分に対して記載する時に使用することが多いです。
もちろん例外もありますが、基本的にはこのような使い分けでコメントを記載していってもらえれば良いかなと思います。
あとコメントの記載ルールについて、`コーディング規約`などで統一を行っている会社もあります。
もしルールが無ければ、意識することは`第三者の目`だと思いますので、他人から見て分かりやすいコメントになっているか？を立ち戻って見直してみるのが良いかなと思います。

## 演習問題

(1). 引数を二つ受け取り、受け取った引数の計算結果を戻り値として戻す、関数 myPow を作成し、下記の表示になるようなプログラムを作成してください。

引数 1 が 2、引数 2 が 3 の時

```
2の3乗は8です。
```

引数 1 が 10、引数 2 が 2 の時

```
10の2乗は100です。
```

(2). 引数を二つ受け取り、受け取った引数を文字列の戻り値として戻す、関数 myNameString を作成し、下記の表示になるようなプログラムを作成してください。

第一引数・・・苗字
第二引数・・・名前
戻り値・・・私の名前は`苗字 名前`です。

引数 1 が 鈴木、引数 2 が 一郎 の時

```
私の名前は鈴木 一郎です。
```

引数 1 が 山田、引数 2 が 花子 の時

```
私の名前は山田 花子です。
```


## まとめ

いかがでしたでしょうか。
今回は関数の戻り値と、コメントについて学びました。
戻り値を学ぶことで、処理を関数化するメリットをより実感できるようになるので、是非この機会に使いこなせるようになっておいて下さい！
コメントは今後プログラムを記述する際には意識して記載するようにして、第三者の目を常に意識できるようにしておきましょう！
それではまた次の記事でお会いしましょう。