水面下の夢

競プロやイラストに興味があります.メインブログがここ.同人サークル「かのらぶ」のページはこっち( https://yumechi0525.amebaownd.com ).ブログアイコンはYaQ(@8_9_00)さんから.

なんでPythonを勉強し始めたのか

これを書こうと思って、永遠に忘れていたので書く。

最初のイメージ

当時、私は大学生でプログラミングの教育に関わる研究をしていた。(なので実は数学は超弱いです、競技プログラミングやってるのにこれはこれは…)

その時、海外の状況を見ているとPascal(ほぼ廃れた?)、C(応用範囲広いですよね)、Fortran(物理とかでは現役らしいですね)、これらに変わる言語としてPythonという物があるらしいということを知った。

インデントでネストの情報を持たせるという書き方が、当時衝撃的で、強制的にある程度のコーディングスタイルが確定できるのは良さそうだなと思った。

というわけで、なぜ海外の教育系で流行っているのかを探るべく、Pythonチュートリアルとか、dotinstall(だった気がする)等のWEBコンテンツで勉強し始めた。

Python × 競技プログラミング

実はPythonを始めた時期というのが競技プログラミングを始めた時期だった。当初の私はAtCoderJavaを書いていた(多分、この時代の私をしる人は大変稀、そもそもまだ @yumechi0525 のアカウントが存在していなかったはず)

私はこの時、Javaで書くのが冗長すぎることや Main クラスで書かないといけないこととかの問題を感じていて、Javaではパフォーマンスが出せないのでは? という疑問を抱えていた。

そこで試しにPythonを書いてみた所、案外さっくりと書けることがわかった。Javaのように標準入出力のためだけに何行もコードを書く必要もないし、何より内包表記が競プロのリストでの入力と相性が良かった。 そこから私はPythonをガリガリ書くようになったと思う。(当初の目的は消失した)

競技プログラミングを通して、Pythonの標準ライブラリについて多くを学ぶことが出来たので、新しい言語を覚えるために競技プログラミングをするのはありかな、と個人的には思っている。

また、これが転じて、社会に出てからはスクレイピングスクリプトPythonで書いてみたり、自動的にAPIのURLを叩いてテストデータを大量に作成する処理を書いたりしながら、知見を深めていった。PythonでSlackのbotを作れるらしいという情報も知っていたので、SlackBot用のライブラリ(フレームワーク?)をGithubから落としてきて、Qiitaの記事を検索させるようなものも作った。(公開するにしても、適当に調査で書いたコードだったので出したくないなあ…(リファクタリングして気が向いたら出すかも))

勉強会で知る、Pythonの応用範囲の広さ

ココ最近、Pythonといえば? と聞かれたら機械学習が真っ先に上がるらしい。(私は触れてみて、あまり向いていないなと感じたので、今は興味がない分野かも。そういう視点からするとなんとも言い難い)

運良く、オタク機械学習勉強会なるものが存在していて、Pythonでデータを分析したりして結果を取り出して話を聞く機会があったが、実際それほど巨大なコードを書くことなく、興味深い分析データが取れてしまうのは衝撃的だった! 数学がもう少しわかればなあ… という気持ちが一杯で、自分には厳しそうだけど、こういう世界でも活かすことが出来るという現実は肌で感じることが出来た。

またPyConでは、サーバーサイドとしてPythonフレームワークを使って、実際にシステムを構築している人たちにお会いし、実用性のある言語なんだ!ということを確信に変えることが出来た。これまで自分の視界が狭目だったせいで、気がついていなかったが日本でもある程度の企業が使っているという現実が衝撃的でした。

PyConではGUIアプリケーションの開発や、Raspberry Piでの操作、統計分析の実例も聞くことが出来、率直に動やったらこうなれるのかな、開発に組み込めるのかな、と感じたのが新しいです。(競技プログラミングばかりやっていた頃の自分とはまた違う目的が発生してしまった…)

そして今

運良くPythonでサーバーサイド開発をやっているところにいます。競技プログラミングの中でそれなりにコードを書いてきたつもりでいましたが、井の中の蛙で毎日新しいことの発見をしています。(ORMとか特に)

今はまだ研修中で、もうちょっとしたらガッツリ入れるハズ…! なので、頑張ります。自分の作ったものがいっぱい使われると嬉しいなあ…

PyConの記事でも書いたのですが、自分はまずWebエンジニアなのだからPythonでやるならサーバーしか無いと思っていました。なので、すごい充実感があるととともに、早く貢献しなければ…! という気持ちでいっぱいです。

まとめ

当初の目的からどんどん変わっていきましたが、Pythonのいろいろな面を見てカバー範囲の広さがすげえ! 言語だったというのを実感します。(当時確かPython3.4くらいだったはず、で機械学習も今ほど注目を浴びていなかったような記憶、PyConはずっとあるみたいだったけど、私が知ったのは2016年のことでした。しかも誰から教えてもらったのかも覚えてないやw)

やっていてよかった言語であるとともに、たまにアレな部分もありますが、よく出来た言語だと思っていて、楽しく書きながら今日まで来ました。

日本だとこの手の言語はRubyが強いですが、Pythonも書いていて楽しい言語だから!! はい!! 競プロでもRubyなくて、Pythonあるみたいなサイトあるしね!!(ここは競プロ的アド)

というわけで、今日はこのへんで。まだPythonをやったことがない人たちはぜひ触ってみてね!