このブログについて
そこはかとなくPython 3.4にも対応しているみんなのPython第三版の電子書籍が発売されたよ〜!

そこはかとなくPython 3.4にも対応しているみんなのPython第三版の電子書籍が発売されたよ〜!

「みんなのおっぱい」とか「みんなのおっぱいそん」などと言われながら皆様に親しまれている拙著「みんなのPython」。このたび第三版の電子書籍ができました!

三回の改訂それぞれ増刷。事実が示す文字通りのPythonの定番入門書です。Amazonでは期間限定で,440円も安い15% OFF(2500円)のセール中です。スマホやタブレットで持ち運びたい,手元のPCでみんPyを読みたい,という方は,この機会にぜひご購入ください。

初版から7年以上にわたってみなさまにお読みいただいている「みんPy」。第三版の改定の目玉はPython 3への対応です。DjangoやNumPyなど主要なライブラリ,フレームワークがPython 3に対応し,またPython 2を凌駕するより良いPython バージョン3.3のリリースされるタイミングにあわせた改定でした。今後ますます存在感を増してゆくPython 3の情報を,必要十分かつコンパクトに分かりやすく伝える書籍とすべく,内容を大幅に見直しました。

改定から一年近く経ち,世の中では3.4がリリースされようとしていますが,What's Newに「No new syntax」とあるとおり,3.3から文法の変更はありません。第三版は「そこはかとなく」3.4に対応していますので,書籍の内容はそのままご活用いただけます。

強いて言えば,3.4対応をうたうならvenvを使った仮想開発環境の構築についての解説はあるべきかも知れません。venvは3.3から追加されていますから,これを使った仮想開発環境の構築については第三版でも扱っても良かったのですが,理由があって落としました。

3.3では,当初packagingというdistutils由来のパッケージ管理モジュールが搭載される予定でしたが,土壇場になり不採用になりました。このやりとりを見ていて,Pythonのパッケージ管理手法は,まだデファクトが存在しない状態なのだと思ったのです。パッケージ管理は,開発環境の構築と密接に関わっています。このような状態で解説を書いてしまうと,将来的に使えない情報を書籍に載せることになります。ネットの記事と違って書籍のライフスパンは長いので,そのような状態は避けたかったのです。結局,3.4にensurepipが搭載されたことにより,pipペースの仮想開発環境構築とパッケージ管理手法が導入されました。私の予感が正しかったことが,奇しくも証明されてしまったわけです。

文法の変更は行われない3.4ですが,強化されたvenvや,新しい非同期IOライブラリasyncioが搭載されたりして,Python 3を使いたい感,というか,Python 2に戻りたくない感はものすごく増してます。まだPython 2を使っている皆さんも,この機会にPython 3を学んでみると良いかも知れませんね。

と,いうわけで,拙著の電子書籍発売のお知らせついでに3.4について概観してみました。たまにしか書かなくなったブログで,思い出したようにこんなことができるのも,「みんPy」を読んでくれた沢山の方がいるおかげです。これからも,ご愛読くださいね:-)。

2013-12-06 14:50 Read More
ミニマルデザインな「Baby in Car」ステッカー作成記,あるいは非デザイナーがいかにデザインするか的考察

ミニマルデザインな「Baby in Car」ステッカー作成記,あるいは非デザイナーがいかにデザインするか的考察

新車を買って,以前作ったアップルファンのためのマタニティマークは旧車とともにおさらば。新しい車にも,なにかステッカーが欲しいな〜,と思ってしばらく一人ブレインストーミングしてた。

「ワンコ乗ってますステッカー」も欲しくて,最初は,Dog Cowと,Happy MacをアレンジしたBaby Macをデータとして起こして自作ステッカーを作ろうと思っていた。Happy Macはいいけど,Dog Cowはアップルファンの中でも古株しか知らないだろうし,ニッチ過ぎるのが気になっていた。

そうこうしているうちに,ドライブ中,シンプルなラインだけで構成されてた,行ってみれば「ミニマルデザインなワンコ乗ってますステッカー」を貼っている車を見かけて,嫁さんと一緒に「あれいいね」と意見が一致。方向性が固まったので,時間を見つけてステッカーを自作することに。

