だぶるばいせっぷす 新館

ホワイトカラーではないブルーカラーからの視点

【プログラミング】 python奮闘記 その1

ここ最近、本業がヤバイぐらい暇になり、この先も続けていけるのか不安になってきた為、今のうちに新たな技術を身に着けておこうと、プログラミングの勉強をはじめてみました。
勉強している言語は『python
何故、『python』を選んだのかというと、最初に書いた事をTwitterで呟いたところ、『python良いですよ!』と進められたからです。

勉強し始めてからわかったことですが、pythonは今流行りの機械学習なんかで、ほぼ独占状態になっているので、結構、熱い言語みたいですね。
また、言語自体も分かりやすいらしく、初心者がプログラミングを習うにはもってこいなんだそうです。
ただ、PearlでもRudyでも『初心者が始めるにもってこい!』って主張してるんで… 本当は何から勉強すれば良いのかは、正直わかりません。

こんな感じで、結構適当に『勉強しよう』と思って始めたのは良いのですが、プログラミングの勉強そのものが初めてなので、何から初めて良いのかわからない…
私は過去には、【HTML】や、それに付随する【CSS】なんかは勉強して、本業の宣伝サイトを作ったことがあるのですが、それとは全然、勝手が違う。

というのもHTMLというのは、基本的にはタグで囲むだけで出来るから、基本構造を理解するのに1時間もかからないし、勉強しようと思ったその日から、試しにテストページを作るなんて事も出来るんですよね。
HTMLの知識がない人の為に書いてみると、こんな感じ。

<p>段落でまとめる</p> <b>太文字にする</b>
<>でタグを作って、同じタグを『/』を付けたタグで閉めればOKで、後はタグを使ってレイアウトしていくだけなんです。
こんな感じなので、テストページを3日程かけて作ってしまえば、、後は、それを装飾する為に他のタグを覚え、編集しやすくするためにCSSを勉強するという筋道もハッキリしているし、何よりも、HTMLを使って作りたいページというのが明確にイメージできる。
ゴールを明確にイメージできるのであれば、後はゴールに向かって進むだけなので、作りながらわからない部分を検索して、自分のソースに導入するなんてのもイメージしやすい。

でも、これがプログラミング言語となると、話が変わってきます。
初心者では、HTMLの様に直感的にイメージできるものではありませんし、そもそも、どこから勉強してよいのかも分からない。
本当は、人に習うのが一番いいのかも知れませんが、pythonを京都で教えている所がまず無い状態ですし、他の言語を教えるプログラミング教室がないこともないですが、料金が結構高めに設定されている。

何となくプログラミングを始めた私が、そんな出費を覚悟しているわけもなく、取り敢えず本を購入するところから始めてみました。
まず最初に購入した本はこちら。


      

まず、『Pythonスタートブック』というネーミングが良いですよね。
しかも、『全くのゼロからでも大丈夫!』って書いてあるので、プログラミング知識ゼロの私にはもってこいのはず。 って事で、早速購入して読み始めてみました。

読んだ感想としては… 『まぁ…良いんじゃないですか?』って感じ。
社会人がプログラミングを勉強する事を前提として書かれている感じで、『hello world』の出力から始まり、簡単な計算や変数への代入。
関数の作り方や、モジュールのimportの仕方、ifを使った条件分枝やforを使ったループの文まで一通り丁寧に解説してありましたが…

じゃぁ、これを読んでプログラミングが出来るようになるのかといえば、私は出来るようにはなりませんでした。
料理で例えるなら、人参やジャガイモと言った素材の説明から、それを調理するための切り方が懇切丁寧に書かれていて、その後に、『切った野菜に塩等のスパイスをかけると、良い感じになりますよ。』ってことが書かれている。
そして次の章で、『野菜の切り方とスパイスの存在は理解してもらえたと思うので、後は自分で試行錯誤して、カレーを作ってみましょう!』みたいな感じ?
書かれているソースを丸写しする事でプログラムは動くのですが、それを自分で一から作れと言われても、何処から作り始めてよいのかもわからないし、他に応用も出来ない。

まぁ、これは単純に私の理解能力が低すぎるだけで、並の学力がある人間であれば、これを読むだけで自分でプログラムが書けるようになるのかも知れませんが、私が読んだ限りでは、書ける様にもなりませんでしたし、どんな事が出来るのかも想像できませんでした。

