So-net無料ブログ作成

OSC 2017 千葉 [Python]

週が明けたので、先週の土曜日のこと、 Open Source Conference 2017 千葉に行った。
https://www.ospn.jp/osc2017-chiba/
千葉のどこかでやるらしいことは聞いていたが、金曜日まで、何日にどこでやるのか知らなかった。
twitter の TL で、土曜日に津田沼の千葉工大だということを知った。

近いし(千葉のために)少しでも盛り上がるんなら賑やかしに行こうかということになった。気が付いたら人生の半分を千葉で暮らして郷土愛らしきものも芽生えた。

一般社団法人 PyCon JP で、寺田さんが Python Boot Camp の説明をしていて、僕も Python Boot Camp の TA をやったので、隣に席があったので座らせてもらった。
ブースには、いままであまりやってこなかったけど、必要に迫られてPython (Django とか Tensorflow) をやらなきゃいけなくなってきた(なりそう)という人が来ていて、時代の変化を感じた。
もう何年も「Python ってマイナーだよねー」といいながらみんなで Python を書く職場にいたので、感覚がマヒしている。

最後に LT の時間があったので、これまた賑やかしのために参加させてもらったが、千葉工大の上田研の学生さんたちが頑張ってたのが印象的だった。
LT は、痛恨の時間切れで反省点が多いが、資料を整理してここにおいておく
https://gist.github.com/nakagami/292b711d39c368088d90cdb14e968e54
(さめがめと pythonanywhere に全く言及できなかった)

参加者が 100人を超えたようなので、来年もあるかも。
日程が合えば来年も参加しよう。

コメント(0) 
共通テーマ:日記・雑感

Python でリバーシ(オセロ) [Python]

先日、息子と「人間とコンピューターが対戦するオセロのプログラム」の話をした。

コンピューターが人と対戦するオセロは、僕が中学生の頃に読んでいた電波新聞社のマイコンBASICマガジンに、よく掲載されるテーマだった。
自分が、うっすらと記憶しているプログラムでは、盤の位置によって重みがつけられていて、コンピューターの手番で置ける場所のうち、重みの一番大きい位置に置くというロジックだったと思う。
自分でもプレイしたが、単純なロジックの割には、勝ったり負けたりして意外と強いんだなと思った記憶がある。

あの頃は、ただひたすら雑誌にあるプログラムを入力してカセットテープに save して遊ぶだけだったけど、今だったら、あのプログラム書けそうだぞ、と思った。

インターネットで探せば、解説記事があるだろう・・・と思ったらあった。
http://uguisu.skr.jp/othello/5-1.html

僕が見たプログラムでは、もっと単純な重みづけだった気がするし、次の手の位置の重みだけで判定していたと思うが、ここの解説では、置かれた後の盤上の黒と白の駒の重みの合計の差で判定していて、幾分かロジックが複雑だ。

今の自分なら Python で書くのが一番早いし、駒をカッコよく描画する必要はないんで、コンソールに、駒の位置がわかる程度に print できればいいや。・・・できた
https://gist.github.com/nakagami/7a7d799bd4bd4ad8fcea96135c4af179
(python3 で動きます)

プレイしてみると、なんとなく自分が昔プレイしたコンピューターよりは弱い気がするんだけど、それは自分が強くなったからなのかな?
コメント(0) 
共通テーマ:日記・雑感

「すらすらわかる Python」と「いちばんやさしい Python の教本」 [Python]

ス>ラスラわかるPythonいちばんやさしいPythonの教本 人気講師が教える基礎からサーバサ
イド開発まで (「いちばんやさしい教本」シリーズ)








同時期に2冊の Python の入門書が出版されるらしい。それぞれ、の違いとしては以下のような感じかな。

スラスラ

- クラスを作るなど、多くの Python の機能を説明してない
- 読み物っぽくなっていて、スラスラ読める
- 説明するところを極力減らして、最初にプログラミングをするときにくじけないようなしている
- 役に立つプログラムを書くというよりは、まずはプログラミングとは何かを解説している
- レビューした

