大好きArduino

Arduino総合情報サイト

5.できるプログラマーになるために

スポンサードサーチ


1.大切な4つのポイント!

非常に難しい言葉からのスタートですみません!
お待たせいたしました!いよいよ開発・本格的プログラマーへの突入です。

私も最近なぜだかこの歳になって数億円というデッカイ仕事の仕様検討・概要設計に追われています。
この作業は、これから開発・完成させるために一番大切な『想像&創造』というシステム開発ではもっとも楽しい部分なのです。
だって、私が設計したシステムを誰かが使って、笑ったり・喜んだり・感動したり.....
使っている姿を想像しているだけでワクワクします!

絶対に使う人が
『これ...すっごいよ!使いやすい!説明書なんて要らないよ~考えられてるなぁ~』
『おおおお~何やっても問題起きない!すっごいなぁ~ よく考えてるよ!』......

を実現するためには

①仕様を検討.....どんなものをつくるか?を想像する
②設計する.....説明書不要の操作とどんなことされてもバグらない想像を創造
③プログラミング....時間が経ったあとで見てもひと目で分かる綺麗なプログラムを作る
④再利用できる....次にもっとすごいものを作るときに再利用できるように柔軟に作る

この④つのポイントを守ります。
そして、その中でも最初の①....これが本当に大切なんです!
①の出来上がり・完成品を素敵なものの創造をしっかりしなければ、絶対に②からはガタガタになって出来上がったものはボロボロになってしまいます。
だから、この講座の中で、唯一、この項目は1章しかないのに、別の項目として強調して書きます。
書物ばかりの章です。プログラミングしたくてウズウズしているかもしれませんが、ちょっとだけ、ここだけもう少しの辛抱で乗り切ってください!

2.想像しましょう!創造しましょう!

あえて難しく書いてみました 『仕様を検討』
システム開発には必ず最初に出てくる言葉で、業界の人なら誰でも知っています。
仕様検討とは、これから自分が作成するものがどんなものなのか?どうやったらできるのか?を一生懸命想像し考える作業なのです。

これは開発ポジションや開発する規模によって作業内容が異なります。
開発ポジションとは、業界的には PG(プログラマ) SE(システムエンジニア) PM(プロジェクトマネージャ) AN(アナリスト)と呼ばれる職種です。

大きな規模のシステムでは、全員が完成品全ての機能を理解し作ることはできないため、PGは自分が与えられた処理とそこに関わる部分のプログラミングについて。SEはPGが検討できるための検討。PMは、基本的には何もしない。ANは完成品全て。となります。
反対に規模の小さいものは、それぞれがからみ合って相互的に行います。
しかし、それぞれのポジションでの想像がしっかりできなければ正しい結果はでませんね!

※PMは一般的にSEの上でシステム業界ではSEが出世したり歳とったりしたらこのポジションになるものだ!と思われていますが、本来のPMの役目はそうではないと私は考えています。
PMはプロジェクトマネージャです。プロジェクトをマネージメント(管理・統括・進行)をする人がPMであり、技術者じゃなくてできる仕事なのです。だから今回はこの説明から省きました。この話は長くなるので、またどこかでお話をします。)

3.仕様を検討しましょう!

それでは、今回作るシステムはとても小規模なものなので、皆さんおのおの完成品までを想像し仕様を検討しましょう!

①完成品は.....マイコン式扇風機です!

まぁぁぁぁぁ.....なんともレトロな響き....なんともクラシカルな....
今はまぁほとんどがマイコンを搭載したものですが....あ!まだありますね!アナログチックな扇風機も....

コレコレ! 今回はこの扇風機のマイコン式を作ってみます。
これをマイコン式にする....じっと目を瞑って想像してみてください!..... それでは行きます!

②まずはボードをじっと眺めて!

このボードには結構素敵な部品がついています!

・自由に文字を表示できるおおきな液晶(LCD)が1つありますね!
・LEDとスイッチがペアーでありますね!

さぁ....これだけのパーツ使って先ほどの扇風機のガチャガチャスイッチを少しだけ現代風?に蘇らせて見ましょう!

③動きと操作をシミュレートする!

仕様検討の第一歩です!まずは作る側ではなく使う側にたって考えます!
これがもっとも大切なのです!
いわゆる.....ユーザーライクというやつです!
操作と動きを私はこのように想像してみました。

(1)扇風機はいつもコンセントにつながれているだけです!

→ この場合はLEDもLCDも何も変化がないはずです。

(2)暑い!暑い!風がほしい~から、POWERスイッチを押して扇風機の電源を入れました!

→ せめて電源が入ったことを示してほしいです!

(3)とにかく暑いの風の強さのボタンをパチパチ変えながら風に当たります。

→ おした風のスイッチのLEDが光ったり、何かメッセージ位は表示して欲しいです。

LOWだったら......微風ですよぉ~ そよそよモード
MIDDLEだったら....いい風ですよ~ サラサラモード
HIGHだったら....強いですよ~ ビュンビュンノード

(4)「う~ん」十分風に当たってもう十分なので消します!

→ 一生懸命回っているところ申し訳ないですが....[POWER]を押します!
→ いきなりブツっと切れるのは寂しいから

....液晶画面に電源を切るメッセージが1秒ほど表示されたのち....
....プツっとすべてのLEDが消えFANが停止します

