PyCon mini Sapporoで発表してきた
9月にPyCon mini Sapproで発表してきたよ。
本当はCHaserクライアントをPythonで作っている話をしようと考えていたけど、初心者向けの発表が欲しいとの声を個人的にいただいていたので、急遽発表内容を変えました。
CHaserの話聴きたかった人、ごめんなさい。
(CHaserについて知りたい人は11月にあるCHaserエキシビジョンマッチをみてね!)
Python界隈のイベントに出席したのは初めてでした。
個人的には「marsface project」のお話がかなり面白かったです。
このプロジェクトのロゴも含め、面白さは以下のリンクから見ていただければと思います。
彗星探査機ロゼッタから送られてきた画像から人面構造物が発見される - Marsface Project
\マーッ!/
あとは最近の重要キーワードの「IoT」× AWSのお話も、キーワードを耳に入れることができた良い機会でした。
大学の後輩のさくらさんはPythonのイベントでDEL pythonして相変わらずぶっ飛んでた。
そういえば、実はイベントスタッフもやっていました。
「やさしいドラ」、「囁くような説明」というご評価をいただきました、拙い司会で本当にすみませんでした....!orz
参加者99人という結構大きなイベントで皆さんに満足していただけるイベントになるか不安もありましたが、スポンサーの皆様はじめ関係者並びに全ての参加者様のご協力のおかげで、事故も無くスムーズにイベント進行できましたことを御礼申し上げます。
ええと、社会人やってます。
今年に入ってから、今どこにいるの、なにしてるの?って色んな方面からよく言われるようになったので、現状をここに書きますね。
結論から言うと、東京にある株式会社ビープラウド(以後BPと表記)というところでプログラマさせてもらってます。
あれ、R社じゃないの?って思ってる人もいるだろうけども、斯く斯く然々という言葉を今ここに並べたというあたりでお察し下さい。(ちなみに、後悔は一切してないし別に暗い話じゃないよ!)
お仕事は何やってるのかというと、ひと言でいうとWebアプリケーション開発をさせてもらってます。BPということで僕もPythonメインでやってます。必要になったらJSとかもちょこちょこ書いてます。あとはたまにお客さんと仕様詰めたり、テストしたり。たぶん皆と似たようなことをしているよ。
たくさん覚えることがあって日々ヒーヒー言ってますが、塵メンタルな僕の相談に乗ってくれる先輩がいるし、会社側がエンジニアが働きやすい環境作りを押し進めてくれているおかげで色んな制度があったりと、色んな面で働きやすい環境だと思いながら日々を過ごしてます。
余談ですが、こっちきて前よりももっと技術が好きになったなぁと思います。
好きになったというか、もっと深くまで知りたい、わからないのが嫌だ、と感じる範囲が広くなったと言った方がしっくりくるかもしれない。
まぁそんな感じで、元気にやってます。
東京来たときは僕と遊んでね!
virtualenvでPythonの開発環境をプロジェクト毎にわける
環境:Max OS X 10.9.5
開発をするとき、プロジェクト毎にPythonのバージョンや依存するライブラリを分けたいことがある。
そういうときは、virtualenvを使いましょう。
こやつです。
Virtualenv — virtualenv 13.0.3 documentation
インストール
pip を使えば一発で入ります。便利な世の中になりました。
$ pip istall virtualenv
※ 2015/06/20 現在、特に何もしていないとvirtualenv 12.0.7が自動的に入ります。
最新版のvirtualenvをインストールしたい場合は、Githubリポジトリにある最新プロジェクトのtarballを直接指定します。
$ pip install https://github.com/pypa/virtualenv/tarball/develop
もし任意のバージョン(古いやつとか)のものを使用したい場合は、PyPIでvirtualenvと検索すると過去のバージョンが沢山でてくるので、そこから好きなバージョンのダウンロードページへ行ってtar.gzのリンクアドレスをコピー、以下の用にダウンロード・解凍して使えるようにします。
$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
$ tar xvfz virtualenv-X.X.tar.gz
$ cd virtualenv-X.X
$ python setup.py install
インストール時の注意点:
以下の環境でインストールすると、SSLを介さないでPyPIからダウンロードします。
・pip 1.3以下
・setuptools < 0.9.7の状態でeasy_installをする
まずはバージョンを確認したほうが良いです。
virtualenvを使ってみる
virtualenvを使いたいディレクトリへ移動して、virtualenvコマンドを叩きます。
すると、envというvmが勝手に作られます。
~ $ cd test_dir
test_dir $ virtualenv env
test_dir $ ls
env
さっそくsourceコマンドでenvに入るためのスクリプトを実行します。(このことをよくactivateする、という)
test_dir $ source env/bin/activate
(env):test_dir $
このようにactivateするとenv環境に入ります。さてここで pip install djangoしてみます。
(env):test_dir $ pip install django
~ 一生懸命Django君がインストールされる ~
pip list で ライブラリのリストを見れます。さっき入れたDjangoが入ってることを確認。
(env):test_dir $ pip list
You are using pip version 6.0.8, however version 7.0.3 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Django (1.8.2)
pip (6.0.8)
setuptools (12.0.5)
ここで、env環境に入った場合とそうでない場合の両方で $ pip list して、それぞれの環境で入っているライブラリが違うことを確認してみてください。
env環境を作成するとき、Pythonのバージョンを指定することもできます。
次の例では、env環境ではpython3をデフォルトで使いたい場合の設定手順です。
~ $ python -V
Python 2.7.9 # ローカル環境のpythonのバージョン
~ $ cd test_dir
test_dir $ which python3 # python3の場所を探す
/usr/local/bin/python3
test_dir $ virtualenv env --python /usr/local/bin/python3 # --python オプションで使用したいpythonのPATHを指定
test_dir $ ls
env
test_dir $ source env/bin/activate
(env):test_dir $ python -V # PATHで指定したpythonをデフォルトで使用するようになっている
Python 3.4.2
env環境から抜けたいときは、deactivateします。
(env):test_dir $ deactivate
こんな感じで、プロジェクト毎にPythonのバージョンやライブラリをわけることができるので便利です。
OSC Hokkaido 2015 に参加してきた
OSC Hokkaido 2015に参加してきた。
今回はLTでCirlceCIの紹介とPyCon mini Sapporo の宣伝をしたよ。
発表資料
CircleCIの公式ページ
興味あるかたはCIやってみてね
PyCon mini Sapporo
参加登録はConnpassから。もう受付開始してます。
OSCでお会いした全ての方に感謝。
OSC Hokkaidoも今回で11年目、来年はどうなるのかな。
楽しみにしてます。
はじめてリモート勤務してみた感想
僕の勤め先の会社では、一週間リモート勤務しても良いという制度がある。(まだ試行段階だけど)
入社して間もないときは、リモートで仕事をするとか以前にちゃんと仕事できるかどうかが不安だったので、今までこの制度を試したことがなかった。
まだ仕事ができたか自身がついたわけでもないけど、もうそろそろ良いかなと思い、今日はこのリモート勤務をしてみた。
とりあえず感想かいてみる。
やってみて良かったこと
・通勤時間が無い
毎日二時間を通勤時間に消化しているので、ここをカットできるのはとても有り難かった。満員電車で疲弊することもないし、事故で電車が運転見合わせになって帰れない!なんてことも起きない。その分、個人の時間として使えるので色々捗る。
・自炊できるので節約になる
毎日お弁当をつくるのは流石に辛い。同僚とランチに行くのは大好きだけど、たまには自炊して出費を押さえるのも大事。
・好きな機器が使える(ここではディスプレイ)
オフィスのディスプレイは色が足りないのか、MacBookProの画面と比べるとかなり差異がある。Macではグレーの色が見えているのに、ディスプレイでは...あれ、これ白じゃね?みたいなことがある。デザインの修正とかするときちょっと困る(まぁMac画面で見れば良い話なので変える程でもないけど)。自宅のディスプレイはそのような差異はみられないので快適だった。申請すればいいじゃんって?上記の理由じゃ通らないかもしれないし、まぁ、なんとかなるなら現状のモノを使う。
・独り言を言っても気にならない
あ〜〜〜わかんね〜〜〜〜とか少し大きい声で言ってもみんなの仕事の妨げにならない。
僕の職場ではslackというチャット上でのコミュニケーションが主なので、オフィスがとても静かだ。なので、ちょっとした会話も目立つ。僕はどちらかというと独り言が多いし、わからないことがあるときは考えていることを口にしながら物事を整理してしまうので、家で作業した方が気が楽だった。(会社ではうるさいだろうと思ってあまりしないように気をつけている)
やってみて困ったこと
・オフィスの椅子と机が恋しい
オフィスで使っている椅子と机が身体にとても合うので、家のものを使ったら今日一日で身体がいろいろ痛くなった。オフィスで使っている椅子を購入して、地上と机の高さを測って自宅でも同等の環境を構築しようと心に決めた。
・毎日リモート勤務してると特に運動してない人は深刻な運動不足になる
通勤時にすこし歩くだけだからあまり変わらないかと思うけど、通勤って結構体力使うので一週間ずっとリモート勤務して次の週に通勤したらとても疲れそう。
自宅でもできる運動とか、通勤時間が無いから朝・夜に積極的に運動するとよいと思った。
・ちょっとさみしい
チャットベースのコミュニケーションが主でオフィスが静かだとはいえ、まぁチョットさみしいものです。
あと、作業の記録・インデキシングという点ではチャットベースでやり取りすることに賛成するが、僕は実世界で、対面で会話することの大事さを知っているし、そういったコミュニケーションが好きなので、やりとりの全てをチャット上でやるのはしたくない。
人間の非言語行動には文字では表しづらいものが多くあるし、そういった微妙な相手の変化を感じ取ることも一緒に仕事をする上で重要だとも思う。
まぁ、打ち合わせとかあるからずっとリモートで会社やめるまで顔合わせませんなんてことは滅多に無いと思うけど、そこはこれからも重要視して行動していく。
まとめ
今回は初リモート勤務してみたが、椅子が身体に合わない以外、特に困らなかったしいつもとそんなに変わらず作業できていた。
普段からチャット使ってるから、遠隔地にいても気にならなかったという。
日々の習慣というものはすごい。
(ああでも、チャットベースのコミュニケーションについてはかなり悩んだし今も悩むことはある)
今度から週に一回はやってみようかな。
実際はアルバイトでリモートしたことあるから正確にははじめてじゃないんだけど、あのときはメールとRedmineでたまに進捗伝えるレベルだったから、今回のとはちょっと違うのだった。
LOCAL Commuinty Summit 2015 感想
2015/05/16 (SAT)
LOCAL Community Summit 2015 にスタッフとして参加してきた。
local-community-summit.doorkeeper.jp
イベント開始前
イベント開始一ヶ月くらい前に、LCS2015実行委員長のhokkaiさんから「スタッフ手伝ってほしいなー」とメンションが来たので、二つ返事で「なんでもやります!」と言ったらまだやる人が決まってなかった司会時々タイムキーパー役になったという次第でした。
二つ返事というのは、僕はずっとお世話になってきたLOCALに、というか北海道という土地・そこで出会った人々に恩返しがしたいと思っているからで、
「LOCALがやるイベント?!手伝います!むしろやらせて下さい!」
という返事になることは最早聞かれる前から決まっていたのだった。
僕がjoinしたのはだいぶ後の方だったのでイベントの大方スケジュールは決まっていたのだけど、北海道と東京でのイベント運営の違いってのが大きくて悩むことが多かった。(長くなるから詳しくは書かない。今度別エントリで書くかも)
イベント当日
今回のイベント参加者は北海道出身者が半分くらいで、しかも見知った顔がたくさん居て、一瞬ここは札幌のセミナー会場かな?と錯覚した。
色んなコミュニティと繋がろう!というのがテーマの一つなんだけど、お互い知り合いが多かったので内輪感がでちゃってたら嫌だなーとひっそり思っていた。かといって、無理矢理人と人を繋げるのはお門違いなので、「折角集まったからお昼ごはんみんなで食べにいきましょうよ!」と呼びかけるので精一杯だった。
僕は会場で準備&待機してたので食べに行っては居ないけど、皆さんはどうだったのかな?ランチタイムで少しでもなにか新しい交流が生まれたのなら、幸いです。
そういえば、いくつかの時点で「これは内輪芸なんですかね?」ってツイートがあった。
確かに、この人はそういうキャラだ、と知ってないと端から見るとナニソレ?って思われてしまうというのはわかる。やっている側は内輪芸とか思っていないと思うけど、そういう風に見られることもあるよ、というのは気をつけるべきだなと思ったので反省会の議題に上げることにする。
一応、内輪盛り上がりにならないように、ローカルネタみたいなことは司会では言わないように淡々と、でも会場の人が周知したネタを振られたらできる限り乗る、みたいにはしてたけど、そういう風に思わせてしまったのならごめんなさい。司会業ってむずかしい。
今タイムスケジュールを見返してみて、改めてとても濃い内容だなぁと思った。言語・地域という括りで各々のコミュニティの話を聞ける機会は滅多に無いと思う。大体は同じ言語で、RubyならRuby界隈のイベント等で自分が所属するRubyコミュニティについて話す感じかなって。ブログとかでも発信している人もたくさんいるけど、やっぱり他の界隈の取り組みとかって結構意識しないと情報入ってこないんじゃないかな。
若手技術者によるパネルディスカッションは新鮮だったな。結構本音で喋っていた気がする。
特にやりたいこととか無いけど流れで東京来ていま働いてますって人もいれば、なんかやりたいことがあって東京来ましたって人もいる。理由は様々だけど、大都会・東京ってところは自然と人が集まる場所なんだなぁと想った。
最後は北海道に帰りたいかどうかの話から「地元愛」についての話なっていたね。
さてこの「地元愛」というのは、生まれた土地だけじゃなくて、あぁあそこに居たいなぁ〜って思う場所全てだと思うのです。TLにもそういう考えの方々がいて、思わず最後に喋ってしまった。
そうだなぁ、もし僕が帰るとしたら札幌に帰りたいと思う。その次に地元かな。
あなたにとって地元とはどこですか?と問われたとき、皆はどこを想うのだろうか。
最後の地方 x クラウドのセッションは個人的に勉強になった。
今勤めている会社では、週一回のリモート勤務がOKという制度がある。この制度があるからか、会社に来て働いていても基本はslackというチャットでテキストベースで会話している。テキストベースはログが残るから良いという利点もあるけど、雰囲気とか相手の機嫌や具合を五感で感じられないからこそ悩むこともある。
僕のようにチャットベースに慣れていない人とかは、まず文字から空気を読むということが結構負担になって、気が付くとメンタルゲージがかなり削られているという人は居ると思う。
あと僕の場合、会社に入って同じチームメンバーってどんな人達なのかな?って思ったときに、自分以外の人がほぼ毎日リモート勤務(花粉症のため連続日数リモート)されていたので、一緒に働いている人達がどんな性格で、どんなことが好き・嫌いで、その人が持っている雰囲気とか、技術的な得意分野とか、というか顔もよく見たこと無い直接会話したこともないみたいな状況で、最初の頃は実はとてもとても怯えながら仕事をしていた。
今は変に怯えることは無くなったけど、それは一緒にミーティングしたりとか、どんな活動してるのかとか段々とその人となりを知ったからであって、やっぱり人と何かをするときは定期的に対面するのは大事だと思う次第です。
今回のあった発表だと、全員の顔をみたら強制飲み会してましたという取り組みがあったりした。こんな風になにか一つ、仕事の運用だけの関わりだけでなくて、チーム内で作るおもしろルールとか作ってみると、テキストベースでも普段の雰囲気の共有がしやすいじゃないかなって思うんだ。
僕みたいに変に怯えて、チャット部屋でテキストを送信するのに考え込みすぎて仕事の手が止まる見たいなことも起きないと思う。(怯えすぎ)
ちなみに僕の勤め先だと社内チャット用語なるものがあって、それを使ってコミュニケーションする。初見だとなんのことだかよくわからんなぁと思うけど、段々と用語を使うのに慣れてくると「少しはここに馴染めてきているかな?」なんて思ったりする。いや、馴染めてないかも知れないけど...。
IT情勢の詳細とか語れませんが、今後リモートワーク導入する企業は少しずつ増えていくと思うので、このセッションで話された取り組みをメモして取っておくと良いと思う。
個人的な反省
今ニコ生の放送を全て見返して一人反省会をしている。
自分の声が小さい。はっきりゆっくり喋ろう自分。
あとマイクが無いと会場の音がほぼ聞こえないので、なんで会場に居る人達が笑ってるのかとかを、生放送を見ている人達にもわかるように口頭で事の経緯みたいなのを自然な感じで喋れば良かった。
ビブリオバトルの司会とかちょいちょいしてたから別に変な緊張とかはなかったけど、タイムスケジュールが変更になりましたーとかそう言った事務連絡が入ると少々焦るので経験足りないな、と思った。ビブリオバトルは発表時間等流れがもう公式で決まってるから、あとはアドリブで自由に進行できるからやりやすいのだ。
感想まとめ
僕は今回のようなイベントは珍しいと思う。技術技術していない、コミュニティは人なんだと改めて感じるイベント。
今回初めてITイベントに参加した人はいるのだろうか。
このコミュニティってこんな感じなんだ〜とか、地方の取り組み・特色を知って興味を持ってくれただろうか。
ふと数年前の自分を思い出す。
僕はあの時OSCに参加しなかったら、人と人の繋がりの大切さがよくわからないまま今を生きていたかもしれない。Rails Girls Sapporoのオーガナイザーもやってなかったと思う。色んな人が持っている技術に対する誠実さを、社会に出る前から垣間みるなんて良い経験もできなかっただろうな。
このイベントも、そういったきっかけの一つとなれば良いなと個人的に思います。
こんなちっぽけな僕に、色んな人との繋りを築いてくれたLOCALや北海道の方々に改めて深く御礼をし、僕のLOCAL Community Summit 2015は幕を降ろしたのだった。
おわり
【Django1.7.3】 ImportError: No module named security
対象バージョン:Django1.7.3
環境:Mac OS X 10.9.5
python manage.py runserver 127.0.0.1:8000 してブラウザで確認したら、
A server error occurred. Please contact the administrator.
というエラーメッセージが表示された。
DEBUGのログを見ると、
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 64, in __call__
return self.application(environ, start_response)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 168, in __call__
self.load_middleware()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py", line 44, in load_middleware
mw_class = import_string(middleware_path)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/utils/module_loading.py", line 26, in import_string
module = import_module(module_path)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named security
load_middleware して、import_moduleして、そして
named security というモジュールが無いぞコラって怒られたので原因を調べてみた。
まず、settings.pyで指定しているmiddlewareを確認してみる。
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
)
一番下に、'django.middleware.security.SecurityMiddleware' と記述されていた。どうやらこれが無いと言われているようだ。
僕が使用しているDjangoのバージョンは1.7.3なので、1.7のDocumentを確認してみる。
Middleware | Django documentation | Django (1.7)
あれ、1.7ではstartprojectしたときにデフォルトで django.middleware.security.SecurityMiddleware が入っていないようだ...なんだこれは。
次にこいつが何なのかを調べてみたら、Django 1.8から新しく使えるようになったモジュールということが判明した。
Middleware | Django documentation | Django (1.8)
なんかセキュリティまわりで色々便利になってるっぽい。
ぬー、1.8使うか迷うなぁ。でも暫くは1.7を使用する機会の方が多いと思うし、このまま1.7で勉強するのだよ。
解決方法:
SecurityMiddleware をコメントアウト(あとで使えるかもしれないので消さないでおく)
#'django.middleware.security.SecurityMiddleware',
しかし、なんで1.7.3を使用しているのにSecurityMiddlewareが勝手に記述されていたんだろうか。
そういえば前に最新版(1.8)を入れて、あとから pip install django==1.7.3 で1.7.3を入れ直したんだけど、uninstall しないと django-admin.py とかその他もろもろがちゃんと1.7版にならないのかな。installの最中には1.8を消してます〜って表示がされてたんだけどな。
なんか気持ち悪いからこの件についても後で調べてみよう。
2015/05/03 追記
PATHを調べたらPython3とDjango1.8優先になっていた。これが原因だった。。そういえばPython3をインストーラーで入れたんだった。。。