いちやさ

- カラー刷りでわかりやすくしようとしている
- 外部パッケージの説明も少しある
- スラスラよりは説明の範囲が広い(bot, Webプログラミング・・・)
- でも、やっぱりクラスを作るところなど説明しないで極力、説明する分量を減らそうとしている
- リスト中のスペースの表示が記号でわかるようになっているのがわかりやすいかも
- 自分の所属している会社が書いた

どちらも、かなり初心者向きで、
- スラスラは読み物っぽく、最初のプログラミングでくじけないようにしている
- いちやさはビジネスマンの読む Office解説本みたいなテイストになっている
という微妙な違いがあって、どちらが良いかは一概に言えなくて、本屋で見て比較してから買ってもらえると良いと思う。

職業プログラマーとして Python を書くのであれば、内容はまったく不十分。
しかし、自分でちょっとデータ処理をしたい、既存のライブラリーを使いたい、ということであれば、データ構造にリストと辞書があって、関数が定義できれば十分といえる。
クラス定義などの説明をざっくり省略することでわかりやすくしようというアプローチは僕にとっては目からうろこだった。
そういう本が2冊も同時に出るっていうのは、Python の裾野がものすごく広がっているんだなぁー、と思ったことであった
コメント(0) 
共通テーマ:日記・雑感

Python Boot Camp in 愛知 [Python]

全国47都道府県制覇を目指して Python Boot Camp が始まったとき、故郷の愛知で行われるときに、地元の人で足りなかったら手伝いたいなと思っていた。

名古屋は都会なんで、いつかはやる人いるだろうなと思っていたが、企画してくれる人がいて開催されるはこびとなった。さすが都会。
https://pyconjp.connpass.com/event/60165/
最初予定していた TA の申し込みはすぐにいっぱいになったが、TA が増えたら、参加者枠を増やすということだったので TAとして参加することにした。
自分が TA をすることによって参加できるひとが増えたなら良かったと思う。

初心者は、ちょっとした typo で行き詰ったりするので、そういうときに、ちょっと聞いて解決できるような、こういう形式のセミナーはいいなと思った。
(教える人間を多めに用意しないといけないのが大変だけど)

このイベントが(Python に限らず)プログラミングをする、いいきっかけになるといいし、このイベントが自分で勉強できるきっかけになるといいなぁと思った。



コメント(0)  トラックバック(0) 
共通テーマ:moblog

Pure Python の redis client [Python]

このエントリーは
(第71回)Python mini Hack-a-thon の記録です
https://pyhack.connpass.com/event/45135/

色々なデータベースの pure python のドライバーを書いてきましたが、
そろそろネタが尽きてきたので、redis のクライアントを書き始めました。

[インストール]
How to Use Redis with Python 3 and redis-py on Ubuntu 16.04
https://www.fullstackpython.com/blog/install-redis-use-python-3-ubuntu-1604.html

macports の場合は
sudo port install redis
sudo launchctl load -w /Library/LaunchDaemons/org.macports.redis.plist


[コマンド操作について]
redis-cli コマンド操作まとめ
http://qiita.com/rubytomato@github/items/d66d932959d596876ab5
redis入門 データ型とその簡単な操作について
http://www.yukisako.xyz/entry/2015/05/10/021400
3分でRedisのpub/subを使ってみる【redis】
http://otiai10.hatenablog.com/entry/2014/05/04/112426

[プロトコル]
Redis Protocol specification
https://redis.io/topics/protocol
プロトコル仕様
http://redis.shibu.jp/hacker/protocol_spec.html
RESP (REdis Serialization Protocol)の調査
http://qiita.com/nus/items/374ad5869f471da5b5cf

上記の URL を元に、最も基本的な文字列(バイナリ)データの get/set ができるあたりまでできました
https://github.com/nakagami/toyredis