デザインについては素人なので,どうすればいいのか方向性すら定まらない。なので,ネットから既存の素材を探して参考にしたり,デザインの作成も素人的な間違いをしないよう,できるだけロジカルなプロセスを踏むよう工夫して作ってみた。

まずは「子供乗ってますステッカー」を表現するにはどうするかを考える。Google画像検索で,「baby simple」などの検索語を与えつつ,線画を検索してみる。いろいろ見ているうちに,「子供を表現するゲシュタルト的記号」とはどうやら,

  • 髪の毛少ない
  • 顔丸い
  • 耳の位置が中心より下

というようなことらしいと分かった。

次にワンコ。同様にGoogle画像検索で,ウチで飼ってるコーギー(ウェルシュ・コーギー・ヘンブローグ)の線画を探す。「ワンコ,あるいはコーギーを表現するゲシュタルト的記号」とはすなわち,

  • 鼻長い
  • 耳でかい
  • 胸の毛がもふってる

というようなことだと判明。「足短い」というのがコーギー的に最強の記号なのは分かってるんだけど,子供の線画が顔だけなので,ワンコも顔だけ,という縛りがあったのでこれは使えない。

指針が決まったので,Inkscapeを立ち上げて線画を作る。ベジェ曲線やフリーハンドで綺麗な曲線を引けるほどスキルがないので,楕円と長方形のIntersectionを切り出したりした線と直線を組み合わせたりして,できるだけクリアでぶれのない,シンプルな線画を作ってみた。

あとは線を太くして,アウトラインに変換すればできあがり。

デザインというより,ロジカルな手法を組み合わせて作ったステッカーだけど,こういう方法なら,デザインの経験とかスキルはほとんど必要なく,ステッカーの元絵を自作できる(時間はかかるけど)。東南アジアあたりの安いデザイナーさんに数千円でアウトソースすることも考えたけど,かわいい子供とわんこのため(?)なので,自作をしてみました。自分で作った方が愛着が湧くしね。

ステッカーへの印刷はDIGITAという業者さんにお願いした。自分のと嫁の車分,2つを印刷して約2,700円でした。自分の車に貼ってみたけど,なかなかいい感じです:-)。

2013-06-07 07:36 Read More
PythonでTwitterの最新投稿をGoogle+に自動的に投稿する

PythonでTwitterの最新投稿をGoogle+に自動的に投稿する

毎朝お尻画像をアップする以外はほとんど塩漬けになってたGoogle+を何とかしようと思いました。

とはいえ時間を取られるのはイヤ。自動的になんとかできるといいなと思い,PythonからGoogle+に投稿できるっぽいスクリプトないのかな〜と思ってアツく検索してみました。ていうかそもそもGoogle+のAPIって未だに投稿に対応してないのか?

さて,いくつか発見した中でもこれがよさげだったのですが,試してみたら動かず。5分くらい,心の目でソースを眺めていると,問題の箇所が判明。JSONの形式がかわっちゃって認証用のデータとれなくなってたみたい。ふんふん〜,と鼻歌を歌いながら修正して,動くようになりました(パチパチパチ)。

これをgplus.pyというファイル名で保存して,下のスクリプトを動かすと,最新のツイートをGoogle+にも投稿できるよ。これで君のGoogle+にも花が咲くよ!

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import json
from urllib import urlopen
import gplus

if __name__ == '__main__':
    tw_screenname = 'TwitterのID'

    twsatusurl = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=%s&count=1"

    # Twitterから最新のステータスを取得
    status = json.loads(urlopen(twsatusurl % tw_screenname).read())
    # ログイン
    g = gplus.Login('XXXX', 'XXXXXXXXXXX')

    # 投稿できるようにする
    plus = g.plus('')
    # 投稿オブジェクトを取得
    post = plus.post()
    # Twitterの最新ツイートをGoogle+に投稿
    post._post(message=status[0]['text'])

 

重複判定とか定時処理化して定期的にポストしたりとかは自分でがんばってね。もとのソースにたった二文字足しただけでブログのネタにしちゃって,作者さんゴメンね! あと,今回は馴れ馴れしい文体でゴメンね! じゃあね!!

