IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

スーパーエンジニアの独り言

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第84回 フリクリ (藤江一博) 2019年1月

黄色のべスパ。
青いベースギター。
白いフライングVのエレキギター。
水色のフード付きジャンパー。
濃紺の制服。
真っ赤なテレビ頭のロボット。
ポルカドット柄のレスカ缶。

凄いことなんてない。
ただ当たり前のことしか起こらない。

 
 
 
 

『フリクリ』:

ナオ太:「だから、酸っぱいのは嫌いなんだけど。」

早いもので既に三年程前になりますが、Python のトレーニングコースを創りました。
(経緯は以前のコラム『第58回 空飛ぶモンティ・パイソン』を併せてご参照下さいませ。)

無数に存在するプログラミング言語から何故 Python を選んだのか?という細かい理由は忘れてしまいましたが、うろ覚えですが直感的で分かり易い記述であるという印象があって「これからプログラミングをはじめてみよう」という方々には壁が低く感じるかもしれないということが理由にあったように思います。

そんな単純な思いつきでコースを創り始めたものの、最初は果たしてお客さんが来るのだろうかと心配でした。
そもそもプログラマを目指している方々は、プログラミング言語は指南書を見ながら独学で習得されるのが慣例であるのでプログラミング言語についてどのようなコースを開設しても多くの方には無用であり、講習会場には閑古鳥が鳴いているからです。

ですが、そんな当初の不安を一笑に付するほどに現時点まではたくさんの方々にお越し頂いている状況です。
昨今のトレンドに符号したからのだとは思われますが、当初の懸案は何だったのだろうかという盛況ぶりです。
毎日毎日、沢山の方にお越し頂いておりましてその勢いは止まらないのです。

正直に申せば、驚いています。

プログラミング必修化という時流もありますが(過去コラム『第15回 北の国から』及び『第30回 ニッケル・アンド・ダイムド』を併せて御覧下さい)、もしかすると多くの方が駆け込み寺の様にプログラムを勉強すべきこの機会を逃したらいけないと勇んでお越し頂けているのではと憶測しています。

兎に角、やってみないとわからないものです。

 
 
 
 

『ファイスタ』:

マミ美のモノローグ:
「この前、神さまを見た。
 雨の日の河原。
 捨てられた子猫を助けていた。
 私だけに見える神さま。
 私だけのために舞い降りた黒い翼の天使。」

Python がトレンドになっているのは、習得の壁が低いということが起因しているのは間違いない事実だと思います。
日本でもやっとプログラミング教育の必修化がすぐそこに迫ってきたこともあり、教育関係団体や地方自治体などが主導し各所で実証実験や学習教材などが出始めています。
そこで利用されているプログラミング教材としてはMITメディアラボが開発したプログラミング言語学習環境の "Scratch"(スクラッチ)が採用されているのが多数を占めるのが見て取れます。
それに対し先行する中国では小学生低学年向けの学習塾でプログラミング言語を教えている様子ですが、日本同様に "Scratch"(スクラッチ)でプログラミングを教えているコースに加えて "Python"(パイソン)プログラミングコースが用意されて既に学習塾で実施しています。

"Scratch"(スクラッチ)と並んで "Smalltalk"(スモールトーク)から派生した「アラン・ケイ」"Alan Kay" の設計による "Squeak Etoys"(スクイークEtoys)が教育用途プログラミング言語のオープンソースとしてありますが、原点である「シーモア・パパート」"Seymour Papert" 等によって産み出された "LOGO"(ロゴ、「言葉」を意味するLogosに由来) からの脈々たる系譜である「楽しくプログラミング言語を学習しましょう」という想いが、Scratch や Squeak Etoys などに代表される GUIでプログラミングが出来るような入り口が優しいもので実施されるのは、道理だと思います。

この並びに、Python が並んでいるのはちょっと驚きです。

現実世界で高水準プログラミング言語として無数のソフトウェアやサービスで実装されている本格的なプログラミング言語を小学生から学べるというのは、敷居が低くて覚え易いことが立証されている事実として捉えることが出来ます。

勿論、現実問題を解消する手段として本格的にプログラミングしようとするとプログラミング言語の文法だけ知っていれば書けるわけではなくて、プログラムで処理をさせようとする解決すべき課題(対象)への造詣や知識を必要とするのは間違いないのですが、それらの外部の知見を差し引いてみれば、残るのは文法と論理的思考になる訳ですがそれだけあれば、平易に書くことが出来るというのはやはり Python だけが持つ特異点と言えるかもしれません。実際に使うものと同じ道具で同じ記述方法を学習できるというのは、現実世界での適用性という意味つまりは実際に使えるという有効性は学習への心持ちに於いても大きな励みになると考えることが出来るからです。

ナオ太のモノローグ:
「近付くサイレンの音で、その時僕は気づかなかった。
 どこまでが嘘で、どこからが本当なのかは、僕には分からない。
 マミ美の為にできること。
 いつまでも傍にいてやろうと、僕は決めた。」

 
 
 
 

『マルラバ』:

