昔話で理解できる!関数を学ぼう

むかしむかし、あるところに、おじいさんとおばあさんが営む喫茶店がありました。
メニューはコーヒー・紅茶・オレンジジュースの3種類で、価格は次の関数を使って求めることができました。

function coffee1984() {
  return 350;
}

function tea1984() {
  return 400;
}

function orangeJuice1984() {
  return 300;
}

たとえば、オレンジジュースの価格を知りたいときは、次のコードを実行します。

let price1984 = orangeJuice1984();
console.log(price1984);  // 300

しかし、あるとき「消費税」が導入されてしまいました。
そのため、おじいさんとおばあさんは、価格を計算する関数を次のように修正しました。

function coffee1989() {
  return 350 * 1.03;
}

function tea1989() {
  return 400 * 1.03;
}

function orangeJuice1989() {
  return 300 * 1.03;
}

消費税導入後の価格は、次のコードを実行することで求められます。

let price1989 = coffee1989();
console.log(price1989);  // 360.5

しかし、あるとき消費税の「税率」が3%から5%に引き上げられてしまいました。
そのため、おじいさんとおばあさんは、価格を計算する関数を再び修正しなければならなくなりました。

function coffee1997() {
  return 350 * 1.05;
}

function tea1997() {
  return 400 * 1.05;
}

function orangeJuice1997() {
  return 300 * 1.05;
}

消費税率引き上げ後の価格は、次のコードを実行することで求められます。

let price1997 = tea1997();
console.log(price1997);  // 420

しかし、あるとき再び消費税の「税率」が5%から8%に引き上げられてしまいました。
おじいさんが、価格を計算する関数を前回と同じように修正しようとしたところ、おばあさんが言いました。

「5%から8%に修正したところで、すぐにまた税率が上がるに決まっとる。その度にすべての商品の価格を修正するのは面倒じゃ」

おばあさんは、価格を計算する関数を次のように修正しました。

function coffee(taxRate) {
  return 350 * (1 + taxRate);
}

function tea(taxRate) {
  return 400 * (1 + taxRate);
}

function orangeJuice(taxRate) {
  return 300 * (1 + taxRate);
}

紅茶の価格は次のように計算することができます。

let price2014 = tea(0.08);
console.log(price2014);  // 432

それから数年後、おばあさんが予言したとおり、消費税率が8%から10%に引き上げられてしまいました。
しかし、おじいさんとおばあさんは、もう価格を計算する関数を修正する必要はありません。
コーヒーの新しい価格は、関数を修正することなく次のように計算できます。

let price2019 = tea(0.10);
console.log(price2019);  // 385

こうして、おじいさんとおばあさんは、消費税率の更なる引き上げに怯えることなく幸せに暮らしましたとさ。めでたし、めでたし…。

・・・

このように、関数をうまく使うことができれば同じような修正を何度も繰り返すことなく、入力する税率に従って正しく価格を計算することができます。 関数は、同じような処理を繰り返し記述しなくても、さまざまな入力(=税率)に応じて異なる出力(=価格)を生成できるとても便利な道具なのです。 ちなみに、ここまでの話は次のような簡潔なコードで表現することができます。ぜひ解読に挑戦してみてください。

let coffee = 350;
let tea = 400;
let orangeJuice = 300;

let taxRate1984 = 0;
let taxRate1989 = 0.03;
let taxRate1997 = 0.05;
let taxRate2014 = 0.08;
let taxRate2019 = 0.10;

function price(item, taxRate) {
  return item * (1 + taxRate);
}

let orangeJuiceIn1984 = price(orangeJuice, taxRate1984);
let coffeeIn1989 = price(coffee, taxRate1989);
let teaIn1997 = price(tea, taxRate1997);
let coffeeIn2014 = price(coffee, taxRate2014);
let orangeJuiceIn2019 = price(orangeJuice, taxRate2019);

console.log(orangeJuiceIn1984);  // 300
console.log(coffeeIn1989);  // 360.5
console.log(teaIn1997);  // 420
console.log(coffeeIn2014);  // 378
console.log(orangeJuiceIn2019);  // 330

弊社では、Google Apps Script を使用した、業務効率化自動化を行う部門があります。Google Work Spaceをご利用の企業様、個人事業主様、自動化などでお困りでしたら、弊社までお問い合わせください。
何百の自動化プログラムを組んできたエンジニアが、お客様の業務自動化をご支援いたします!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次