見出し画像

python そして django - pySPAの思い出

21世紀に入ると自分もそれなりの年齢にもなり、なかなか新しいプログラミング言語に挑戦する意欲も機会も減ってきました。仕事で必要になれば覚えはするのですが、当時のお仕事で必要な言語といえばメインはCとC++でWEB周りはPHPで作ることが殆でした。もちろん必要に応じてシェルでセットアップとかのコードも書きますし、データベースを使うのであればSQLだって書きます。新しい言語を覚える必要性が徐々に減ってきてしまっていたのですよね。

そんな中、2008年くらいだったかだと思います。当時お仕事をしていた会社で python が注目され、これからはパフォーマンスがシビアなものでなければ、これでイケるんじゃない?ということで、私も取り組むことになりました。とりあえず使い方は公式ドキュメントをこなして見たのですが、なかなか奥が深くて大変です。特に書き方の自由度が高くて(インデントのことではありません)「らしい」書き方を覚えるのが難しかったです。

python (公式)

pythonは、基本的にはインタプリタとして動作する言語ですし、クラスなどのオブジェクトも実装されているのですが、C++やJavaのような「情報の隠蔽」ということに関しては無縁で「情報のカプセル化」こそ充実していますが、その気になればありとあらゆる情報にアクセスできてしまう柔軟さ(泥沼さ)があります。

Python

書き始めてみると意外と書きやすく「おお!これはBASICっぽい」と気が付きました。もちろんVisual BASICは、もう.NETなので思った以上にJavaなところがあり、どちらかというとBASIC09(行番号がなく構造化されていた)時代のBASICっぽく感じたのです。当時のpythonは2.2とか2.4あたりだったと思うので、今よりもいろいろとヌルくて文字列も所詮バイト列だったので、堅苦しいC++の世界にいた私としては、この「いい加減さ」が実に気に入りました。

まだまだライブラリが充実しているとまでは言えなかったので、今まで使っていたCやC++で書かれた関数や、新しいシステムコールを呼び出すために、pythonから呼び出すためのラッパーを作り始めました。

1.C や C++ による Python の拡張

こういう時には、まず既存のライブラリのソースでどのようにやっているかから調べ始めます。いくらドキュメントがあると言っても既によく使われているコードと同じように書いていくのがベターです。そうするとpythonのメモリ管理手法をよく理解する必要があり、そこから始まりインタプリタ自体の作りを調べる羽目になりました。特にthread周りが鬼門で、ここを上手に処理しないと動作が不安定になったり、パフォーマンスが極端に落ちたりするので苦労しました。

そうこうしているうちに、みんな苦労していたのだろうとは思います。python温泉という合宿企画があるよと会社のメンバーに招待してもらいました。最初は確か伊豆高原で雨が降って大変だった時だっだと思うのですが、まだまだpython使いとまでは言えない私でしたが、ありがたく参加させてもらいました。

PySpa アドベントカレンダー 1日目 〜バカとPythonと芳泉閣〜

参加してみると、当時rubyと覇権を争っていた?python使いの日本における大御所らが勢ぞろいしていて、熱く熱くpythonを語りつつ、目の前でみんなが使うようなパッケージを作っているような有様でした。これは凄いところに来てしまったものだなとも思いつつ、伊豆であるとか熱海に詳しい私としては、コストコで買った差し入れを用意したり、観光ガイドを務めるなど、pythonで無いところで一生懸命お手伝いをさせて頂いた覚えがあります。

#PySpa アドベントカレンダー 8日目

このpySPAでWEBフレームワークでもあるdjangoに出会い、まずはこれを使いこなせるように頑張りました。

django (公式)

今まで使っていたPHPとは違い、ORマッパーと呼ばれる手動でデータベースとWEBデザイン上のフィールドと紐づけが出来るのが特徴で、HTMLページの中にコードを書いていくのではなく、URLを処理するコードに紐づいたテンプレートでHTMLを出力するというコペルニクス的転回が必要になりました。

django

当時は1.4とかだったっけなぁ?そしてその中で、今まで避けて通っていたデコレータと仲良くなり、テッキーな面々からはイテレータの上手な使い方の手ほどきを受け、最後はジェネレータを使いこなせればようやく一人前です。もっとも表形式のページで複数のレコードを一括して編集できる機能が無くて(他のエンジンでは良く使っていた方法なのです)、どうしてもこれを作りたくて四苦八苦していました(あまりうまくはできませんでしたけど)。

その後も毎回ではないですが参加させたもらい、すっかりpythonな人になれたかというと周囲の凄い人に追いつくのが精一杯だったのは確かです。

PySpa #5 Day1 dinner

iPhone4を発売されていきなり買ってきた人々の遊び

pythonはその後、信じられないほどに普及して、今ではもっとも人気のあるプログラミング言語のひとつになりました。言語自体もかなりバージョンもあがり、いろいろと変わってしまったところも多いのですが、まだまだ進化途上で特に内部構造に関してはビックリするくらいに変わってしまいました。その為、詳しい人がとても増えて今でもpython使いであるとはとても言えるほどにはなれていませんが、チョコッとした処理を書くのにシェルスクリプトよりは遥かに書きやすいので愛用している日々ではあります。

ヘッダ画像は、以下のものを使わせて頂きました。

https://www.python.org/psf/trademarks/
https://commons.wikimedia.org/wiki/File:Python_logo_and_wordmark.svg

#プログラミング言語 #python #django #pySPA #インタプリタ

いいなと思ったら応援しよう!