前回のエントリーで、Webサービスをつくってみたい事、そんで未経験だけどPythonというプログラム言語を使ってみたいという事を書きました。
プログラミング言語なんてものは、一つ覚えたら後は応用で、新しい言語を習得するのは簡単だ・・・なんて言い方をする人もいます。これは半分正しくて、半分間違いです。
プログラミング言語には大きく分けて低水準言語と高水準言語があるのですが、言葉のニュアンスから高水準が難しくて、低水準が簡単なんてイメージを受けますよね。
でも実際は言語の水準と難しさは関係ありません。ハードウェアに近いものが低水準で、人間の論理思考に近いものが高水準です。むしろハードウェアに近いとICやCPU、メモリの仕組みを知る必要があって、最初は低水準の方が敷居が高いかもしれません。
高水準言語は、低水準言語から解りやすく洗練される方向性で発展していきました。Pythonはとても高水準な言語です。ですからPythonに到るまでの言語の御先祖様や、Pythonと枝分かれした親戚言語を理解しているならば、Python自身の習得も容易だと思います。私が習得している言語でいうと、C、C++、VB、Java、C#といったものです。これらは、Pythonを理解するための手助けにはなるでしょう。
とはいえ言語ごとの違いも多分にあって、そこは地道に勉強にしていく必要があります。他言語の経験は推論の助けになりますが、それでもPythonのルールはPythonで学ぶしかないのです。これはそれなりに時間がかかることです。
最近、同世代(四十路)が新しいことを覚えるのが嫌だといっているのをよく耳にします。それは歳をとって頭がよく動かないというのもありますが、本当に忙しくて時間がないというのも理由なんでしょうね。働き盛り世代は、仕事に責任があって、子育てや親の介護なんかもあったりして、とにかく忙しい。もうお腹いっぱいなんですよね。
でも本当に学びたいなら、何とか時間を確保できる方法を考えましょう。
目標を達成するために、別の目的でカムフラージュする
仕事でWindowsのバッチファイルって使ったことありますか?
バッチファイルとは
利用者がコマンドプロンプトに入力して実行する命令文字列をテキストファイルとして保存したもので、コマンドプロンプトなどでファイル名を入力して実行を指示すると、記述されたコマンドなどを上から順に1行ずつ読み込んで実行することができる。記述できるのは通常のコマンドプロンプトと同じで実行ファイルの指定やOSのコマンド呼び出しなどだが、条件分岐や繰り返しなど簡単なフロー制御構文は利用することができる。
要するにWindowsのパソコンで、定期的に同じ作業をすることがあれば、その手順をファイルに書いて自動化させるのがバッチファイルです。
いろんな種類のファイルを作ったり、削除したり、コピペしたり、他のソフトを起動させることもできるし、いろんなデータを参照できたりもします。月報や交通費清算などの資料作成用途に使えば便利ですし、プログラム開発者だったら、テスト環境のデータやファイルの前準備を自動化させるために使ったりもします。パソコンが少し詳しい人ならよく使うテクニックです。
私は、今まで作ったバッチファイルをPythonで置き換えようと思います。
そして今手作業でやってる業務も、今後は、Pythonでバンバン自動化するのです。
業務時間中、Pythonの技術書を読んだり、ググることもあるでしょうが、業務だから仕方ない。ちょっと脱線して、PythonのWebフレームワークのことをググってることもあるかもしれませんが、はたから見ればわかりゃしない。結果が出ていれば、誰も文句言う奴なんていないのです。
うん、この作戦は良い。しばらくしたら私はPythonマスターになってることでしょう。
良い技術書は羅針盤
でもね・・・実はうちの職場は、個人のネットの閲覧履歴が記録されてるんですよね・・・
相当酷い脱線じゃなければ、注意はされません。でも最近はどこの企業もコンプライアンスがうるさいから、同じような境遇の人も多いと思います。
Pythonを業務で使うから、好きにネットでググっても大丈夫といったものの、可能ならググる頻度は下げた方が良さそうです。
そこでこんな本を買いました。
技術者から信頼の厚いオライリー社発行の「退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング」です。
この本は、非プログラマに向けて、Pythonについて平易に書かれた本です。プログラミング経験がなくても、Pythonで業務の自動化が出来るようになることを目的としています。
でも浅い内容の本ではありません。560ページもある大著です。三分の1ほど読みましたが、最初に読むリファレンスとしては、深く掘り下げすぎず、それでいて必要充分な知識は網羅されているというバランスの良さを感じました。JSONファイルの扱いやWebスクレイピング、画像処理など後でWebサービス構築に役に立ちそうな知識も書いてあって、職場の机の片隅に並べて置いて、空き時間に読むだけでも役に立ちそう。
実はPythonの参考書としてデファクトスタンダードといえる本はあって、SBクリエイティブの「みんなのPython 第4版」という本がそれです。
でもこの本出なく、前出のオライリー本の方を選んだ理由は、業務の自動化・バッチファイルの置き換えという名目上の主目的のために必要な知識が得られるのはこっちだと思ったからです。プログラミング言語の仕様そのものなんて広く浅く知ってればいいのですよ。
Pythonの本質
なんで私がここまでPythonにこだわってるかを書きたいと思います。 端的にいうと、現行のプログラミング言語の中で一番将来性があると思っているからです。Pythonの3つの特徴をあげて見たいと思います。
1.万能性
なぜかPythonは日本ではそこまでメジャーではありません。日本では、WebバックエンドならPHP・Ruby、WebフロントエンドはJavascript、企業システムやAndroidアプリならJava、ゲームならC#、組込プログラムならC・・・
こんな感じで、言語の得意分野によって棲み分けがなされているのが現状です。
でもPythonの得意分野は全てです。正確にいうとWebフロントエンドのJavascript以外の全部です。高水準なWebサービスと低水準なIOT向けの組込制御プログラムを同じ言語でかけるオールラウンド性が特徴です。先程、Pythonはとても高水準な言語と言いました。確かに洗練された高水準言語なのですが、低水準なハードウェアの制御まで得意としています。最近小学生向けにノンプログラミングでロボットの制御をおこなう教室が流行っていたりしますが、さらに精緻な制御をしたいと思ったなら必然的にPythonを学ぶことになるでしょう。
さらにいえば、伝統的にアカデミックな分野ではとても強く、人工知能の研究もPythonでおこなわれることが多いです。
2.簡単さ
勉強中の人間が簡単だとか偉そうなことはいえませんが、Pythonはスクリプト言語というジャンルに所属しており、とても簡潔で簡単な言語という触れ込みです。オープンな環境で磨かれ、色々な言語の良い部分を吸収し、難解な仕様を削ぎ落として、とても学びやすい言語になっていると思います。
プログラミングに初めて接する学生さんが、教育用途で学ぶには最適でしょう。
3.高性能
もう一つ大きなPythonの特徴といえば性能の高さです。Python自体もスクリプト言語の中では早い方ですが、ネイティヴ言語で書かれたライブラリをシームレスに呼び出すことで爆速にできます。Pythonで書かれた最も有名なWebサイトといえば、YouTubeでしょう。世界でも最も負荷が高いこのサイトのアクセスを捌けるほどの高性能さがPythonの特徴です。
まとめ
日本以外では、Pythonはプログラム言語の第1選択肢になっています。
しかし日本ではそこまでは普及しておらず、でも言語自体の優秀性もあって、今後、利用が拡大することは必至です。例えるなら公開前の株式みたいなもん。今のうちに勉強しておいて絶対に損はないです。あなたが非プログラマーであっても。
私的なことを言えば、1歳になる私の娘にいつかプログラミングを教えたいと思っているんです。私の娘が最初に接する汎用言語はPythonになるでしょう。今、義務教育で、プログラミング教育の必修化が大きく話題になっていますが、学術分野で強いPythonが中心になることは十分に予想できます。 小学校のプログラミングの授業では娘に満点を取らせたいと思ってます。
そのためにもお父さんは頑張って勉強しないといけないのです。