エラー処理できてないし、未対応のコマンドがいっぱいあるので、そこらへんをある程度改善したらリリースしようと思います。
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

PyConJP 2016 に参加した [Python]

https://pycon.jp/2016/ja/

21日, 22日の Conference と、24日の Sprint に参加した。

いつも事前に Conference で、どれを聞こうか迷っているのだが、今回もいつものごとく、その時間にそこらへんで会った人に話こんでいたりして、結局、あんまり聞いてなかった。
それはそれで久しぶりにあった人たちと楽しい話ができてよかった。
きっと、来年もそんなだろうなぁ。

毎年、基調講演は聞くようにしている

Jessica McKellar のキーノートは、ダイバーシティーとか、コミュニティーとか、まあ、そんな感じだったが、Jessica は大学で化学を学んでいて、大学の CS の時間にプログラミングを始めて、その時点で子供の頃からコードを書いていた人たちと比べて劣等感があった。しかし・・・というような話があって、 kameko さん見るべき、と思った。

Andrey Vlasovskikh のキーノートは、サンプトペテルブルクの紹介から始まって、メインのテーマは Python3.6 と型ヒントかなー、という感じだったが、Andrey のトークと関連するセッション(日本語含む)の紹介がされていて、興味を持った人がそのセッションが聞けるようになっていて非常に良かった。
後で聞いたところ google translate で、日→英に翻訳して概要をつかんだあと、1日目に対象のトーカーの人に話を聞きにいったりしていたそうだ。すごい。

今回は初めて僕も発表することができた。
https://gist.github.com/nakagami/bfbe98d62377f3f4554121ab161ae8c9
資料は多めに用意したつもりではあったが、半分も話すことができなくて、せっかく用意した資料の無駄になった部分が多くてちょっと残念だった。別の機会に話してない部分だけで発表だと面白くないんだよなー。
ただ、資料の中の最も話したいところを45分に納めることができてトークとしては、だいたい満足な出来だった。


24日のスプリントは、僕のトークと関連して、カレーめし先輩とマンツーマンで PostgreSQL のネットワークプロトコルを16進ダンプして見るというテーマに取り組んだ。
カレーめし先輩が minipg のソースを丁寧に見てくれたおかげで、よいコードレビューになった
https://github.com/nakagami/minipg/pull/2


22日の LT の、走るルーターの発表を見て、 micropython が、思っていたよりも CPython に近いことを知ったので(そして、手元の Ubuntu で micropython をコンパイルして動くことがわかったので)
https://speakerdeck.com/puhitaku/cpython-vs-micropython-on-embedded-linux
スプリントの合間に minipg.py を魔改造して micropython で動く micropg.py を書いた
https://gist.github.com/nakagami/a6626ed2d954b8b04548c52369be85c3
主に、 micropython では持っていない型に変換していたところを文字列のままにしておくようにした。

24日のスプリントが、今年の PyConJP 2016の最後のイベントのはずだったが、俺たちの闘いはまだ終わってなかった。スプリントのあと、みんなで飲み会に行って、紆余曲折の末、最終組で朝3時半まで飲んだ。僕以外のメンバーは
- @wolf20xx
- Andrey (ロシア人)
- ヨナス(日本語の喋れるスイス人)
- 南米(アルゼンチンだっけ?)の人
- 台湾の人
海外から来た人、朝まで飲むとか頑張り過ぎ
英語は苦手だけど全員が共通に理解できる言葉が英語しかないので仕方なかった
- 北野武とバトルロワイヤルは有名
- 日本のアニメで一番有名なのは攻殻機動隊(どうも、見てないのは僕だけっぽい)
- ドイツの香川はスイス人に有名
- ロシアにいたことある本田はロシアで有名
- 南米では高原が有名(忘れてたよ)
- 全会一致でオノ・ヨーコは有名
- 野球は(やっぱり)ヨーロッパと南米の人には全く興味なし(なので、イチローはヨナスしか知らない)
などということがわかった。Python の話はしてない

ブログ(これ)も書いたの、僕の PyConJP 2016 がようやく終わった
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

Hastings 兄弟とお昼ご飯を食べた [Python]

先週の土曜日に Python mini Hack-a-thon #64 があって、Python3.4 と Python3.5 のリリースマネージャーだった
Larry Hastings さんと弟の Steve Hastings さんが来た。
日頃から Python を使っている人間からしたら最大級のロックスターな
わけだけど、僕はあんまり OSS デベロッパーの有名人知らないし興味もない。
当然 Larry さん知らないし、英語も標準的な日本人並にしかできないので、会話を交わそうという気はなかった。

ただ、お昼を、同じところに行くことになって、そこで英語ができないからといって遠巻きにするのは、
わざわざ日本に来てくれた人たちに失礼だろうと思って、片言ながら頑張って少し話をした。

前日は東京ディズニーシーに行っていて、その他では、日本の食べ物(ラーメンとか焼き鳥とか)を食べ歩いていたようだった。
前日は喜多方ラーメン。
シアトルには山頭火があるそうで・・・って僕よりも日本のラーメンに詳しかった。
シアトルは、日本人が住みやすいことで有名だけど、日本の料理を出すお店はあまりないそうな。
ただ、(なぜか)テリヤキを出すお店がいっぱいあるそうな。

来たのは四川の担々麺のお店だったけど、よかったかな。
非常に申し訳なかったのは、Hot な食べ物を所望していたのに、僕とのコミュニケーションが
不十分で、長家の定食、青椒肉絲(だっけかな?)があまり辛くなかったこと。
マーラー担々麺をお勧めしておけばよかった。

「Suica (Pasmo)便利だよー。電車も乗れるしコンビニで買い物もできる」
という話をしたら、その日の帰りに shimizukawa さんと Pasmo を買いに行ったらしい。

Larry さんが
「Python3 つかってるか?」
と聞くので
「Python2 だ。仕事ではね」
と言って、Steve さんが
「まあ、仕事ではそうだよね」
みたいなのが唯一の Python についての会話だった。
全体としては、会話の内容はPython 関係なかった。

そういえば、
「日本でマクドナルド以外の(日本らしい)ハンバーガー屋はないか?」
と聞かれたので「モスバーガーというのがある。でも、ここら辺でどこにあるか知らない」
という話をした。日本案内としては非常に心もとないし不親切だった。
無事モスバーガー食べられたろうか?

うまくコミュニケーション取れなくて申し訳なかった。
日本好きなオタクな兄弟として日本での良い思い出の一部になってくれたら良いのだけど。
僕も海外に行ってみたいとか英語を勉強しよう・・・とは思わないが、日本に来る外国人にはできる範囲で親切にしたいもんだと思った。
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

Python で文字列の数字部分と数字じゃない部分の集まりで分割したい [Python]

会社の Slack で質問して、いい回答が出たけど、忘れちゃうのでメモっておく

"ab123d45fgh67" -> ["ab","123","d","45","fgh","67"]

みたいに、文字列を分割して文字列の配列にしたい
itertools を使う例と re を使う例が出た
>>> import itertools
>>> [''.join(it) for _, it in itertools.groupby("ab123d45fgh67", str.isdigit)]
['ab', '123', 'd', '45', 'fgh', '67']
>>>

>>> import re
>>> re.findall(r'(\d+|\D+)', "ab123d45fgh67")
['ab', '123', 'd', '45', 'fgh', '67']
>>> 


やっていることはなんとなくわかるが、次にやりたくなったときにメモ残しておかないと再現できない自信がある

python2.7 でも python3.5 でも動いた。 ちょっとびっくり。
str.isdigit って渡しかた 3.5 でもできるんだな
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

リクルートテクノロジーの自動要約API [Python]

@shinyorke さん経由で Python の自動要約API の存在を知る
http://blog.recruit-tech.co.jp/2015/10/30/summpy-released/

