ガッツの日記~プログラミングとは何か?可変の世界を体感しよう!~

48歳からはじめたプログラミング——「可変」が世界を変えた

こんにちは。私は48歳でプログラミングをはじめました。
世間的には「遅いスタート」かもしれませんが、7年経った今ではプログラミングを武器に独立して仕事をしています。

今回は、私が心から面白いと感じた「可変性」というテーマを通して、プログラミングの世界を少しでも覗いていただければと思います。

プログラミング未経験だけど覚えてみたい、でも「本当は凄い難しいのでは・・・」と躊躇している人にはぜひ最後まで読んでほしい内容にしていきたいと思います


プログラミングってそんなにすごい?

たまに「プログラミングできるなんて、すごいですね」と言われることがあります。
でも実は、特別な才能があるわけではなく、「工夫と思考の積み重ね」にすぎません。

特に人が驚いてくれるのが「可変ができること」。
つまり、処理内容や範囲を状況に応じて変化させられるという点です。

この「可変」については実際の事例で紹介したいと思います

事例として使用するのは「Power Automate desktop 」というRPAです

そもそもRPAって何?と思った方もいらっしゃると思います

*****Sponsered Link***** ************************

こちらはローコード、ノーコードでシステムを作れるツールです

コードがほぼ不要でブロック遊びの感覚で作れるので、プログラミングの取っ掛かりとしてはわかりやすいと思います

もしご興味があれば、実際のダウンロードしてみてください

ダウンロードの仕方の解説はYOUTUBEでしています


可変で変わる世界

実際の事例を紹介する前にウォーミングアップとして、「可変」という概念をもう少し詳しく説明させてください

大きく分けて2つポイントがあります

前述のように「処理範囲を可変にする」「条件式で動作を変える」です

① 処理範囲を可変にする

たとえば1人のデータだけでなく、10人、100人など、
対象が変わっても柔軟に処理できる仕組みをつくること。

大量データや繰り返し作業でも、人の手では大変なことをプログラムはあっさりこなしてくれます。

② 条件式で動作を変える

金額が10,000円以上の人だけ割引する——
このように「条件に応じて処理の内容を変更する」のが条件式の力です。

この2つができるようになるだけで、世界が一気に広がります。
しかも、その仕組みは思ったよりもずっとシンプルだったりするのです。

概念の説明が終わったところで、実際の事例をここからお見せしていこうと思います

①エクセルの各行に〇を付ける

下の画像ではA列にA,B,Cのアルファベットが入力されています

こちらのB列に〇を入力するRPAフローを作成しました

これだと何のことかわからないと思います

ただ、動かしてみると何がポイントかわかるように途中で止まるようになっていますので実際に動かしてみましょう

ここでメッセージが表示されています

こちらの内容は何かというとこちらです

FirstFreeRowという文字列が見えます

FirstFreeRowの中身が表示されているのですが、こちらはプログラミングで定番の最大値というやつです

実際にはこのFirstFreeRowは1つ前で取得されています

「Excelワークシートから最初の空の列や行を取得」とありますが、こちらは実質的にはワークシート内に存在する行数の最大値のプラス1になります

画像上に「生成された変数:FirstFreeRow」とありますが、こちらに取得した値が代入されます

この変数については後日、詳細を解説したいと思いますが、y=X+1のXみたいなものだと思ってください

こちらのXがX=1からX=2になるとYの値も変わりますよね?そんな感じです

ですので、行を削除すると表示される値も小さくなります

さて、本題からは少し離れましたが、範囲の最大値を取得することで処理範囲を可変にすることができます

実際にこの最大値を活かすかというと、Loop(繰り返し)処理の中に組み込むのです

こちらの部分の動きを実際に見てみましょう

RPAの画面の左にNOがあるのですが、こちらの4から6が繰り返し動いていると思います

これがLOOP(繰り返し処理)です

Loopの中身をもう少し詳細に見てみましょう!

開始値⇒2、終了⇒FirstFreeRow-1、増分⇒1となっています

つまり、「2」から実質「存在する最後の行の行数」の値までカウントアップします

このカウントアップした数が変数:LoopIndexに組み込まれます

こちらが更に下の画像内で使われます

つまり2からカウントアップして最終行の行数の4まで変わるLoopIndexの行に〇を書き込むわけです!

もしかしたら、変数のことがいまいちよくわからないという方がいたら、以下の表の内容が行われていたと思ってください

再度、言い換えて表現させてください

「エクセルに書き込む」1つのアクションを使いまわすのですが、この使いまわす回数が変わるとも言えます

いかがでしょうか?

範囲を可変にする仕組みが少し伝わったでしょうか?

②値に応じて記入するかしないかを変える

①では行数に応じて処理を可変にしたので、今度はエクセルから読み込んだ値に応じて〇を記入するかしないかを変えます

つまり、条件に応じて変えるので「条件式」を使います

エクセルのワークシート関数でもありますが、今回はIFの仕組みを使います

