ゼロからプログラミングを学ぶ上で言語選択より大切なこと

2013/05/13 9:00:00

 プログラミング勉強したいんだけど、どこから手を付けたらいいの?
 http://blog.livedoor.jp/news23vip/archives/4453300.html

 最近、この話題が流行っているようなので、自身の経験談を交えて、思うことを書くことにしました。

 僕が本格的にプログラミングを始めたのは、大学生になってから、2000年代初頭です。インターネットにハマり、自分でもホームページを持ちたいと思ってHTMLを勉強して、その後でです。もっとITのことを勉強したくなり、その一環として「プログラミング」を学びたくなりました。

 ちなみに、僕は教育学部(理科の先生を目指していました)。情報系の畑では無く、全くの素人でした。

 さて、どの言語を学ぼうか調べてみると、「Visual Basic」が初心者向けだという情報を見て、更に、大学の情報処理センターのPCにもVBがインストールされていたので、本を買って情報処理センターで勉強を始めました。

 さっぱり、わけがわかりませんでした(苦笑)。

 他の言語をやってみようにも、同様にわけがわからず。とりあえず本の内容を(わからないことがあったとしても)「こういうものだ」と思いながら進めていけば良かったのかもしれませんが、ちょっとでもわからなくなるだけで先に進もうという意欲が薄れ、すぐに挫折。根底の根底といいますか「プログラミングとは何か」というレベルから理解していなかったのだと思います。今にして思えば。

☆★☆

 プログラミングがわかるようになったきっかけは、基本情報技術者の午後試験の勉強として「アルゴリズム」のことを勉強してからです。

 福嶋先生の基本情報技術者 集中ゼミ 午後・アルゴリズム編 2013年版

 この、福嶋先生という方のアルゴリズム問題対策の書籍は、僕が基本情報技術者の試験を受験した頃から既に発売されていました。この本は、ただの午後問題対策だけではなく、「アルゴリズムとは何か」「上から下に処理が流れる」といった底辺のレベルから解説を始めていました。この本で、僕は基本情報技術者に独学で合格できましたし、この本の内容をマスターしてから、プログラミングも出来るようになりました。docomoのiアプリや、HSPというゲーム作りに強い言語でWindows用のミニゲームを作って遊ぶように勉強していました。

☆★☆

 僕の経緯の話は、ここまでです。

 つまり今回、何が言いたいのかといいますと、プログラミングをゼロから勉強するのであれば、「どの言語を勉強するか」という観点より「まずはアルゴリズムをしっかり学ぶ」ことの方が大事だと思うのです。

 本質を理解しないまま、本のサンプルコードを打ち込んで実行して、本にある通りに出力されて、「こう書けばこう動く」というように「(とりあえず)こういうものだ」と覚えていきながら本を進めても、行き着くところはコピペプログラマな気がします。「趣味で独学」にせよ、「新人研修でプログラミングの基礎を学習中」にせよ、簡単なレベルで挫折してしまうことなく、作りたいと思うプログラムを作れるようになるためには、基礎の基礎から、本質を理解しながら学習していくことが大事だと思っています。

 アルゴリズムアルゴリズムと、しつこく書いてきましたが、では、言語選択とアルゴリズム学習の関連はどうするか。企業の新人研修であれば言語は予め指定されているので、その言語の研修を始める前にフローチャートか何かでアルゴリズムの話をしておく方が良いでしょう。簡単なサーチとソートのアルゴリズムまで行えればベストです。目的(作りたいものの構想)が既にありましたら、それに合う言語を選べば良いと思います。ゲーム作りであれば、今の時代ならJavaScript(+enchant.js)がやりやすいかなと。

 もし、「今は特に作りたいものも無いけどプログラミングを勉強してみたい」というのであれば、プログラミングの本質を理解する(先にアルゴリズムを学習する)ときに、言語を理解する労力は抑えたいところです。一度に覚えるべきことは極力減らすべき、という理由です。そのためには、フローチャートで紙に書くのでも良いですし、PCで何か作って確認していきたいなら、僕自身はScratchが一番良いと思っています。最近、Scracthは、ブラウザでWebからプログラミング出来るようになり、開発ツールをインストールする手間が省けるようになりましたし、「Scratchは子供向け」というイメージが強いかもしれませんが言語習得の労力は他の一般的な言語より少なく済むはずです。

 参考)
 子どものためのプログラミング言語Scratchがブラウザから使えるようになった
 http://jp.techcrunch.com/2013/05/11/20130510kids-programming-tool-scratch-now-runs-in-the-browser/
 「すべての人がプログラミングを学ぶべき」---米MIT教授が三鷹市の小学生に伝授
 http://itpro.nikkeibp.co.jp/article/NEWS/20130127/452101/