2012-12-11 02:49 Read More
息子が生まれてからの生活のこと,仕事のこと

息子が生まれてからの生活のこと,仕事のこと

子育てエンジニア Advent Calendar 2012用のエントリです。前回のchoplinさんから続いて二日目です。夜中の授乳に付き合ってたら遅くなってしまった。



4月に第一子(以下,息子ちゃん)が生まれて,生活がすっかり変わりました。プライベートな時間はほとんどなくなり,仕事以外の余った時間をほぼ全て家族(嫁さん,わんこ含む)のために費やすようになりました。Webで検索することと言えば赤ちゃんのことばかりになりました。あるとき,楽天で搾乳機の値段を調べていたら,Webサイトに貼られている楽天の広告に搾乳機ばかり出るようになったりしました。もう買っちゃったのに(w。

今は生活の全てが子供を中心に回っており,家庭の環境がすっかり変わってしまったのですが,一番変わったのは仕事のスタイルかもしれません。もともと,子供が生まれたらできるだけ時間を作って家族のために使いたいと思っていて,今年の初めくらいからそのための方法を模索していました。そんなとき,アクセス解析を見ると,去年の12月に作ったサイトが思いのほかアクセスを集めていたことを発見しました。開発の仕事の合間を縫ってアクセス向上の施策を試みたところ,かなり効果が上がってきたのです。当初,月間数万だったPVが,今では500万に届く勢いになっています。

アクセス向上のためにやったことは単純なことで,効果を比較可能な2つ以上の変更をサイトに施し,一定期間測定をし,効果のあった変更を残す,ということを繰り返し,徐々にサイトを変えてゆきました。効果のあった変更については仮説を立て,その仮説の上に次の変更を施す,ということを,定期的に行ったのです。この方法を個人的に「アジャイルSEO」と呼んでいます。Webで検索して出てくるSEO対策は,あんまり参考になりませんでした。検索エンジンさんのアルゴリズムがよく変わって陳腐化が激しいし,タイトルタグがどうこうとか基本的な事柄が多かったような気がします。

サイトからの収入も割とコンスタントで,今や受託や運用の仕事と対をなす,大きな柱になっています。その分,締め切りや時間的制約の厳しい受託の仕事をせずに,心安らかにおつきあいできるお客さんの仕事だけを受けるようにして,余った時間はサイトの改良とか,研究や勉強に充てて,家族と過ごす時間を最大化できているのが今の状態です。これからは,今まで得たノウハウを横展開したり,仲間を集めたりして,もう少し安定した収入源にしたいと思ってます。

環境が変わると,人は二種類の対応のしかたをすると思います。一つは,環境の変化に抵抗して,元の環境に居続けようとする対応。もう一つは,環境の変化を受け入れ,順応しようとする対応。

新しい環境に適応する過程で,苦しむことも多いけれど,多くは学びの苦しみで,振り返ってみると自分自身が成長できたり,視野を広げたりできる。件のサイトも,もともとは息子ちゃんの名前を決めるために,Webでいろいろな名前を収集してデータベースを作っていたことが出発点でした。名付けも真剣にやれば,なにか結果を生み出すということでしょうか。僕も息子ちゃんが生まれる前なら,「エンジニアのための××」とか「既存の○○よりここが使いやすい」みたいなサイトやサービスを作ってたと思うけど,視野が広がったのが良かったのかも知れません。また,こういう働き方のシフトができたのはPythonのおかげだなあ,と思います。

僕は幸い,仕事の時間を短くしてやって行けるようになったので,新しい環境に没入して,子育てをずいぶん楽しんでいます。今日も,そろそろハイハイをし始めた息子ちゃんのために,サークルを作ったりしていました。木工なんてほとんどやったことがなかったけど,息子ちゃんが我が家に来てくれたおかげで新しい技能を習得できたのだと思って,楽しんで作ってみたりしました。息子ちゃんを寝付かせるのも工夫のしがいがあってなかなか楽しい。結局おっぱいにはかなわないんだけど。

2012-12-02 14:02 Read More