第1回 ちょっとプログラミングをして貰います

プログラミング 講座 その他

初めに

現役プログラマーがみなさんをプログラマーにする企画です。
プログラミング以前にそこまでコンピューターに詳しくない人も対象にしています。
ちょっとプログラムの世界を覗いてみたい人や、これからプログラムを勉強したい人のきっかけになれば幸いです。

プログラマーだって始めはプログラミングなんて大して知りません。
楽しいから詳しくなるんです。
「はいはい、プログラミングね」程度の気持ちで良いんです。

というわけで!
今日は皆さんに、ちょっとプログラミングをして貰います。

プログラマーの定義を決める!

初めにプログラマーの定義を決めます。
プログラマーが何か分からないのにプログラマーにはなれませんからね。

プログラマーとはプログラムを作る人ですが、プログラムとは何でしょうか?
黒い画面の英文みたいなテキストがプログラムでしょうか?
それも一つの側面ではありますが、実際はスマホやパソコンを従わせる命令です

みなさんは日頃からスマートフォンやパソコン(コンピューター)に命令しています。
みなさんは何気なく「Wikipediaでみずがめ座について調べろ」のようにコンピューターに命令しています。
みなさんとプログラマーの違いは命令の細かさです。

「Wikipediaでみずがめ座について調べる」のは「Wikipediaのエンドポイントにパラメーター(みずがめ座)を与えてGETしろ」と同じです。
前半は分かりますよね? 後半は分かりませんよね? でも結果は同じです。
つまり、プログラマーとは「コンピューターに細かく命令してる人」なのです!

プログラミングしてみる!

プログラマーの正体が分かったので、早速プログラミングを始めてみましょう。
プログラミングに必要な道具を紹介します。

  • テキストエディタ
  • プログラミング言語

聞き慣れない単語が出てきましたね。
でも簡単に用意できるので安心して下さい。

作文を書くのにペンと紙が必要なように、プログラミングにもプログラミング言語(ペン)とテキストエディタ(紙)が必要です。

便利なもので、ブラウザだけでプログラミングできるpaiza.ioというサービスが存在します。
リンクを開くとpaiza.ioの画面が開きます。
これからはpaiza.ioを利用してプログラミングしていきます。

突然ですが、みなさんはタイムマシーン3号というお笑い芸人さんをご存知ですか?
初耳であれば検索してみて下さい。
検索するのはプログラミングにおいてとても大切な行為です。

ネタの1つに「ありとあらゆるものを太らせる」というネタがあります。
内容は「ツッコミの山本さんがボケの関さんに何か単語を伝えると、関さんが太った人から連想される単語を返す」というものです。

文面だけだとちょっと何言ってるか分からないと思います。
そう思って予め「与えられた単語を太らせる」プログラムを書いておきました。
これからはこのプログラムを土台にお話していきます。

// ありとあらゆるものを太らせる
const fatten = (text) => {
    if (text === 'まんざい') {
        return 'ぜんざい'
    } else if (text === 'はんそでたんぱん') {
        return 'あんこでぱんぱん'
    } else if (text === 'あらし') {
        return 'みたらし'
    } else if (text === 'にゅーす') {
        return 'ぎゅうし' // 牛脂
    }
    return 'にくまん'
}

console.log(fatten('あらし'))

まだ何が書いてあるかは分からないと思いますが、順番に説明するので安心して下さい。
paiza.ioを開いて上のプログラムをコピー&ペーストして実行ボタンを押しましょう。
「みたらし」と表示されれば成功です。
※もし、表示されなければ左上の緑色のタブをJavaScriptにして再度実行して下さい。

初めから全てを理解する必要はありません。
注目すべきは最後の行です。

console.log(fatten('あらし'))

これは与えられた単語を太らせて表示する命令です。
与えられた「あらし」を「みたらし」に太らせて(変換して)表示しています。

例えば最後の行の「あらし」を「まんざい」に変えてみて下さい。

console.log(fatten('まんざい'))

実行ボタンを押してみて下さい。すると「ぜんざい」と表示されます。
太らせられましたね?
「なんで『まんざい』が『ぜんざい』になったら太ったことになるの?」という冷静な意見は胸の奥にそっとしまって下さい。
その意見が出てくるのは論理的な性格なのでプログラマー向きですよ。