☆★☆

 Scratchが無い頃は、「日本語プログラミング言語の『なでしこ』とか初学に良いのではないか」と色々な方に言っていました。言ってみたものの、ほとんどの方に反対されました^^; C言語など現場で使われている言語でなければ意味が無い、などの理由で反論されました。ただ、どうしても、「言語よりアルゴリズム」という思いは変えられません。学校の情報教育でアルゴリズムを取り入れると良いのに、とまで思っていますが、なかなかそういうわけにもいかないのは理解しています。なので、少なくとも、これからプログラミングを始めたい方、情報系以外の畑からIT業界を目指したい(既にIT企業に入社された)方に、挫折しないためにも、プログラミングの本質を理解するためのアルゴリズムの学習を勧めたいです。

 僕自身、一人でも多くの方の助けになるなら、何らかの活動に参加したり、自分で何か企画して実施したりして、手助けをしていきたいです。

 どこかでブログを作って、Scratchを使ったアルゴリズム学習の記事でも書いてみるとか面白いかな……。

「君は、何エンジニア?」に答えられるようになった1年間(と少し)

2013/05/01 21:30:00

 独立して、結婚して、ちょっと進む道を間違えて……。いろいろあった1年でした。

 そんな1年の一番の収穫は、「自分は何エンジニアか」、つまり「普段、何を作っているか」や「自分は何の技術分野に一番強いか」に胸を張って言えるようになったことでしょうか。

 はっきり言うと、「スマホアプリ(エンジニア)」。この1年、スマホアプリの仕事ばかりしていたので。iOSアプリ(Objective-C)にAndroidアプリ(Java)。Titanium MobileやPhoneGapによる案件も行いました。ほとんどはフリーランス(SOHOエンジニア)としての請負案件ですが、目に見える実績として、自作アプリをApp StoreやGoogle Playで公開してもいます。Windows Phoneなどの、いわゆる「第三極」にも意識して目を向けています。

 「エンジニアライフ」を始めたときの自分は、何が強いかと言われても…… 特にありませんでした(苦笑)。最新の技術を追うことは好きであるものの、会社では運用保守のお仕事が中心。しかも、技術情報をアウトプットするといったインフラエンジニアとして誇れるようなことは特にできておらず。開発のお仕事ではPHPを中心に携わってはいたので、インフラ含めLAMPは得意だとは言っていました。事実として。それでもLAMPができる人なんてゴマンといますから……。絶対的な尺度でなら「LAMPは得意です」と言えますが、相対的な尺度で「他の人よりLAMPはできます」とは言えなかったです。

 なので、ここで書いている話も「メンタルヘルス」だったり「ドラッカー」だったり。あまりに他のコラムニストさんと毛色が違うことに悩むことも多々ありました。

 今なら、はっきり、「僕はスマホアプリが作れます!」と胸を張って言えます。自作アプリの公開実績が、より自分に自信を持てるようになりました(今後、Gitでのソースコード公開の実績も作りたいなと考えています)。「iPhoneアプリの作り方」に関するセミナーの講師も担当し、人に教えられるほどになりましたので。

 また、会社員時代からスマホアプリをやってみたかったというのも大きかったです。あらゆるスキルが足りない自分が悪いのですが、会社員時代は学習していても機会に恵まれなかったのが、独立した身では、仕事募集サイトで応募して採用されれば仕事ができる環境です。もちろん、請けたからには、しっかりやらないとならないので、しっかりやっています。楽しいです。やり甲斐があります。独立して良かった一番の点でもあります(ただ、独立して悪い点もあり、家族には迷惑をかけています……)。

 少なくとも、エンジニアとしての自信は持てるようになりました。「ソフトウェアテスト」の分野にも近くなり、いろいろとテストのことを考えるようになりました。「バグを減らしたい」という観点から、流行りの「関数プログラミング」の学習も始めました。こうして、技術に触れられているのが楽しくて仕方ないです。

 よくT型のエンジニアになりましょうね、という話がありますが、僕も、この歳になり、よりそう思うようになりました。いろんな技術知識をある程度もちつつ、特化した分野を持つというのは、エンジニアとしての自信をつけるという意味でも重要だと思います。今の仕事が楽しければ、その分野を極めれば良いですし、「本当はやりたいことではない」のであれば、勉強会に参加したり、個人で何かを作って、その作ったもの自体もしくはソースコードを公開したりすればいいのだと思います。

 GWですし、自分自身は今後、どうしていくか、考えてみてはいかがでしょうか。僕も考えます。スマホアプリに強くなったとはいえ、この一年は闇雲に走ってきてしまいまして、とにかく前に向かって走っている中で運良くスマホアプリの話をいくつかいただけたことで、結果的にそうなったという感じです。もう少し、戦略的に方向性を定めて、今後は仕事をしていきたいなと思っています。

