Pythonの「超」入門書をやり遂げました!
【確かな力が身につくPython「超」入門】
印象に残ったことを書いていきます!
まずは、GUI( グラフィカルユーザーインターフェース)についてです。
通常、PC内のファイルを開くときは
ファイルを閉じるときは、ウィンドウにある閉じるボタンをクリックします。
今回、ターミナル(コマンドプロント)を使って、
普段当たり前のように使っているGUIを使わずに、
以前、『Linuxは全部コマンドで操作するんだよ』
Linuxって大変なんだなぁ……と思いました。
GUIがなかった時代は、こんなに複雑なことをしていたのか……
パソコンはGUIのおかげで広く普及したんだろう
と、思いました。
私の研究分野でも、
それは『量子化学計算』と呼ばれる手法です。
計算により、思い描いた化学反応が進むのかどうかとか、
この手法を利用するためには、コンピュータを使ってプログラミングのように計算の指示を打ち込む必要があります。
計算専門の研究者しか手を出せず、私のようなフラスコを振って実験ばかりしている研究者には手が出せませんでした。
しかし、GUIが用意されているソフトが出てからというもの、
GUIのおかげでハードルが低くなったんですね。
私のようなパソコンが苦手な人間には、GUIに助けられている…
話は戻りまして、Pythonの勉強の続きです。
ちょっと感動したことがありました。
ターミナルで指示を出し、写真の色を変えることができました!
パソコンの画面の色は赤(Red)、緑(Green)、青(Blue)のRGBカラー
それらの色を入れ替える指示を出すことができるんです。
(例: 青い花を赤い花にする)
『写真の色を変える』という実際に目で見て非常に分かりやすいアウトプットでしたので、
さて、ようやく1冊やり遂げたわけですが、プログラミングをしているとき、コンピュータと対話している感じになるときがありました。
ちょっとスペルミスしただけで、コロンを忘れただけで、
「融通が効かないな〜」
「このぐらいのミス、許してよ!」と、思ってしまうときがありました……。
私の専門である『化学』は意外とフワッとしていることが多いです。
プログラミングはキッチリしていますね。
プログラミングを行う際は頭を切り替えてキッチリとしていかないと……と思いました。
そんなこんなで「超」入門書を読み終えることができましたが……やはり「リスト型」や「辞書型」などを使いこなすのが難しいですね。
この点が今後の課題となりそうです。
*1:Gaussianというソフトがよく使われています。
Pythonの「超」入門書で勉強中です!
すでに購入済みの【確かな力が身につくPython「超」入門】で勉強中です!
この本の流れに沿ってコードを書いていきました。
「条件分岐」のところは分かりやすかったですね。
『if』、『elif』、『else』は、各々『もし』、『そうでないならば』、『どちらのケースにも当てはまらないならば』に対応しているようです。
映画館のチケットを例に出し、年齢と金額を設定するプログラムを書く例が載っていたので非常に分かりやすかったです。
「繰り返し」の指示は本書に移る前にサイトのゲームで散々やりました。
簡単なゲームで予め学習しておいたのが役に立ったということですね!
これに関しては、マーク・ザッカーバーグさんの「コンピュータは繰り返す作業が得意」という言葉が印象に残っているので、理解しやすかったというのもあると思います!
「関数」についても学習しました。
「関数」という概念は、Excelや数学の中でも登場しますよね。
Excelの関数は実用的なので、プログラミングの関数をイメージする上で助けになりました。
中高で学んだ数学の関数とプログラミングの関数は、なかなか結びつきませんでした。
これは私のイメージ力不足だと思います(笑)。
ちなみに、本書では関数を『全自動洗濯機』で例えてくれています。
なるほど……!
宿題が1つ残りました。
「リスト型」、「辞書型」、「タプル型」、「集合型」など、データの扱い方に関する分類が本書の序盤で登場しますが、これがけっこう難しいんです。
ちょっと不安ですが、使って行くうちに覚えるかな……と、気楽な感じで進めて行くことにします!
Pythonの「超」入門書を購入しました!
鎌田正浩さんの
確かな力が身につくPython「超」入門
を購入しました!