その事を、再びTwitterに投げかけてみたところ、ゲームのプログラムが付属している本が有ると紹介頂いたので、次はそちらを読んでみました。


      

この本は、前半部分は最初に紹介した本と同じで、基本的な部分からの説明になってはいるのですが、違う部分が有るとすれば、pygameという別のモジュール?のインストールが必要になる事です。
最初に紹介した本の内容を前半部分だけで説明しているだけあって、内容は最初の本に比べると圧縮されていますが、既に1回説明を受けている私にとっては、これぐらいの説明の方がまどろっこしくなくて良かったです。
そして後半部分では、ゲームが紹介されていて、そのソースコードそ解説が載っています。

買った当初こそは、『これこそ、求めていた本!』って感じで喜んで読めてましたが、ゲームのソースの説明になった辺りから、全く読み進めない状態に。
というのも、書いてあることが理解できないんですよね。 取り敢えず、写経でもしてみれば良いんじゃないかと思ってゲームのソースを書き写して観るというのを数回繰り返してみたのですが…
そもそもソースに書かれている事が理解できてないので、写経の意味があるのか無いのかすら分からない。
仮に、『ここに紹介されているゲームと似たゲームを作って。』と誰かに言われたとしても、絶対に作れない自信がある。
何度も言いますが、何処から書き始めてよいのかすら想像ができない状態なので、当然、ゲームを完コピで作ることも出来ませんし、アレンジなんてもっての他。

賢い人であれば、このレベルの本でもスムーズに読み進めることが可能なのかも知れませんし、私にもっと知識があれば、書かれていることを理解して応用することも出来たのかも知れませんが、私にはまだ、早過ぎたようでした。。

とうとう行き詰まり、プログラミングについての興味も徐々に失われていってしまったのですが、ここで、ある言葉を思い出しました。
『新分野の勉強をする際には、社会人に向けられて小難しく書かれた本ではなく、小中学生向けの入門書を読むと良いよ。』

この言葉を思い出し、元々そんなに無いプライドを捨て、購入した3冊目の本がこれ

      

こ・れ・が、大当たり!!
この本も、ゼロからと謳っている通り基本から親切丁寧に書かれているのですが、親切度合いが違います。
普通に基本を勉強してプログラミングをした場合、素人考えならこんな感じでコードを書くんじゃないかな…って事を予測して上で、素人っぽくコードを書いて紹介してくれています。そして、実際にそのコードを実行すると、見事にエラーが出ます。
エラーが出たあとで読み進めると、『エラーが出てしまいましたよね。 普通はこんな感じでコードを書きたくなってしまいますが、pythonの設計上、そう書くとエラーが出てしまうので、回避する為にこの様に書きます。』
って感じで、素人が失敗しそうな行動を敢えてとって解決方法を提示するという方法で書かれているので、かなり理解がしやすい。

また、この本では5つぐらいのプログラムが紹介されているんですが、それを自分なりに書き換えることで応用する事が結構簡単に出来る感じです。
例えば、最初に紹介されている、テキストボックスに適当な数字を入れると、それを時間に換算してくれるというプログラムがあります。
書き込みスペースに『360』て書くと、『6時間です』って返してくれるプログラムなんですが、それを応用すれば、私の本業用の簡易見積りツールなんかも作れる感じです。

その他にも、簡単なRPGのプログラムがあるのですが、これを応用すれば、時間さえかければファミコン版のドラクエレベルならすぐに作れそうな感じもします。
つまり、この本の素晴らしいところは、『このプログラムを応用すれば、こんな事もできるんじゃないか?』と思わせてくれるところなんですよね。

プログラミングに限らず、あらゆる分野で成長するために必要なのは、モチベーションの維持とモノを作り続ける事だと思いますが、プログラミングの場合、そもそも何がどんな方法を使えばどんなモノが出来るのかというのが分かり辛く、そもそも初心者の段階ではゴールの設定が出来ない訳ですが、この本は、そのゴールを見つけさせてくれたという点で、私にはかなり合っていたんでしょうね。
という事で、現在、本業が暇すぎる私は、簡易見積りツールを作っているわけですが、機会があれば、奮闘記シリーズで進捗状況を報告していこうと思います。
kimniy8.hatenablog.com