プログラムとはどういうものなのかを簡潔に説明

2020年5月30日ガジェットガジェット,体験談

近年の傾向

ここ数年でAIや人工知能という言葉が非常に出回るようになってきた。

きっかけは多分AI将棋ソフト「ponanza」が将棋界の名人を次々と破ったことだろうか。そこから全体的にAIブームが巻き起こったように思う。

最近では各種家電やスマホのアプリにも「AI搭載」の文字が踊る。皆知らぬ間にその恩恵を受けているかもしれない。

これらAIを作るためには今回の題である「プログラム」を書かなければいけない。

プログラムは難しいだろうか?まぁ確かに人工知能を作ろうと思うととても難しいだろう。

私はAIに関しては全くの素人だが、仕事では実務レベルではちょいちょいプログラムを書いている。

プログラマとしてはまだまだ下級戦士であるが、私のようにちょっと手を出しただけでも色んなことが見えてくるものだ。

今回はプログラムに触った事がない人のために、概念的なものをお伝えできたらいいと思う。

プログラムを覚えるのは日本語を覚えるのに似ている

外国人が日本語を学ぶため東京に来たとする。ちゃんと標準語で話せるようになるには何年もかかるだろう。

その後大阪へ行くとする。そこでは皆大阪弁を使っている。

標準語との違いに最初は戸惑うだろうが、日本語の文法、主語や述語の順序や使い方はもう知っているので、すぐに慣れて通常通りに話せるようになるはずだ。

この話はプログラミングにも通じるものがある。

プログラミング言語はC、BASIC、python、PHP、COBOL、R、JAVAなど、その種類は200種類以上あり、それぞれが得意な技、不得意な処理などがある。

ただどのプログラミング言語を学ぶにしても最初の一個目が一番難しい。

これは新しく外国語を覚えるのと同じぐらい難しい。

そして一つ目を大体使えるようになり、プログラムの概念を大体とらえることができれば、二つ目以降の言語はさほど苦労しなくても使えるようになる。

「プログラム書く人は色んな種類のプログラミング言語が使えるって聞いたよ凄いね」とプログラム未経験者は言う。

色んなプログラミング言語を使えるようになる難易度というのは、色んな地域の〇〇弁を使えるようになる事と大差ないと思う。そう聞くと対して難しくなさそうに聞こえるだろう。

だからとりあえず一つを手に取り、プログラムの概念を学ぶところから始めてみるてはいかがだろうか。

「プログラミングを学ぶ」ということは「アルゴリズムを学ぶ」ということ

「おまえプログラム書けるんだからアプリ作って一発儲ければいいじゃん!」

たまに居るんだよなこういう奴、じゃあ私からも言わせてもらう。

「お前日本語出来るんだから小説書いて大儲けすればいいじゃん」

ほら、困るだろう。

小説を作るのに必要なのは「日本語を書く能力」ではなく「日本語で文書を構成する能力」である。

書くのなんて今や幼稚園児でもできる。しかし小説のストーリーを構成するのは並大抵の才能ではできないはずだ。

プログラムを書いてアプリを作るのも同じだ。プログラムを書くのなんて入門書を見ていればたいして時間はかからないだろう。

しかしアプリを作るには構想やアイデア、プログラム同士の関わり合いなどを設計しなければなず、これもまた難しい。

これからプログラミングを始める方はもちろんプログラムの書き方や文法を勉強していく訳だが、その時、参考書からアルゴリズムというのを読み取りながら勉強すると早いと思う。

アルゴリズムとはめちゃくちゃ簡単に言うと「処理方法」の事だ。

例えばいくつかの数字から最大値を探すという処理を考える。

人間にこの作業をお願いする場合は「目で見て一番大きい数字さがしておいて!」で終わるだろう。

しかし機械はそうはいかない。やり方を全て事細かく命令しなければ機械は動いてくれない。そこで下記のようなアルゴリズムを考えた。

1、一番上の行を選択
2、もしA列がB列より大きかった場合はA列の値をB列へ代入する
3、もし今の行が最後の行なら処理を終わる
4、次の行を選択し2へ戻る

こんな感じで命令を出せばコンピュータは下のgif画像のように動いてくれるだろう。

これをマクロ用のコードにすると下記のようになる。コード導入済みのエクセルファイルもここに置いておくから試してみてほしい。

Sub テスト()
    Dim i As Integer
    Dim end_cell As Integer
    Dim strvalue As Long
    
    end_cell = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To end_cell
    
        Cells(i, 1).Select
        Cells(i, 2) = strvalue
        If Cells(i, 1) >= strvalue Then
            strvalue = Cells(i, 1)
            Cells(i, 2) = strvalue
        End If
        Cells(i, 2) = ""
    
    Next
    
    MsgBox ("最大値は" & strvalue & "です")
End Sub

プログラム入門ならVBを学ぶと仕事が楽になる

「プログラムって楽しそうだな!入門書買って勉強してみよう」

と私も最初はそうやって始めた。

しかしプログラムの勉強というのは「学ぶ目的」というのがモチベーションの維持向上に重要な役目を果たす。

「こんなアプリを作りたい!」とか「こんなWEBサービスを作るんだ!」という目標がしっかり設定されているのなら良いが、「プログラムを勉強する」ということ自体が目標となっている人は多分続かない。

なぜなら参考書に書いている作例は画面に文字を表示したり、四則演算を行ったり、「うん、だから何?」というものばかりだからだ。

参考書に書いてあることを応用して、自分の作りたいものを実現していくのが楽しいのだ。

「特に作りたいものなんて思い浮かばないんだよな」っていう人におすすめなのがVB(ビジュアルベーシック)というプログラミング言語である。

これを学ぶと何がいいのか。

日本の事務ではExcelやWordなどのマイクロソフト社が作ったofficeと呼ばれるソフトが大活躍している。その中でも表計算ソフトとして皆利用しているExcelを自動化することができるのだ。

前項で私が作ったエクセルファイルを置いたがあれがこのVBで書いている。

VBは言語としては非常に簡単である。インタプリンタ言語なのでバグも直しやすい。

なにより勉強したことが仕事にすぐ使えるのが良い。今まで手作業でやっていた作業が一瞬で終わるようになる。

まとめ

いつも通りまとまらない文となってしまったがこんな感じだ。

VBについてはそのうちまた記事を出す。

次は先日始めたFXの自動化プログラミングをやってみようかと思うので、その時またプログラムについて話そうかと思う。

Posted by mottiy