Swift playgroundsでプログラミング学習をやってみよう!
せっかくiPadを持っているので、実際にSwift playgrounds(以下SPと略します)を使って、プログラミングの練習をしていこうと思います。画像は実際の画面です。課題と説明があって、右側にキャラクターとオブジェクトの図があります。今回の課題は、キャラクターを動かして宝石を取るという単純なものになります。おそらくSPで一番最初に触れる課題です。
今ある情報に分解して考えること
プログラミングをしていく上で重要なことは、目的をしっかりと設定し、それをルールに合わせて分解し、ルールに従って順序よく組み立て、目的を達成していくことです。例えばこの課題の場合は、“1ブロック進む“、“宝石を取る“の2つのコマンドを使うことがルールです。画像から得られる情報は、“3ブロック先“に“宝石“があります。目的と与えられた情報は、
目的:
“3ブロック進んで宝石を取る“与えられた情報:
moveForward() “1ブロック前に進む”
getGem() “宝石を取る”
と、整理できますね!
しかし、“宝石を取る“コマンドはあっても、“3ブロック進む“というコマンドはありません。そこで、“3ブロック進む“ということをルールにあった形にしなければなりません。“3ブロック進む“をルール通りに分解すると、“1ブロック進む“を“3回行う“ということになります。つまり、
“1ブロック進む”“1ブロック進む”“1ブロック進む”、“宝石を取る”
となります。これをSPのコマンドに置き換えると、
moveForward()
moveForward()
moveForward()
collectGem()
となります。これで、キャラクターが“3ブロック前に進んで宝石を取る“という課題が達成できました。目的をしっかり把握して、ルールに合わせて分解し、それを順序よく組み立てて、コンピュータにわかる形にしてあげることができました。
コンピュータと人間の違い
今までは、コンピュータに宝石を取ってもらうための考え方を説明しました。もし、コンピュータではなく、友達に頼む場合はどうでしょうか?“○○さん、3ブロック進んで宝石を取ってきてください“とは言いません。友人に宝石を指さして“あれを取って”だけで済んでしまいます。
人間は、言われたことと周りの状況を瞬時に判断して行動することができます。一方、今回やってみてわかったように、コンピュータに行動させるには、行動の手順をコンピュータにわかるように分解して、順序よく組み立ててあげる必要があります。
今は大変便利なコンピュータですが、その裏側はプログラムによって使いやすくされているのです。勝手にやってくれていることも、全てプログラミングされているのです。生活が便利になった影には、技術者の方の血の滲むような努力と試行錯誤があったということですね。
ひとつ課題が終わったら
ひとつの課題が終わったら、必ずそのプログラムとコマンドを理解できるようにしましょう。次の課題のヒントになる場合が多いからです。そして、人によってプログラムは必ずしも同じ形を取らないということです。例えば、同じタイトルの作文でも、内容は人によって全く違います。しかし、タイトルは同じでも違和感はないはずです。
これは、プログラミングの現場でも起こる問題でもあります。会社によっては、コーディングルール(プログラムの書き方)まで細かく決められているところもあります。これは、ルールを決めることで、誰が見てもすぐに理解できるようにするためです。最近はシステムが複雑化してきていて、ひとつの間違いが大きな影響を及ぼすことが多くなってきました。ルールを作ることによって、分担して作業しても間違いが起こりにくいようにしているのです。
慣れてきたらやってほしいこと
慣れてきたら、プログラムを見やすいように書き直してみましょう。例えば、動作ごとに間隔を開けてみるとか、ここはどういう動作をしているというコメントをつけてみるなどです。なぜかというと、
・うまくいかなかったときや、中断して次の日に作業する時などに見返しやすくするため。
・質問する場合やいっしょに考える時に、自分にも相手にもわかりやすくするため。
です。そして、そうしているうちにもっといい方法が思いつくかもしれません。短くて効率のいいプログラムは理解しやすくて格好いいですし、省エネでもあります。また、他の課題で使える共通の部分が見えてくるかもしれません。
難しいことを書いてきましたが、私もプログラミングに関してはまだまだ初心者です。これから少しづつ私が学習したことや感じたことを記事にしていこうと思います。この記事を見て一人でも多くプログラミングに興味を持っていただければ幸いです。
最新情報を購読しよう!
就労継続支援・就労移行支援事業者様へ
HIFUMIYO TIMESでは毎月フリーペーパー版を発行しており、各エリア版の加盟店を募集中です。福祉事業者に最適なブランディングと広報力をご提供します。詳しくはお問い合わせください。