上記の画像では、繰り返し処理の中でエクセルを読み込んだ内容を変数:ExcelDataに設定しています

そして、赤字で矢印を表示してあるように「IF」の中に組み込んでいます

変数:ExcelDataがAだったらIfとEndの中で〇を書き込む処理を実行するというわけです

上記の内容を実際に動かすと以下の内容が出力されます

設定したIF文の内容通りに値がAの行で〇が入っています

では、IF文の中身を変えてみましょう!

出力される内容は以下となります

今度はBの値の時に〇が入力されます


可変ってこんなに面白い

ここまで「処理範囲の可変」「条件式で動作を変える」を実際の事例で見て頂きました

最初、プログラミングに慣れてきたら、自分の思考が形になって「プログラム自体に思考を持たせている」感じになってきました

それは自分の分身が働いてくれるような感覚でもありました。

もちろん最初はうまくいかず、エラーも出ました。
でも、試行錯誤を通じて、プログラムを育てていく感覚がとても楽しく、夢中になりました。


上達の核はエラーとの対峙

「変数」「条件」「繰り返し」などの要素はプログラミングの基本ですが、
それをどのように工夫して組み合わせるかがプログラミングの最大の魅力です

変数をうまく使えば、ひとつの処理で何十通りも対応可能
処理の順序を調整するだけで、大きく効率も変わります

思考がそのまま形になる——それこそがプログラミングの醍醐味だと、私は思います

最後に、

もう一つ事例を見て頂きます

プログラミングを上達するには、エラーと対峙することが必要です

これはコンピューターの言葉にならない叫びに耳を澄ますことです

ヒントはとにかく少ないです

ただエラーが出ても「少しの工夫でなんとかなる」と思えるようになるのが上達のコツだと思います

これはどんなプログラミングの天才でも通る道だと思います

以下の事例は私がエラー対策を積み上げることが、「プログラミング上達のコツ」だと思えた内容になります

下の画像では、A列にABCの文字列が埋め込まれています

作成したい内容は値がAの時だけ行を削除するものです

以下は上記の事例で使ったRPAフローを修正したものです

Aの場合に該当行を削除する内容になっています

このフローを実際に動かしてみます

きちんとAの行が削除されていきます

ただし、一つだけAが残ります

これはエラーですよね

条件式も、削除機能も機能はしています

ただ不十分なんです

でもエラーの理由はわからないですよね?

ですので、もう少しコンピューターの声を聴いてみましょう!

上の画像のように、1行毎に処理対象(削除しない行も含まれる)を表示してみます

まずは2行目からです

2行目はAなので削除されます

もう一つ前の画像では2行目だったので、次は3行目です

2行目はAだったので、1行削除されています

ですので、元は3行目に存在した「処理対象外のB」が2行目に移動しています

当然、3行目にAがあるのでこちらは行が削除されます

さて、次は4行目です

4行目以降はもうAがないですよね・・・だからもう削除する行はないのですが・・・

3行目にAが残っています

ここで3行目を処理する時の状態を見てみましょう!

3行目にAがあるので削除されます ⇒そして4行目のAが3行目に繰り上がります

でも処理対象行は3行目が終わったので4行目に同じく繰り上がります( ^ω^)・・・

つまり、AAと削除対象が連続する場合は処理対象行とのミスマッチが起こるのです

ここで一旦、思考が停止しそうになります

繰り返しになりますが、処理対象行が以下のようになっている場合は処理のミスマッチが必然的に起こるのです

2,3,4,5,6,7

なぜなら、処理対象行はどんどん下に増えていく(行番号が増える)のに対して、行を削除すると行削除対象行は上に上がる(行番号が減る)のです

表にまとめると以下のような形です

これではエラー解消はあきらめた方が良さそうな感じがします

ただ、

ここで試しに発想を逆転させてみましょう

7,6,5,4,3,2,1

と下側から処理を行ってみましょう

上の画像のようにLoopの中身を開始を実質最終行の行数に設定し、終了を2、増分をー1にしました

以下がこのLoop処理を実行した時にGIF画像です

2行目のAに注目してください。そうすると下のAから削除しているのがよくわかります

今度はうまく行きましたね

つまり、処理の流れと行を削除した時の流れが、次の表のようにマッチしているからです

一見、思考が停止しそうなエラーでしたが、解決した手法はそれほどのものではないですよね

この事例からもわかるように、少しコンピューターの声を聴き、工夫をすればなんとかなるんです

「エラーが出てもなんとかなる」こう思えるようになることがプログラミング上達のコツです!


結びにかえて

48歳からのスタートでしたが、遅かったと思ったことはありません。
むしろ、今の私だからこそ、柔軟で創造的な思考を楽しめている気がします。

「可変」というキーワードをきっかけに、
これからプログラミングを始める方がいたら、ぜひ一歩踏み出してほしい。

年齢に関係なく、思考がカタチになる世界が、そこには待っています。

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

*****Sponsered Link***** ************************

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です