確かな力が身につくPython「超」入門 (確かな力が身につく「超」入門シリーズ)
- 作者: 鎌田正浩
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/03/16
- メディア: 単行本
- この商品を含むブログ (1件) を見る
今、Pythonがアツいらしい
引き続き、購入した本「プログラミング入門講座」で紹介されていた学習サイトで遊びました。
"CodeMonkey"と"CodeCombat"というゲームです。
前者は1時間ぐらい、後者は3時間近く遊びました。
これらは前回の"Hour of Code"と似たような形式でした。
"CodeMonkey"では、サルがバナナを取るのが目的としています。
"CodeCombat"は、勇者が敵を倒したり、ダンジョンのお宝をゲットしたりすることを目的としています。
ただ、今回の2つのゲームは、英語で指示を打ち込むので、プログラミングをしている感じがしてきました。
CodeConbatの場合、例えば……
hero.moveRight()
hero.moveDown()
hero.attack("enemy")
……という指示を出してから実行すれば、勇者(hero)が右に移動した後、下に移動し、敵(enemy)を攻撃します。
ちなみに、途中からは課金しないと進めなくなります。
以上、計3つのサイトをツマミ食いしましたが、これらは全て海外のサイトなんですよね。
この事実は、日本のプラグラミング教育が遅れていることを物語っているのかもしれません。
さて、"CodeCombat"に話を戻しますが、これを遊ぶ前に「プログラミング言語」の選択を迫られました。
ちなみに、本屋で見かけた『Python』がデフォルトとして表示されています。
購入した本を読み進めてみると、「プログラミング言語」についても書かれていました。
大切だと思ったことを、ざっくりとまとめます。
1.プログラミングにも、人が話す言語のように様々な言語がある!
2.用途・目的ごとにプログラミング言語が開発されてきた!
3.どのプログラミング言語を学ぶべきなのかは、学ぶ人の目的や興味次第!
なるほど……!
プログラミングの世界も人間の世界と似ていますね。
マーク・ザッカーバーグさんもそうでしたが、この本の著者である米田晶悟さんもコンピュータと人間を比較しています。
このような考え方は、非常に興味深いです。
さて、次の課題は自分がどの言語を学ぶべきかを考えることのようです。
そこで、職場にいるパソコンにめっぽう強い人達に相談してみました。
すると……
「C言語やJavaからプログラミングを始めると挫折するだろう」
「最初はコードが簡単なPythonから始めた方が良い。AIに使われているのもPython」
……という、ありがたい意見を頂きました。
ということで、今度はPythonの入門書を買いに行くことにしました!
"Hour of Code"を体験しました
購入した本の中で勧められている学習サービスの1つ、"Hour of Code"を体験しました。
サイト内には様々なコンテンツがありますが、本の指示に従って[古典的な迷路](Write your first computer program)をクリックしました。
開始早々、目に飛び込んできたのは魅力的な動画でした。
ビル・ゲイツ(Microsoft)やらマーク・ザッカーバーグ(Facebook!)やらドリュー・ヒューストン(DropBox!!)など、有名な方々がプログラミングを学習し始めた時のことを語ってくれます。
あぁ、引き込み方が上手い……!
プログラミングが持つ膨大な可能性についても語ってくれます。
およそ1時間、遊びました。
ほぼほぼゲームなので、「遊んだ」という表現が適切だと思います。
主人公である『鳥』が障害物を避けて『ブタ』を捕まえるゲームであり、ファミコンとかゲームボーイで遊んだことを思い出すような画面でした。
平面の舞台を1マス1マス上下左右に進んでいく、昔のドラクエやFFのあの感じです。
ちなみに、捕獲対象のブタは動きません。
ドラクエやFFと違う点は、主人公である鳥の動きを最初から最後まで予め決めておかなければならないということです。
例えば、「1マス前に進む」「左を向く」「1マス前に進む」「1マス前に進む」「右を向く」「1マス前に進む」など、鳥の動きの手順を指定しておいて、その後で『実行』ボタンを押します。
『実行』ボタンを押して初めて、鳥が動き出します。
障害物を避けてブタに辿り着くにはどう動かしたら良いか、事前に頭の中だけで考えなくてはいけません。
考えながら、「1マス前に進む」とか「左を向く」などの動作の手順を組み立てていくゲームでした。
途中、マーク・ザッカーバーグさんが動画で自身の考えを語ってくれます。
要点だけまとめてみますと……
「人間は繰り返し作業することに退屈してしまうが、コンピュータは繰り返す作業が得意。しかも間違えない」
……ということでした!
このゲームで言えば、「1マス前に進む」「1マス前に進む」「1マス前に進む」「1マス前に進む」「1マス前に進む」と何度も指示する必要などなく、「次の操作を5回繰り返す」「1マス前に進む」と指示するだけで済む……と。
(「5マス前に進む」という指示はできません)
日常生活の中で例えるならば、同じ内容のメール(Happy New Year!など)を100人に1通1通送る作業などする必要はなく、ほんの少しコンピュータに指示を付け加えるだけで(←メーリスのこと?)瞬時に100人にメールを送ることができる……と。
マーク・ザッカーバーグさんは人間とコンピュータを比較していますね。
プログラミングを習得すると、両者の違いについて考えるようになるのでしょうか?
それとも、彼が特別なだけなのでしょうか……?
なんか深いです。
私はこれまでパソコンをツールとして使っていただけなので……。
とにかく、約1時間ですがプログラミング学習サービスを体験しました。
現時点では……プログラミングとは、あらかじめコンピュータに指示を出しておき、実行すると一気に動いてくれるもの。
そして繰り返しに強い。
初心者ながら、それらのことが分かりました!
まずはプログラミングの本を買いに行きました
プログラミングを始めよう!
と、思い立ったものの……何から始めたら良いのか分かりません。
分からないので、本屋に行ってみました。
本好きなので、本から学ぶことにしました。
私が頻繁に訪れる本屋さんには、ちゃんとプログラミングに関する本のコーナーがあります。
平積みされている本、そして棚に置かれている本を眺めてみると、「言語」や「文法」という単語が書かれているものが多くありました。
よく分かりませんが、プログラミングにはジャンルがあるようです。
『C言語』……時折、耳にしますね。
『Java』……ガラケー時代から目にしていました! アプリを起動する際に目にしていたような記憶があります。
……よく分かりません!
何を買ったら良いのでしょうか!?
始める前から思考停止に陥ってしまいました。
それも一瞬、ふと視線を棚の一角に移すと、初めてのプログラミングとかプログラミング入門といったような、超初心者向けの本が目に留まりました。
表紙には『C言語』や『Java』など、難しそうなことは書かれていません!
これなら始められそうです。
ということで、「プログラミング入門講座 基本と思考法と重要事項がきちんと学べる授業」を購入しました。
著者は米田晶悟さんで、コードキャンプ株式会社の取締役だそうです!

