読者です 読者をやめる 読者になる 読者になる

Mokosoft開発者ブログ

こんなブログ読んでも時間の無駄ですよ

とあるiOSプログラマが様々なプログラミングを習得するまでの経緯

http://www.flickr.com/photos/55883850@N02/6205922257

プログラミングをどうやって覚えたのか、という質問をよくされますが、独学です。

独学だなんてすごい、とか言われるので、多くの方はプログラミングは「教えてもらうもの」と思っているのかもしれません。

こんなもん、教えてもらって身につくわけがないんです。

結局は自己解決能力を養えるかということが、プログラミングの習得につながっていると思います。

問題が起こった時に原因を特定できて、それを調査し、解決することができるか。

これができるコツを掴めばプログラミングは難しく無いと思います。

 

というわけで、あんま関係ないのですが、私が今までにプログラミングを勉強してきた経緯や流れを書きたいと思います。

これから勉強する方の参考になれば幸いです。

1996年(15歳)ポケコンを触る

 

IT系という言葉が当時あったかどうかわかりませんが、それを志すようになったのは、兄の影響が非常に強かったです。

私の兄は、これからは学歴より手に職や技術を持っていないといけない、という先見の明を持っており、工業高校へ進学をしていました。

そこで、授業で使われるポケコン(ちょっと大きめの電卓のようなもので、プログラミング機能などが搭載されている)を触らせてもらったのが、本当に最初でした。

BASIC言語の説明などをしてもらったものの、さっぱり意味不明でした。

 

当時はポケコンの雑誌などが売られており、そこに掲載されているプログラムをポケコンに打ち込むと、ゲームができる、ということで、意味不明なままそのプログラムを入力させられたのが初めてのプログラミングでしたw

ただ、この意味不明な記述で、本当にゲームができたのが驚きでした。

 

1997年(16歳)パソコンを始める

高校に入学をした時に、親にめちゃくちゃ無理を言ってパソコンを買ってもらいました。

家はビンボーだったので、それまで、あれが欲しいこれが欲しいとねだったことはなかったですが、パソコンだけはどうしてもやりたかった。

 

それにはまたしても兄の影響だったのですが、やはり先見の明のあった兄は、当時スーパーファミコン全盛期の時代に「これからはCD-ROMの時代になる」と買ったゲーム機がNECのPC-ENGINE CD-ROM2でした。

 

周りの友達がスーパーファミコンでファイナルファンタジーやドラクエを遊んでるときに、うちはPC-ENGINE CD-ROM2でイースや、天外魔境をやっていたのだからこのギャップがすごかった。

 

 だってね、キャラがしゃべるんですよ。声優さんの声で。

音楽も三角波やFM音源ではない、CDの生の音。

スーパーファミコンでもテイルズオブファンタジアがしゃべってましたが、あれはADPCMでかなり圧縮してたので音質も悪い。

話が脱線しまくりですが、この時イースや英雄伝説などのゲームをプレイし、「自分もこんなゲームを作ってみたい」と思ったものでした。

そしてそれらのゲームの原作を作っているのは日本ファルコム、この会社は基本パソコンでしかゲームを出していない、パソコン欲しい!という単純なきっかけでしたw

 

ということで買ってもらったのがPC-9821 V13という、当時の最先端w のマシンでした。

 

 スペックがまたすごい。

HDD:850MB  (メガバイトですよ)

メモリ:16MB

CPU:Pentiumプロセッサ 133MHz

OS:Windows95

こんなマシンが40万近くするんです。今じゃ考えられないし、今にして思えば当時でも考えられない。

いつプログラミングの話になるんだって、余談がすぎますが、このマッシーンにですね、「FAXモデム」が搭載されていたことが私の人生を決めることになったのではないかと思います。

 

先にパソコンを持っていた友達に、当時はまわりにやってる人なんか全然いない「インターネット」をやろうぜ、と誘われたのがきっかけでした。

その後、私の高校生活はほぼインターネット漬けだったといっても過言ではないでしょう。

この辺話すとめちゃくちゃ長くなるので省略ですw

 

初めて勉強したのはやはりC言語だった

 

兄が学校でつかうC言語のテキストを持っていたので、それを借りて独習を始めました。

とにかく、本を読み進めて、書いてあるサンプルコードを入力して実行してみる。

ただそれだけでした。

まったく意味がわからない。

絶望的に理解できませんでした。

自分は向いていないんだと思いました。

C言語独習は1ヶ月ほどで挫折することになりましたw

 

次に勉強したのはPerl(+HTML)だった

上述したようにインターネットにずぶずぶだった私ですが、当時はWebサイト上での「掲示板」や「チャット」が主流でした。

こんなものを人の手で作れるだなんて夢にも思っていなかったところへ、件の友達が「ホームページの作り方教えてやろうか?」ときたのが事の始まりでした。

彼はメモ帳を開き、HTMLを記述し、それをブラウザでひらくと、marqueeタグで記述した文字が右から左に流れていくWebページが表示されたんです。

すげえええええええええええええええええ!!!!ってなりました。

 