ミヤジュン:「禁止、禁止、下品禁止!」
ニナモ:「文化祭で主役をやるんです。私が主役。」

ここで「プログラミング学習」ということを再考すると、いったい何を会得するのだろうという本質的な部分を考え直すことになるかもしれません。

「プログラミング言語の学習」としては、コンピューターに命令するための言語であるのですから、このコミュニケーションツールを利用して会話(命令を記述)するためには「文法」が基礎であり不可欠となりますので、学習するにあたっては文法こそが必須でありこれに固執することになります。文法の後に、何を書いて命令したいのかという対象に対する知識が問題解決のために必要となってくるでしょう。命令するのが目的ではなくて、何かを解決して欲しいからコンピューターにお願いするのですから、問題を認識して解決するための指示書作成のために文法を使って記述するのです。

ですが、「プログラミング学習」とした場合は、論理的に思考する力を養うことが大事なのに気が付きます。問題を把握して切り分けをして、順序立てして整理して解決に導く論理的思考が必要になるでしょう。

例えば、南国の島ハワイへ海外旅行に行きたいと思いついたとします。
この欲求を叶えるためには、どのようにしたらいいのかを手順を考慮する必要が出てきます。
最初に日程を考慮する必要がありますが、頃合いの良い時期に休暇の申請が要ります。
これと合わせて目的地に行くために交通機関の手配をする必要が出てきますが、予定している日程期間内で航空機の予約ができるかがまず試練です。加えて宿泊施設の手配として日程をシンクロ(同期)してホテルを予約します。予約検討しているのが良い時期であれば宿泊費用も高騰するのですから、場所やグレードなどの選択に迫られるでしょう。

もっと大事なのは、パスポートとビザ申請です。米国への渡航にはESTA(電子渡航認証システム)が必要です。入国には前もって用意が必要ですし、旅行当日忘れずに持っていかなければなりません。
もう一つ、お金です。クレジットカードのチェックと現金も必要になります。タクシー代などすぐに入用になりますから少額でも米ドルに換金しておきます。

重要ポイントを押さえた後に、詳細を詰めます。

空港までの高速バス、目的地に到着してからの交通機関の確保です。将来的には、ダニエル・K・イノウエ国際空港(旧称:ホノルル空港)からモノレールが出来るみたいですが、ハワイ時間で工事が進行しているために現時点では未完成です。ホテルに辿り着くためにタクシーやバスなど空港から脱出する際に露頭に迷わないように事前に調査と予約が必要でしょう。

ここから着いたら何をしようかなと本来のしたいことを考え始めることができるようになるでしょう。

プログラムを書くのもまったく同じ思考パターンです。
また「創作する」というクリエイティブな作業という意味では料理を作る工程と良く似ているのではと、常々感じています。

食材を用意して、或いは、限られた食材の中で何が出来そうかを想像して完成図をイメージします。
食材を包丁で切って下ごしらえをして、煮る、焼く、揚げるなど適した調理を施します。
料理の完成にはソースが必要になるかもしれません。上からかけるソースで味付けが決定してしまいます。手間暇や時間をかけてうまみ成分が抽出されるように準備します。
食欲をそそるべく美味しそうに見える様にお皿に盛りつけます。
配置する場所や彩りも考えたデザインを即興で考えるのです。
さてはて完成した料理を美味しく食べてくれるでしょうかというのは、出来て見なければわかりません。
料理の場合は一方通行で進行するために途中で失敗したら最初からやりなおしになります。
後から不具合の修正を手戻りできるのは、「クッキング」と「プログラミング」の違いかもしれません。

ナオ太:「あれ?メガネ。」
ニナモ:「伊達よ。」

 
 
 
 

『フリキリ』:

シゲクニ:「お前らの頑張りが足りんだけじゃ。」

ハル子:「兎に角さ、バット振んなきゃ話になんないよ。」

二人で会話する際に相手の事を全く知らないのでは、挨拶を済ませたら話が続かないと想います。
会話の相手がどのような人となりなのか、何に興味があるのかなど、ちぐはぐな会話に為らずに話題を継続させるためには、何かしらの事前情報として必要となるでしょう。
相手が持つ興味分野や素養など話し相手の関心事を理解することで、スムースなコミュニケーションが成り立つ経験はおありかと思います。

同じことですが、命令をする相手であるコンピューターの素性(背景)を全く知らないのではお話はちぐはぐになって成立しないしょう。
オペレーティングシステムの上でプログラムがどのように実行されるのかということは些少なりとも会話するためには、事前知識が要ります。

プログラムを書いて実行するには、その実行母体となるオペレーティングシステムの知識は必要になると思うのです。つまり、「プロセス」って何だろうということを知る必要があるでしょう。

ハル子:「やっぱ振っていかないとねー。空に向かって打ち返してみ。真のスラッガーは現実のボールを打つ前に、まず心の中でアーチを放っているのさ。」

キツルバミ:「回転してます。」
アマラオ:「シンカーか。」

 
 
 
 

『ブラブレ』:

ナオ太:「なんだよ、その格好。」
カモン:「あぁ、この赤ジャケかい?ナオは緑の方が好きって訳かい?ん、ん。旧作かい?ん、ん?カリ城かい?このオシャレさんめ。でもね、モンキー先生は赤の方がとあれだとしている訳だしねぇ。いくらあの方が嫌と言われもねぇ、こればっかりはねぇ。」

また会話を行うためには、そのお話で話題となる対象への知識や造詣も必要となってきます。
映画がお好きな方とお話をするのには、最近話題となっているロードショーで公開中の作品を話題の切っ掛けにして会話を続けようとすれば、その映画の監督さんや俳優さんが過去に出演した作品なども見ている必要があるでしょう。または、同じ系統やジャンルでの有名な映画と比較するなどして簡易批評家ぶって話を盛り上げるかもしれません。
話題が映画でなく音楽や山登り、自転車、キャンプ、将棋、或いは、ちょっとニッチなルービックキューブでも同じことです。

何に関しての処理なのかを良く分かっていれば、自ずと解決への道が開けてくるでしょう。

問題や課題を解決するための指示するのは、その対象となっている分野の周辺知識が豊富なほど問題解決の手順書を包括的な視点で簡潔に的確に記述できることになります。
固定の範疇であれば専門性が高ければ良いのでしょうし、全般に対して解決しようとする何でも屋さんを目指すのであれば「教養」が肝要であると落ち着くのかもしれません。
何においても教養が必要なのは、すべての到達地点ではありましょうがプログラミングも例外ではないです。

筆者の師匠「井澤信悦」のお言葉(口癖)なのですが、

「太郎くん、教養が一番大切なのだよ。」

というお言葉をいつも脳内で反芻しています。

 
 
 
 

『フリクラ』:

ミヤジュン:「お箸を使うのは、お爺ちゃんお婆ちゃんのボケの予防にもなるっていう訳。」

最後にどれだけ読みやすく書けるのかということです。

コンピューターに命令するために書いた指示書(スクリプト)が無事に実行できて命題が解決できるのが目的ですが、大抵の場合には実行できて済んでしまえばそれで良いということにはなりません。

記述した「台本」(スクリプト)を後日、自分が観返したら何を書いているのかわからないということでは、手直しすることすら儘なりません。
後で少し改善したいなと思った際にはお困りになることは避けられません。
ましてや書いたコードを人に見せるなどということは、恥ずかしくなってしまいます。

これ関しては "Dustin Boswell", "Trevor Foucher" 共著「リーダブルコード」"The Art of Readable Code: Simple and Practical Techniques for Writing Better Code" という本をご一読されるのをおススメします。

青い表紙の薄い本ですが読みやすいコードを書くテクニックが満載されています。

書籍ではもう一冊、御大「マーティン・ファウラー」"Martin Fowler"著 「リファクタリング」"Refactoring: Improving the Design of Existing Code" もおススメです。初版から二十年以上の時を経て最近第二版が出版されています。

また機会がありましたら、「リーダブルコード」や「リファクタリング」についても記載したいと思います。

ハル子:「すっごくさー、欲しいものがあるんだよ。奴らに横取りされたそいつを取り戻すんだ。」
ナオ太:「できるの?」
ハル子:「あんたとあたしがいればね。」

アマラオ:「眉毛はどうした?なぜ眉毛をしていない。その女を信用するなと言ったろ。そいつは自分の事しか考えない奴だ。周りがどうなろうと気にさえしない女なんだ。けどな、お前は違うだろ?家族も友達も、あの女子高生の事も助けたいと思うだろ。当たり前のことだ、それが普通なんだ。大人ならわかるはずだ。こっちへ来い、その女の思い通りになるな。」
アマラオ:「どれだけ非道い目に遭えば気がつくんだ、馬鹿かお前は。ガキが。」

ハル子:「あたしのほしいものの邪魔するなー。タッくんだからって承知しねえぞ。」
ナオ太:「好き。」
ハル子:「えぇ?」

 
 
 
 

『声の出演』:

ナンダバ・ナオ太:水樹洵
ナンダバ・カモン:松尾スズキ
ナンダバ・シゲクニ:糸博
ハルハラ・ハル子:新谷真弓
サメジマ・マミ美:笠木泉
ニナモリ・エリ:伊藤実華
ミヤジ・ジュンコ:福井裕佳梨
アマラオ:大倉孝二
キツルバミ:千葉千恵巳

 
 
 
 

凄いことなんてない。
当たり前のことしか起こらない。
いつものように橋を渡る。
その間にさえ季節は変わっていく。

 
 
 
 

『グリグラ』:

僕だけに注がれる光。
偽物じゃない光。
キミは僕の光。

流れ星に飛び乗って、
音速を超えて、
光速も超えて、
どこまでもキミを追いかけていくよ。

星の力を借りてキミに追いつくことができたなら、
ぐりとぐら、みたいに仲良く、
二人で大きな玉子を見つけて、
二人で甘くて美味しいカステラを作ろうよ。

カステラをつくるんだ。
失敗しても平気。
間違っていても大丈夫。
やりなおせばいいのさ。

次回をお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes