【日記】Pから始まる
■ プログラミング経歴
大学1回生の時に初めてプログラミング(Fortran)に触れ、そこから今まで大体毎年コードを書いてきている。仲良くなってきたプログラミング言語は、
・大学1~3年 ・・・Fortran77
・研究室(B4~M2)・・・Fortran77, GMT
・社会人1~3年目・・・Fortran90, AWK, BASH, GMT
・社会人4~6年目・・・Python, AWK, BASH, Fortran90
・社会人7~8年目・・・Python, BASH, SQL
という感じでかなり偏食傾向だ。学部時代とかは授業でFortranの授業があったので、特に疑問に思うことなくFortranをカタカタ書いていた。研究室に入っても先輩のコードが100%Fortranだったので、それを解読して書き換えたりしていた。
銀行系でCOBOLが使われているように、気象系ではいまだにFortranが主力言語だ。何と言っても計算が速い。社会人になるまで化石言語と呼ばれているとは知らなかった。まぁ化石でもなんでも計算が速いからいいじゃない。
■ Let's Python
FortranやBASHをゴリゴリ書いていた社会人3年目(2014年)の時に、ふと「本格的に言語を学ぶならあと1つじゃよ☆」という神のお告げがあった。IT業界は35歳定年説とも言われており、技術の入れ替わりがえげつない。年齢も上がっていくので、たぶん管理業務やら指導やらの分量が増えてきて、たぶん自分で手を動かす時間が少なくなっていくだろう。だからプレイヤーとしてしっかり身に付けられる言語はあと1つだろう、という考えに至った。
その当時は今ほどAIやらデータサイエンティストやらが騒がれておらず、ひとまず何でも選ぶことができた。C++とかJavaとかCとかRuby on Railsとかperlとか、結構選択肢があった中でPythonを選んだ。選んだ理由としては以下のような感じだった。
・計算からお絵描きからWebまでPythonでできる
・GoogleのサービスはPythonベースで書かれている
(≒バカデカいデータにも対応できる)
・コードが短くてシンプル
・これからAI関係のライブラリが充実していくだろう
そんなこんなでとある業務の中で「うわぁ!Pythonしか使えなくなってしまった!」という独自ルールを設け、当時周りに誰もPythonユーザが居なかったので1人で粛々とGoogle先生と向き合いながらPythonを書き始めた。今ほど日本語の説明が従事すしておらず、説明はほとんどStack Overflowなどの英語サイトばかりで四苦八苦しながらPythonを書いていた。
■ 布教フェーズ
Pythonの魅力は何と言ってもpandasだ。時系列データやCSVの扱いが簡単にできる。Googleでpandasとググると可愛いパンダの画像がいっぱい出てくるが、それでもpandasは最強だ。そしてpandasの中でも最強のメソッドがread_csvだ。CSVを一行で読めてしまう世界を味わってしまうと戻れなくなる。
import pandas as pd
df = pd.read_csv("korega_yomitai.csv")
そんな感じで周囲のフォートランナーの皆様を横目にひたすらPythonを書いていた。さらばだimplicit noneよ。もう会うこともあるまい。ふふふ。
そこで第二のお告げが下りてきた。「引き継ぎできるようにPythonユーザーを増やすのじゃ☆」と。たしかに自分しか弄れないコードを残すと体力的にいつか詰んでしまう。そこで社内にPythonユーザーを増やしていかなければ、と思い立ち、初心者からでも手を動かしながらプログラミングを学べる公文式の学習教材を作成した。配属された新人さんにその教材一式を投げると、指導者なしで約1~2週間の時間を確保できる。そしてなぜか終わった時にはみんなPythonユーザーになっている。そんなツールを作成し、社内に配布した。するとみんな最初なので結構素直に取り組んでくれ、結果的に下の世代にPythonユーザーが増えて行った。さらばだFortranユーザーよ。もうコンパイルオプションでハマることもあるまい。ふふふ。
などと言いながら数年が経過すると、市場的にもAIが扱えるという事でPython人気が爆発し、ライブラリも解説サイトも充実してきて、データ解析の実質的な標準言語のような位置づけに成長した。ふふふ。5年前の読みが当たったぞ。あれほどPythonが来ると言っただったろう。
という感じで現在は周囲もほぼPythonユーザーに囲まれ、言語や文法の違いの壁から解放されて結構快適なコーディングライフを送っている。
■ Pythonの良さ
多分共感できる人は0.005%ぐらいだろうが、個人的にPythonの良さは実行時にある。例えば以下のような最強のAIモデルを作ったとしよう。
# ultimate_model.py
# Library
import numpy as np
import pandas as pd
from sklearn.ensemble import GradientBoostingRegressor
import keras
import time
# Main
print(" Training ...")
time.sleep(5)
print(" Optimizing Parameters ...")
time.sleep(5)
print(" Failed...orz")
これをファイルに保存して、以下のように実行する。
$ python ultimate_model.py
比較のためにFortranでは以下のような感じで実行する。
$ gfortran -o ultimate_model ultimate_model.f90
$ ./ultimate_model
また、BASHだと以下のような感じで実行する。
$ sh ultimate_model.sh
or
$ ./ultimate_model.sh
■ Pから始まる
もうお分かりいただけただろう。pythonは実行する時にpから始まる。一球目を外角高めのpで油断させておいて、その後間髪入れずにythと中心部を攻め、最後にもう一回切れのよいカーブでonと落とす。この緩急利かせたキーボードのダンス、見事の一言である。
他のFortranやBASHなどはそうもいかない。実行する時は./と、非常に味気ない。ほら、右下の外角低めから入っている。真面目か。
またBASHでshと打つ時も内角からの切れ味鋭いシュートで終わりだ。失投したらデッドボールになってしまう。これは危ない。
いや~、繰り返しますがやっぱりここが違うんだな~pythonは。あのPの位置!右手の薬指を外に開いて「p!」と打ってはじめるじゃないですか。pですよp。最初はピーですよ。この力の抜けた感というかウォームアップ感と言うか、そういう感じが非常に好きです。1拍目に休符を入れるような、初球をスローカーブで入るような、そんな妙な余裕が感じられるpはじまりのキーボードタッチ。いや~たまらんですね。
この記事が気に入ったらサポートをしてみませんか?