そこから自分でもホームページを作ってみたい!となり、HTML習得のWebサイトを自分で調べ勉強を始めました。

GeocitiesやTripodなど無料のレンタルサーバーにホームページを作成して楽しんでいました。

当然、掲示板やチャットを自分のWebサイトにもつけたいと思うようになり勉強を始めることになります。

今は主流のPHPはありませんでした。なかったわけではないでしょうが、バージョンも低いしバグも多いし、なによりPHPが搭載されているレンタルサーバーなんてなかったですね。

CGI+Perlが主流だったんです。

そして、掲示板といえば、CGIレスキューというサイトがポータルサイトみたいなもんでした。

ここのPerlスクリプトをダウンロードして自分のWebサイトに設置するだけで、何日も費やしたと思います。

ここから、Perl独習が始まりました。

まずは、既存の掲示板やチャットのPerlスクリプトを修正して、自分ごのみのデザインにレイアウトすることから始まりました。

今みたくテンプレートエンジン的な概念ではなかったので、プログラムを修正しないとデザインも変更できませんでした。

それがうまくいくと、今度は機能を追加したり変更したりしたくなってみるもので、ちょっとした機能を追加するために、Perl言語の勉強に明け暮れました。

 

その時思ったのは「あれ?理解できる!」でした。

C言語の独習をわからないなりにやっていたおかげでプログラミングの基礎の基礎は理解できたため、Perlが思った以上に理解できました。

とても柔軟なプログラム記述ができるPerlであったことも大きいかもしれません。

 

そうなってくると、自分でも作れるんじゃないかと思い、1から掲示板を作ってみるような勉強が始まりました。

最初は、CGIレスキューの掲示板ソースを横でみながら、同じように1から全部書き写していくとこから始まりました。

そうしてプログラムの構造と流れが把握できたところで、自分なりの処理を付け加えたり改造を施しながら、また1から作りなおすということを繰り返していました。

こうしてPerlへの理解度が一層深まったと思います。

 

この時に培ったものは今でも人にプログラミングを教える際に伝えているのですが

プログラミングを勉強して理解できないときは、一定期間を開けて脳を整理させる
人のソースをとにかく読んで、技術を習得する
自分に合った言語で勉強を行う

 この3点がプログラミングの習得において、絶大な効果を発揮すると私は考えています。

そして、プログラミングはひとつを覚えてしまえば、他の言語を修得するのは、さほど難しいことではありません。

また、Perlの習得と同時に、サーバー技術やDB(CSVですが)への理解度も非常に深まったといえます。

 

1998年〜2000年(17歳〜19歳)とにかくいろんな言語を習得する機会ができた

もう長くなってきたので、色々と省略しますがw

当時インターネットで知り合えた方々のお陰で、様々なことを勉強することができました。

その一部の方々とは、後に仕事もすることになります。

まずPerlの次はJavaScriptだったと思います。

これも同様にJavaScriptを使って、ブラウザをばぐらせたり、ゲームをさせたりと当時はいろんなことがされていて、それをみてすげええええええええええ!となって、自分でも勉強を行ったと思います。

 

その後が曖昧なのですが、次はVBScriptを習得したと思います。

高校3年の時には、プログラムで仕事の手伝いなんかをすることもはじめ、上述したネットで知り合った方の仕事を手伝うといったことがきっかけです。

その時の環境がWindowsServerでASP(.netはつきません)とSQLServerを使ったシステムの開発だったので、VBScriptとMSSQLを利用してプログラミングの手伝いをしながら勉強を行いました。

 

VBScriptがかけるようになると、VBの習得はとても容易なので、このあたりでVBを使って簡単なアプリケーションを作ったりすることができるようになっていました。

そして、このタイミングでC言語へと舞い戻りました。

C++とWindowsAPIを使って、Windowsアプリケーションを作る勉強を始めました。

 

2年ほど前にはまったく理解できなかったC言語が、理解できるようになっていました。

有名な猫でもわかるプログラミングをとにかく読みまくり参考にして、Windowsアプリケーションが作れるようになりました。

しょうもないアプリを作って、Vectorなんかに公開したりして、それが今でも残っているのでびっくりです。

Vector: 作者: 艦長

 

 

後、この時期に情報処理技術者試験を受けるため、CASLの勉強を行いました。

アセンブリ言語はCPUのアーキテクチャにより仕様は異なるわけなので、これを勉強したら良い、というものは上げにくいのですが、CASL(いまはCASL2かな)は勉強しておいて損はないと思います。

プログラムがパソコンの中でどのように実行されるのか、という細かい動きがわかるようになります。

 

 その後就職してから 2001年〜

大学には行きませんでしたので19歳の時に就職をしました。

その会社では、Office Access + VBA を使って基幹システムを構築する仕事が主になっており、ASPで培った技術を活かすことが出来ました。

また、データベースへの理解はこの時に非常に深まったのと、サーバー構築などのスキルを磨くこともできました。

ガラケー向けのiアプリを作る機会もありました。

言語はJavaでかくんですが、昔は10kb以内の容量に収めないといけないとか、とにかく大変でした。