ふざけているように見えますが、このプログラム(ソースコード)には多くの知見が含まれています。
まず、ソースコードは単なる文書(テキスト)に過ぎないという事実です。
プログラムと聞くと小難しい印象を受けますが、実体は単なるテキストなのです。
単なるテキストがTwitterのタイムラインを表示したり、銀行の預金をATMから引き出させているのです。

プログラムの意味を知る!

ソースコードは1行目から順番に実行されます。
上から下に実行されて、最後の行まで実行されると終了します。

前半から中半の行も実行されているのですが、結果を表示する命令は最後の行だけなので何も表示されません。
最後の行の意味から説明します。

console.log(fatten('あらし'))

最後の行は2つのパーツに分かれています。console.log()fatten('あらし')です。
多くのプログラミング言語ではコンピューターに何かを命令する時に「命令()」のように書きます。
console.log()は「()の内容を実行結果に表示して下さい」という命令です。
fatten('あらし')は「()の内容を太らせた単語を下さい」という命令です。

つまりfatten('あらし')が「あらし」を「みたらし」にしてconsole.log()が「みたらし」を実行結果に表示しているだけなんです。
そしてfatten()の内容は前半に定義してあります。
console.log()は頻繁に使うので、いちいち定義しなくて済むように初めから定義してあります。

日常でも「ミーティング」をMtgと略しますよね? 頻繁に使うから、みんな分かるので省略してあるわけです。
みなさんは始めたばかりなので、まだ命令について詳しくありませんが、使い慣れてくると頻繁に使う命令が出てくるので、そのうち憶えます。

次にプログラミング言語の機能を紹介します!

変数

変数は料理で使うボウルに相当する機能です。
ボウルは玉ねぎを刻んで入れたり、ごぼうを入れて水にさらしたり、料理途中の加工に利用します。
プログラムでも文字列(「玉ねぎ」とか)や数値(1とか120とか)を一旦変数に入れて加工しながらプログラム(料理)を作るわけです。

今回のソースコードだと「あらし」をfatten()に渡す部分で変数を利用しています。
前半の行の「あらし」を太らせる命令で変数「text」を利用しています。
ボウルに玉ねぎや大根が入るように、変数にも色々なデータが入ります。今回は「あらし」が入っています。

if文の「===」は「左右の値が同じなら」という条件です。
今回「text」は「あらし」と同じなので、条件に一致しています。

if文

if (text === 'まんざい') {
    return 'ぜんざい'
}

これはif文(いふぶん)と言います。ifは「もし〜」という意味の英単語ですね。
例文は「もし変数textが『まんざい』なら『ぜんざい』にしろ」という文です。
このように、if文を使えばソースコードで条件分岐を使えます。

条件分岐とは、例えば「明日が晴れなら映画を観に行くけど、雨なら家で寝る」のように「条件XがAならばBをする、CならばDをする」という文法です。
「text === ‘まんざい’」が条件そのものです。今回は「text」と「まんざい」を比較して一致したら「ぜんざい」を返答しています。

if文を憶えるだけで沢山のプログラムが書けるようになります。
なぜなら、コンピューターを利用して解決したくなるような課題には「もし」が沢山含まれているからです!
「もし、21時までにメールを送ってなかったら、自動で送ろう」
「もし、Twitterのタイムラインに猫の画像が投稿されたら、自動で保存しよう」
挙げれば山のように見つかるので、憶えておきましょう!

今回はここまでにしましょう。
暇な時に読み返して下さい。

まとめ

初めは分からないと思いますが、大切なのは楽しさです。
今回のソースコードを改造すれば「標準語を関西弁に変換するソースコード」も作れたりします。
自分の身近な単語を題材に改造してみてはどうでしょうか?
今回学んだ内容は以下です。

  1. プログラマーはコンピューターに細かく命令している人である。
  2. ソースコードは上から実行される。
  3. 頻繁に使う命令は初めから定義されている。
  4. プログラミング言語には文法がある。
  5. タイムマシーン3号は面白い。

それと、みなさんはもうプログラマーです。
「『あらし』を『みたらし』に書き換えただけだ」ですって?
お忘れですか? プログラマーは「コンピューターに細かく命令している人」です。
一部でもソースコードを変更したのであれば、明らかにコンピューターに細かく命令しています。

多少なりともプログラミングの理解が深まっていれば幸いです。