自らが主体的に選択して築く未来へ

2012/11/05 17:00:00

 この本の話を書きたいなと思っていたら先を越されてしまいました(^^;

 僕も、この「ワーク・シフト」の本を読みました。未来の自分の働き方を考えさせられる一冊で、2012年に出版された本の中で一番のお気に入りです。自分の頭の中を整理する上でも、今回、この本の内容に関連して「未来をどう迎えるか」について書いていきたいと思います。

 副題に「2025」と書かれているように、この本は2025年の未来を見据えて、一人ひとりがどう考えて仕事をしていけば良いかを考えていきましょう、ということが書かれています。今のこの時代は、産業革命以来の大きな変革の時期にある、というのです。それはなぜか。本の中では大きく分けて「テクノロジーの進化」「グローバル化の進展」「人口構成の変化と長寿化」「社会の変化」「エネルギー・環境問題の深刻化」の5つの要因(更に細かく、現象別に分類すると32個の現象)が基になっています。

 この本は特定の業界・職業に絞ってはおらず、どの職業の人でも考えさせられる内容になっています。ただ、ITエンジニアの方には特に読んだ方が良いように感じました。その理由のひとつが、先ほどの5つの要因(特に「テクノロジーの進化」)が大きく関係しているからです。32個の現象から一部を引用すると、例えば「インターネット」と「クラウド」。本の中では、50億人がインターネットを利用でき、いつでもどこでも情報にアクセスできるような環境が出来上がると書いています。

 50億人がいつでもどこでもインターネットで情報にアクセスできるということは、今の時点でも中国とインドの成長が目覚ましいですが、更なる新興国が台頭してくる、つまり、ライバルが増えるという予想も難くないわけです。

 また、いつでも情報にアクセスできる、ということは、今まで以上に情報のシャワーを浴び、結果的に今以上に時間に追われる可能性がある、という指摘もしています。

 本書では、5つの要因ならびに32個の現象を基にして、2025年を生きる一人ひとりがどのような生活を送っているかについて、ネガティブな未来とポジティブな未来の予想をしています。(その中には「いくらなんでも、こんなことが実現するかな」と思ってしまうようなものもありますが、可能性はゼロとは言い切れません。)

 では、ポジティブな未来のために、どうしていけば良いか。本書では、タイトルのとおり、「ワーク」を「シフト」することを訴えています。「シフト」する内容は3つ。一つ目がゼネラリストから連続スペシャリストへシフトする、というもの。悪く言えば「何でも屋」と言えてしまうゼネラリストではなく、ある領域(技術)を深く学びましょう。特に、この先に未来でニーズが高まると予想されるものについてスペシャリストになりましょう、というものです。「連続」の言葉のさす意味は、時代の変化に応じて、その分野に固執せず、別の分野の技能と知識の習得も覚悟しなくてはならない、という意味での「連続」です。

 二つ目が、孤独な競争から「協力して起こすイノベーション」へシフトする、というものです。50億人がインターネットにアクセスできるということは、新たな人的ネットワークも作りやすいので、孤独に革新を起こすのではなく人と人とが結び合って革新を起こしましょう、というものです。人と人との結びつき方として「大きなアイデアの源となる群衆」「同じ志をもつ仲間」「情緒面と安らぎを与えてくれる人間関係」の3つを挙げています。このような人間関係を構築するための意識的な努力が求められています。

 三つ目が、大量消費から「情熱を傾けられる経験」へシフトする、というもので、本書では一番重要だとされているように書かれています。例えば「いい会社に入って沢山のお給料を貰い、結婚して子供を産んで、車とマイホームを買って……」といったような昔からの考え方を脱却し、職業人生として幸せを感じる方向へシフトしましょう、と言っています。そのために、こういう選択をしたらこういう結果が待っている、という選択肢とその結果を考えて、その上で決断に踏み切らなくてはならないのです。

 もう少し簡潔にまとめると、本書の帯にも書かれているように「忙しいだけの仕事」から「価値ある経験としての仕事」へシフトする(一つ目のシフト)、「勝つための仕事」から「ともに生きるための仕事」へシフトする(二つ目のシフト)、「食えるだけの仕事」から「意味を感じる仕事」へシフトする(三つ目のシフト)、ということです。

 「シフト」すると書かれてはいるのですが、要するに「自ら主体的に未来を選択していきましょう」と言っているのではないかと思います。

 以前、僕は「晴読雨読」の記事の中で「すべてはあなたが選択している」の本の書評を書きました。

 未来について考えず、漠然として未来を迎えると、先述のように時間に追われるばかりの未来がやってくるかもしれません。どのような方面へ行くか、どのような仲間を作るか、どのような幸せに重点を置くか。流されるままに辿り着いた未来も、自分で考えながら進んだ未来も、どちらも自らの選択で選んだ未来なのだと思います。だったら、漠然として選んだ未来より、自らが主体的に(意識的に)選んだ未来へ進もうとするべきではないでしょうか。

 本書に書いてある5つの要因ならびに32個の現象で、自分が気になるものをピックアップする。それらについて詳細に調べ、深く考察する。書いていないことでも、自分で考えられる要因・現象があれば付け加える。そして、それぞれを並べてみて、自分の未来図を見いだす。その未来へ行くために、3つのシフトを行う。本書ではそれを推奨しています。読書の秋ですし、ここに書ききれないことも沢山、本書には書かれているので、一度お読みになり、自分自身の未来について考えてみるのも良いのではないでしょうか。

 ちなみに、未来で起こりうる現象を考える上で、現在だけでなく歴史を踏まえることも心がけましょうと書いています。「産業革命以来の大きな変革の時期」と書きました。であれば、産業革命時にどのような大きな変化が起こったかを振り返ることで、この先の未来で大きな変化が起きそうな場合の予測の精度が上がるからです。僕は学校時代は社会科(特に歴史)が大の苦手でした。暗記だけの科目だと思っていたからです^^; この本を読んでから、世界史・日本史を勉強し直すための大人向けの本を読んでいます。試験勉強ではないので、詳しい年号や人物名を詳細に覚える必要はありません。こういう時代背景・地理的背景があって、こういう流れで、この出来事が起きた、というのを学べば充分です。これを意識して、ようやく、歴史学習が面白くなりました^^; 歴史を学び直すことも楽しいですよ。

人に任せるお願いをするのが苦手な自分が人に任せてみた

2012/10/19 13:30:00

 というより、任せざるを得なかったというか。

■またまたstudy4bgやります

 さて、本題の前に、本題に関わる告知をさせていただきます^^;

 来週末の10月27日(土)、またまたアイティメディア様の会議室をお借りして、「勉強会初心者のための勉強会」を開催する運びとなりました。更に今回も、エンジニアライフから「What a wonderful world」の、たのっちさんをゲストスピーカーに招き、講演と簡単なグループワークを行う予定です。まだまだ参加者募集中です。よろしくお願いいたします。

 勉強会初心者のための勉強会 2012年秋の陣

 上記のATNDページより、ぜひ参加登録して下さい。

■準備が何もできない状況だった

 実は、ここ数ヶ月、公私で多忙な状況が続いていました(機会があれば色々と書きたいと思っています)。コラムも書けませんでした。前回の勉強会のレポートについては、奥様のコラムを読んでいただけると幸いです^^;

 「勉強会初心者のための勉強会」で講師デビューしました(オブリガート ~感謝されるテストエンジニアになる~)

 次回study4bgの勉強会に関しても、やりたくても準備できず、しばらくは開催できないかなと考えていました。主催である僕自身が何もできそうにないので。

 そんな中で、奥様が手を挙げてくれました。元々はスタッフに入ってくれるという話だったのに、気づいたら準備をほぼ全部やってくれました。というか、任せてしまいました^^;

 更に、今回のゲスト、たのっちさんも以前から「次回、ぜひ講師やりたいです」と仰ってくれていたので、お言葉に甘えてしまい、すんなりとゲストも決まりました。

 というわけで、今回、僕は今回の勉強会に関しては、ほとんど何も出来ませんでした(やったことといえば、ATNDを立てたり、他の告知ツールも使って告知したくらいです^^;)。奥様、たのっちさん、アイティメディアの編集Oさん。様々な方の協力で、何とか来週、開催できます。ありがとうございました。それにしても、うちの奥様、こういうセミナー準備などに慣れていて、流石という感じでした(笑)。助かりました。

■任せてしまうのも悪くないなと思った

 自分の性格上、どうしても僕自身が頑張ってしまおうとする癖を自覚していました(主催なので)。その割には、イレギュラーというか想定外というか、そのようなことが起こると頭が真っ白になって何も出来なくなるわ、手伝ってくれる方々に何も指示できないわで。でも、理念を共有していれば、人に任せてしまっても良いのだなと思いました(今回は敢えて任せたというより、必然的に任せることになったというか、奥様が何も言わなくてもどんどんやってくれたという形ではあったものの^^;)。

 また、任せるというのは、この活動を続けていくためにも必要なことなのかもしれません。自分ひとりで頑張ろうとしても、その自分が倒れたり多忙だったりしたら、出来なくなってしまうので。実は前回の勉強会後、「1周年記念で過去の参加者に声をかけて振り返りを行うような会を開きましょうよ」とか「そろそろ浅見さんも他の勉強会に参加しに行ってみましょうよ」などというお話を頂いたのに、実現できませんでした。色々なことを自分でやろうとして、結局、何も出来ない状態でした。そういったことを踏まえた上でも、次回以降も色々な方にお手伝いをお願いするようにしたいなと考えています。

☆★☆

 というわけで、来週末、「勉強会初心者のための勉強会」を開催します。ぜひ、上記のATNDのページからご登録の上、ご参加ください。

「勉強会初心者のための勉強会」をアイティメディアさんの新オフィスで開催します

2012/07/04 0:15:00

 新オフィス移転、おめでとうございます!

 いやー、めでたいですね。

 さて、ここからは、ステマ(笑)。

 この度、このアイティメディアさんの新オフィスで「勉強会初心者のための勉強会」を開催する運びとなりました!(前回と同じで、また借りることになりました。ありがとうございます。)3ヶ月毎くらいで開催したかったのに、大変お待たせして申し訳ありませんでした。

 開催日は7月14日(土)。15時からスタートです。

 さて、新オフィスでの開催ということの他に、目玉がもうひとつ。

 今回のサブタイトルは「夫婦駆動勉強会」とさせていただきました。ゲストスピーカーに、コラムニストの第3バイオリンさんこと僕の妻(笑)をお招きし、「勉強会コミュニティの地域性」について講演いただいたり、簡単なソフトウェアテストのグループワークを行いたいと考えています。

 詳しくは、以下の新ATNDをご覧下さい。
 http://atnd.org/event/study4bg2012sm

 アイティメディアさんの新オフィスを拝見できるチャンスです。1ヶ月前からATNDは立てておりますが、まだまだ全然、席は余裕ですので、ぜひ、ご興味のある方は、ご参加下さい。

 また、今回も、運営側に回ってくださる方を募集しています。役立たずの主催に「ああしよう」「こうしよう」とアドバイスしてください(苦笑)。

 皆様のご参加、心よりお待ちしております。

@IT Special 注目企業
@IT Special ラーニング

エンジニアライフ 最新の投稿コラム

@IT自分戦略研究所 新着記事



コラムニスト プロフィール

浅見憲司(あずK)
Web系(LAMP)の運用・開発エンジニアを経て、埼玉県所沢市で「マテリアル所沢」を開業、パソコン教室の運営やWeb制作(請負)の仕事をしています。また、プライベートで「勉強会初心者のための勉強会」を主催しています。ITと教育、さらに、それらをつなぐことに関心があります。これからもいろいろと学び続けたいと思っています。

2013年5月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

バックナンバー

月間バックナンバー

検索

Powered by TypePad
- PR -
@IT Special 注目企業
インデックス

イベントカレンダー

アクセスランキング

もっと見る

@IT Special ラーニング