その会社ではWebに関する技術はあまり磨けなかったため、1年もたたずに転職。

 

ここでやっとPHPが登場です。

まだバージョンは3.xくらいでオブジェクト指向でもないし、バグも多々あるし、ただPerlより早いので、PHPへの切り替えが行われ始めた頃だと思います。

この頃に、Linuxサーバーの構築などの技術もより磨きをかけることができました。

 

 後はJavaの習得もこのへんでやったと思います。

この辺りになれば、どんな言語もリファレンスを読めば書けるようにはなっていたと思います。

ブロードバンドが普及し始め、ネットワークゲームも流行りだした時期だったので、ネットワークゲームのクライアント・サーバー通信プログラムも作ったことがあります。

結局お蔵入りとなりましたが、TPC/IPに関する知識はとても深くなりました。

 

 

2003年頃(22歳頃) 起業

その後2社目の会社も退職し、その時知り合ったメンバーでIT企業を立ち上げました。

確かこれくらいの時期だったと思うんだけど曖昧ですw

今はもうそこは抜けましたが、5〜6年くらいはあれこれやってました。

あんま覚えてないんですが、一番記憶に深いのは、ガラケー向けの動画配信サービスの根幹を作って、動画に対する知識が非常に深くなったといったところでしょうか。

当時はスマホがなかったので、ガラケー向けへの動画配信は色々なところが挑戦をしていたんじゃないかと思います。

メガDOGA | 法人向けPC・ストリーミング・携帯動画配信サービス|メガDOGA

f:id:mad_ochi:20140117101334p:plain

今ではこんなサービスになっています。

スマホも対応が行われたみたいですが、ガラケー向け動画配信の需要は下火かもしれませんね。

 

全然関係ないのですが、ここの会社でやってるZopimというサービス。シンガポールで開発されたものなのですが、このサービスがイチオシなので宣伝ですw

Webサイトにいわゆる「チャット窓」をつけて、来訪してくれたユーザーとコミュニケーションが取れる仕組みなんですが、とにかく安い!

んで、機能が豊富でCRM機能に優れています!

オンライン接客ならZopim(ゾピム)- ZopimJP

f:id:mad_ochi:20140117102104p:plain

ECサイトなんかには必須のツールになってくると思います。

大人のお店系ではこれのお陰で売上倍増してるそうです。

 

 

そして、iPhoneが発売される 2007年ぐらい?

http://www.flickr.com/photos/59504749@N00/3641796968

 

 なんとも衝撃的でした。

たしか日本では、iPod Touchの発売の方が先だったと思います。

これは絶対くる!と思って発売日に買いました。

当時周りの反応は冷めていたのを思い出しますw

誰も手を出さないんですよね。なんでや!と思いました。

 

その後発売されたiPhone3Gも発売日に手に入れました。

これしかないと思いました。ジョブズは本当に天才ですね。

iPod Touchが、外で電話回線で使えて、電話もできるんですから。

 

そこから、会社でmac miniを購入して、Objective-Cの勉強を始めました。

そんですんげーしょーもないアプリを作って公開しましたw

ほんとにしょーもないです。

でも嬉しかったですね。

 

大喜利ドリル

大喜利ドリル

  • CFactory
  • ゲーム
  • 無料

 これw まだあるw

つまんねーーーー でもiOS7で動いたw

 

そこから、仕事でiPhoneアプリやAndroidアプリの開発を請け負うようになったり、自分で作ったりなんやかやとして今に至るという感じです。

そこの会社もやめて、フリーランスになり、もっかい就職して、またやめて、Mokosoftを法人化して2度目の起業です。

 

結論めいたこと

やはり頭でっかちになってしまい、やっても無駄だと思うことは良くないと思うのです。

とにかく何にでも挑戦してみて、がむしゃらにあれやこれやとやってみる。

習得したことで自分の役に立たないことだってあるかもしれませんが、私の場合は今まで得た知識や技術はすべてが役に立っていると感じています。

 

後、自分にできないことだと勝手に判断して挑戦しないことはやめましょう。

自分にできないこと、技術がないことだから、あえて挑戦してみる方が絶対に良いです。

めちゃくちゃ大変な過程にはなりますが、得るものが大きいと思います。

 

ネットで見た情報なので、本当かわかりませんが、下記の引用は本質を捉えていると思います。

 

いいともでタモリが漏らした仕事論。「自分の中で『これくらいの力がついたらこれくらいの仕事をしよう』と思ってもその仕事は来ない。必ず実力よりも高めの仕事が来る。それはチャンスだから、絶対ひるんじゃだめ」以前萩本欽一も言ってた。「やりたくない仕事しか来ない。でも運はそこにしかない」 

 

案の定参考になるどころか、どうでも良い話ばかりになってしまいました。

また、プログラミング習得まで長くかかっているじゃないかと思われそうですが、本当に理解できず孤軍奮闘したのは最初の1年だけだと思います。

そこから先はプラスアルファの技術の習得なので、最初の1年が肝、というお話でした。

 

そして、知的好奇心と、飽くなき探究心。これが今までプログラミングを続けてこられた理由ではないかと思います。