4.できる技術者のもう一つの大切なポイント

基本の仕様様はこれで検討できました。

これでおおよそ

『これ...すっごいよ!使いやすい!説明書なんて要らないよ~考えられてるなぁ~』

は満足ですが、もう一つのこれ....

  『おおおお~何やっても問題起きない!すっごいなぁ~ よく考えてるよ!』......

これには至っていません。
ここがシステムでは本当に大事なポイントです。
使う人は本当にあなたの想像を超えた、とっても信じられない使い方をします。

例えば、LOWとMIDDLEの両方を押してみてどんな風がでるか?とか....全部押したらすごいんじゃないか?とか.....
POWERスイッチも押さないで風のスイッチ押して「風が出ない!」と怒る人とか....

そうです!大切ポイントは 『起こってはいけないこと』 にも しっかり対応できるように考えておくことなのです。
これを業界用語では『エラー処理』と呼びます。
この 『エラー処理』 が甘い装置やソフトは、想像以外変な操作をされたときに、フリーズしたり、火を噴いたり....大変危ないものになってしまうのです。
では、この仕様の中で起こってはいけない『エラー処理』を想像してください。

私は起こってはいけないこととそれに対応した処理としてこんなこと考えてみました!

(A)一度にたくさんのスイッチがおされても、どれか一番最初に押されたスイッチしか有効ではない

(B)電源ボタンが押されていない状態で、LOW や MIDDLE や HIGH などのボタンを押したら、LCDに「POWERスイッチを押して!」と表示してPOWERのLEDを1~2秒間点滅させる。

※いきなり風を送る方法もありますが、こどもや赤ちゃんのいたずら防止であえてPOWERのワンクッションを加えました。

(C)POWERを押した後、全部のLEDが点滅して、「風のスイッチを押して!」と表示。2~3秒間の間に風のスイッチが押されなかったら自動で消える。

※これも いたずら防止と待機電力の停止(省エネ化)
どうでしょうか?まだまだありますか?
5.楽しい機能も追加しちゃいましょう~

さて....これからはせっかく自分で作る扇風機....製品第一号ですから、自分ナイズした面白い・可愛い機能というのもアリですね!

一度考えてみてください!

そうだなぁ....私なら、

(1)押した場所のLEDは押した後 POWER~HIGHまで4個 クルクルって全部流れてから、押した場所でピlコピコっと3回くらい点滅してFANが回りだすとか....
(2)メッセージ部分の文字、FANが回っている間FANの速度にあわせてスクロールしているとか....
(3)何回かスクロールしたらメッセージが変わるとか....

考えただけで楽しくなりますね!
これからの学習とプログラミングマスターのパワーになりますから、皆さんもいっぱいいっぱい贅沢な機能を想像してみてください!

6.マスターすべき基礎技術のまとめ

プログラマー・技術者の大切なポイントの最後がこれです。
我らエンジニアは常に新しい技術の研究と習得が大事です。

しかも短期間の間にこなしていかなくてはなりません。

コンピュータの世界は秒進分歩の世界です。

半年でどんどん技術が変わっていきますから、効率よく開発を完了するため、無駄な部分を省き、必要最低限の中でスキルをあげなくてはいけません。

そのためには、習得ポイントをしっかり自分の中で整理しそれをマスターしていくことです!

今回は.....

①好きなLEDを好きなようにコントロールできるようになる!
②液晶に思い通りの効果で思い通りの文字を表示できるようになる!
③スイッチのON/OFFの状況を感知できるようになる!
④FANをお好きな速さで回転させられるようになる!
⑤そして、これらの技術を思った動きのように組み合わせ結果をだせる!

さて....これは、プログラミングだけではなくほかの仕事(エンジニアに限らず)でも大切なことですね!
自分に与えられた業務の全体や命令・ミッションをしっかり理解して(仕様の検討)、そしてその結果を得るためにやらなければいけないことをしっかり整理して、ひとつづつこなしながら積み上げて答えを出す!

これをしっかり論理的に公式に当てはめて、コンピュータ上の動作として目の前で動く結果を出すことがプログラマのしごとなのですね!
プログラミングには多くの開発言語(CやC++やJAVAやPHPやBASICや....)がありますが、ほとんど全てが同じです。基本は命令と命令の流れをどう組み上げていくか?そしてその流れを作る制御の方法は全部同じ!違うのは細かい命令と書き方だけです。

人間は皆同じ!

朝起きたら「おはよう~」

ご飯を食べて「ごちそうさま!」

お礼をいうのは「ありがとう!」

別れるときは「さようならぁ~」

これらの言葉をどんな状況でいついうか?その判断は一般的には同じですね!
そして、その各単語が、英語だったり日本語だったりフランス語だったり....

プログラムも全て同じです。

だから、どれかひとつの言語をしっかりマスターしてしまえば、ほとんどどんな言語にも対応できます。もちろんそれぞれの癖などはありますが....
だから、この講座では、C言語のテクニックを教えるのではなくて、とりあえずC言語をマスターすることでプログラミングの基礎と開発の心をマスターしようとしているのです!
この講座が終われば、きっと皆さんは夢の世界の扉を開け、一歩踏み出したことになります!

-お勉強