GitHub のリポジトリは https://github.com/recruit-tech/summpy
python2.7 で、以下のパッケージが必要とのこと

- numpy
- networkx
- scikit-learn
- pulp
- cherrypy
- MeCab

自分の Ubuntu14.04 の環境で、できるだけ pip install でインストールした。
古いバージョンのものもあったので、それは pip install --upgrade で最新にした
(自分の環境では、 --upgrade する前は "scipy distance metrics do not support sparse matrices." と出てた。さっぱりわかってない)

MeCab(python-mecab)は、pip でインストールするのを早々に挫折して apt-get でインストールしたのだが、辞書を EUC-JP から UTF-8 にする必要があったため、 mecab コマンドも apt-get でインストールした。
そこらへん、まとめて http://mglab.blogspot.jp/2008/06/mecabpython.html あたりが参考になった。
結局、 Mecab 関係のインストールと設定は

$ sudo apt-get install mecab mecab-ipadic mecab-utils libmecab-dev
$ sudo /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic \
-o /var/lib/mecab/dic/ipadic -f euc-jp -t utf-8 -p
$ sudo apt-get install python-mecab

こんな感じ。

とりあえず動くのだけ確認したけど、みんな、 WebAPI よりは、ライブラリ(pypi からインストールできるパッケージ)になっているほうがうれしいんじゃないかなと思う。
もちろん、使用例として WebAPI の実装があるのはうれしいんだけど。


残念ながらライセンスの表記がないので使いづらいなぁ

(2015-11-05 追記)
MITライセンスになってた。すばらしい
https://github.com/recruit-tech/summpy/commit/cec00ace472ba8a35279de0195ee96bab54a701a
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

PyCon JP 2015 に参加した [Python]

PyCon JP 2015 にどういうセッションがあったかはこれを見るとよい。
http://togetter.com/li/885210
(メディアスポンサーとしてまとめてくれた toggetter さん、すばらしい)

僕自身は、年々セッションを聞く時間が減って、今年は基調講演を含めて(必ず入れる)メインカンファレンスフォールの幾つかのトークしか聞いてない。
2日間、会場にはオープニングからクロージングまでいたのに。

まあ、ビデオがあるのでいつでも見られるし(実際には見ないけど)
「誰か、知り合いはいないかな・・・」
と会場内をうろうろするので、セッションを聞くよりも疲れる。

自分の聞きたいトークの会場に我先にと集まるひともいれば、ただ知り合いと世間話をするためにそこらへんをうろうろするひともいる。
本当は、もっと知らない人と話したいんだけど、そういう勇気があまりないので、来年は全員の名札に twitter のアイコンが入ってるといいな。

別にプログラム担当の方が狙っているわけではないのに、毎年すこしずつ集まる人たちの毛色がちがって面白い。
Web フレームワークの時もあるし、統計解析の人たちが多い時もあった。
今年は、女性コミュニティーの人たちと、(数値解析の中でも)pandas 関連のトークや LT が多かったように思う。

ボランティアスタッフの皆さんも、いつもの人も入れば、新しい人もいて、新陳代謝があって、このままどんどん入れ替わって行って、イベントが長く続くといいなぁ、と思っている。

今年は去年と同じ会場だったので、道間違えたりしなかったけど、そろそろ広さ的に厳しいかな、と思った。メインホール以外は、僕のような出遅れ気味の人間が入れないくらい人いっぱいのセッションが多かったし。
ランチが屋台だったり、コーヒーが無限になったりして、運営上の新しいチャレンジがあってよかった。
食べ物だけじゃなくて、チュートリアルや子供向けワークショップとか。
子供向けワークショップは、形を変えてもよいので来年も続いて欲しい。
ロジ的に厳しいものもあるが、そのなかから良いものだけ取り入れて来年に繋がるといいなぁ。

販売チケット数を増やさなければいいんだけど、もっとたくさんの人と会えると楽しいと思うし、いい会場があるといいなぁ、と思う。
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感