関数の「引数」とは?初心者がモヤモヤする疑問を解決!

こんにちは!

子供向けプログラミング教室kobakoスタッフです。

プログラミングのキモであり、初心者の壁となりやすい「関数」という存在があります。

関数そのものはなんとなく理解できる人は多いのですが、「引数(ひきすう)」と「戻り値(もどりち)」になると急に難易度があがります。

今回はそんな「引数」に焦点を合わせて、電子レンジで例えて解説していきます(戻り値はまた今度)。

ところで・・・

この記事を書いている人はだれ?

子供向けプログラミング教室です!

JavaScriptを使ったゲームプログラミング、ゲーム企画が得意な教室です。

プログラミング教室で実際に使用している、学習成果のある教材をYouTube無料配信しています。

関数は何が便利?

引数を理解する前に理解しておかないといけないことがあります。関数とは何が便利なのでしょうか?

関数は、処理に名前をつけてまとめておける機能です。

その機能のおかげでいくつかのメリットが享受できます。

再利用性が高まる

よく使う処理を関数にまとめておけば、使いたい時にその関数を呼び出すだけです。

何度も何度も再利用できるようになるだけで、コードの記述量はぐんと少なくなります。

同時に保守性も高まります。

やっぱりこの処理を違うようにしたい。けど、修正箇所が多くて困った!

なんてことがなくなります。

再利用性が高まると、いろんな箇所から関数が呼ばれるようになります。

いろんなところで呼ばれていても、実際のプログラムは関数の中に閉じ込めてあります。

何かを修正したいと思ったら、関数の中身だけを修正すれば良いだけで楽ちんです。

引数は関数をさらに再利用性を高めるもの

今回紹介する引数は、そんな関数の再利用性をさらにさらに高めるものです。

引数を使うことによって、関数の抽象度が高まり、よりなんでも使えるスーパーな関数へとグレードアップします。

そうですね、電子レンジで例えてみましょう。

電子レンジは中に入れたものを温める機能がある関数だとします。

引数がない電子レンジは中に入れるものを選べません。昨日のカレーと決めたら、昨日のカレーしか温めることはできません。不便ですよね。

引数がある電子レンジは中に入れるものを選べます。引数に温めたいものを渡すことで、電子レンジは引数で渡されたものを暖めてくれます。

こうして、カレー専用電子レンジは、引数を加えることで立派な電子レンジへとグレードアップできるわけです。

電子レンジの例えはこの辺にして、実際のコードで、引数がない関数と引数がある関数で例を交えてみていきましょう。

プレイヤーを表示する関数の場合

例えば、プレイヤーを表示する関数があったとしましょう。

まずは引数なしでプレイヤーを表示する、drawPlayer関数を作ってみます。

let x;
let y;
function drawPlayer(){
  fill(255);
  rect(x, y, 30, 30);
}

この関数の問題点は、変数xと変数yが存在しないと成り立たないこと。そして、2Pのプレイヤーを表示することができないことです。

引数ありでdrawPlayer関数を作り直してみます。

function drawPlayer(x, y){
  fill(255);
  rect(x, y, 30, 30);
}

引数にxとyを持たせるようにしました。

一見同じような意味にみえる関数ですが、xとyが持つ意味が大きく異なります。

このときのxとyは、呼び出し側が決める値です。

実際に関数を使う場面を見てみましょう。

let player01_x;
let player01_y;
let player02_x;
let player02_y;
function draw(){
  background(0);

  // 関数drawPlayerは、カッコの中で渡された値を処理するだけ。
  drawPlayer(player01_x, player01_y);
  drawPlayer(player02_x, player02_y);
}

引数ありのdrawPlayerは、引数で渡されたものを処理するだけであり、どんな値を渡されるかは関数は知らなくても良いのです。

そのため、1Pでも2Pでも、どちらでも再利用できるプレイヤー表示関数が出来上がりました。

引数はセンスが問われる

関数の引数はプログラミングセンスが問われる部分だと思っています。

引数をどうするかで、その関数の抽象度が決定し、再利用性の範囲が決定します。

凄腕のプログラマーというのは、引数の設計が上手であり、適度に汎用性のある、抽象度の高い引数を作ります。

引数は一度で理解できた!ということは絶対ありません。

僕自身も、いまだに、引数について新しい発見があったりするものです。

ここはもう、とにかく作品を作り続けて、悩んで考え続けた経験による理解しかありません。

プログラミング教室kobakoでは、基礎からしっかり!というよりは、基礎はちょっとで後はたくさんの作品作りをする教室です。

作品を作りながらプログラミングセンスを磨いていきましょう!

無料体験へのお申し込みはこちらから!

kobakoのゲームプログラミング教材もYouTubeで無料配信中です!

初回の授業料(体験)は無料です。

※現在はオンライン授業でのみ対応しています。通学型ではありません。

Photo by Jonathan Cooper on Unsplash