プログラミング入門講座――基本と思考法と重要事項がきちんと学べる授業
- 作者: 米田昌悟
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/09/28
- メディア: 単行本
- この商品を含むブログ (1件) を見る
家に帰り、早速イントロダクションを読みました。
私が印象に残った点を簡単にまとめてみますと……
1.プログラミングは仕事に使えるだけじゃなくて、習得すると論理的思考能力が強化されるよ! 世界中の人たちが勉強しています!
2.現在、プログラミングは楽しく遊び感覚で学習できるようになっているよ!
3.ITはビジネスモデルを変えることができる、素晴らしいものなんだよ!
……の3つが挙げられます。
化学の世界に浸かっていた世間知らずの私は、「プログラミングは専門家のみに許される敷居の高いものである」……と思っていました。
その印象はガラリと変わりました。
とくに2の遊び感覚で学習できるということは、未経験の私にとって有り難いことです。
プログラミングをゲーム感覚で学習できるサイトがいくつもあるのだそうです。
それでは、この本で紹介されている無料おすすめサイトで楽しく勉強していくことにしました!
プログラミングを始めることを決意しました
はじめまして! 気づけばもう30代に突入している理系の研究者です。
理系ですが、プログラミングの経験は全くありません。
そんな私ですが、プログラミングを始めることにしました!
途中で挫折しないためにブログも開設します。
昨今、プログラミング関連で騒がれている話題が次の2つ。
1.将来、人工知能(AI)が人の仕事を奪う……!
2.来年度から小学校でプログラミングが必修化!!
なんだか大きな変革の時期が訪れているようですね。
本屋を眺めてみればAI関連の本がズラリ。
ホリエモンさんや落合陽一さんの本は特に目を引きます。
プログラミングの才を持つ方々がAIについて未来を予想していると、非常に説得力がありますよね!
何冊か購入して読み、プログラミングに興味を持ちました。
さて、そんな私のことを少々紹介させて下さい。
私は化学の世界で研究をしてきました。
化学反応が専門です。
原子とか分子を扱うこんな感じのやつですね↓
2H2 + O2 → 2H2O
「化学」と「科学」は読み方が同じですけど、同じ意味ではないんです。
化(ば)ける学問なので、科学じゃなくて化学なんです。
ニックネームの「ばけがくしゃ」は「化け学者」ってことで名付けました。
最近になって、私の専門分野である化学でも、AIと上手く融合して研究を発展させようという流れが確実に来ています!
しかし、プログラミングを習得していない化学者の方が多数派なんじゃないかなぁ……と思っています。
もちろん私も未習得者の一人であり、よく分かっていないのにマスメディアやネットから得た情報で分かった気になってしまうのは危ない……とも思い始めました。