2014-02-25

とおるメモは死んだ

10年以上前に書きためた雑文を、Kindle の電子書籍にして99円で販売した。もともと知人がウェブじゃなくて Kindle で読みたい、とうるさく言ってきたので作った。ふと、儲けることはできるのだろうか、と思った。結論からいうと、まったく儲け方が分からなかった。

釣りタイトルで、ブログ記事を書く → はてブ、そこから派生したgunosyから 1000 ページビュー → そのうち1%が購入 → 10冊売上 → ちゃりんちゃりーん

という流れを期待していた。

ブログは150ページビューくらい。私のブログにしては多いほうだ。はてブ、gunosy からの流入はない。

ブログを書いてから40冊ほど売れたが、知人による御祝儀購入だと思う。露出しているのが Twitter しかなく、知り合いとアフィリエイト狙いのスパムアカウントばかりだった。知人によるツイートが多い時間帯と、売れた時間帯が一致している感がある。

書名に魅力がないので、Kindle ストアで衝動買いというのは考えにくい。

誤字脱字、自分が読んでもよく分からない文章、最後のページにJavaScriptのエラーみたいなのが残っているので、気が向いたら修正しようと思っている。書名や価格は、大いに再考の余地がある。

とおるメモは私のなかで、終わってしまっている。我ながら面白くかけている文章もあるけれど、松本人志が何かの本で書いていたところの「誰もが1つや2つ持っている、滑らないネタ」でしかない。

2014-02-22

Angular JS のチュートリアルを写経

Python 旅館 2014.02 なる寄り合いに参加した。会議室を借りて、だべったりコード書いたりする。今回は Angular JS のチュートリアルを写経した。

このチュートリアルは、各ステップで、すべてのソースコードが文書に書かれていない。git checkout step-8 を実行すると、ステップ8でのすべてのファイルの変更が分かる。この方式だと、私はステップをきちんと入力せずに、なんとなく解説を読んで分かったような気になる。もちろん分かっていない。

というわけで、写経してチュートリアルを読み進めていった。結果として有効だったと思う。モジュールの基本的な考え方がなんとなく見えたし、コントローラ、フィルタ、サービスを追加するイディオムらしきものも分かった。「写経」は定義のゆれが大きい言葉なので、具体的にやったことを書いておく。


  • チュートリアルのリポジトリを git clone する。
  • git checkout step-1 とかしながら、ステップを進めていく。
  • 別のディレクトリに、チュートリアルのコードを写していく。
    • npm install は使わない。
    • index.html から写経し、必要なファイルを追加していく。
  • これは何が起こっているのだ?という箇所があったら、チュートリアルのドキュメントを読む。
  • 次のステップへ。

を、繰り返した。スマホのカタログサイトを作るというチュートリアルで、スマホのスペックが書かれたJSON ファイルは、1ファイルをちょっとだけ写経したあとは、ファイル郡を丸ごとコピーした。CSS や HTMLテンプレートで、似たような繰り返しはコピペで済ませた。

2014-02-16

Python/Sphinx を使って Kindle 本を出版した

Kindle 本を出版するのに使用した、ドキュメント生成ソフトウェア Sphinx の紹介と、ドキュメント自体の紹介をする。


はじめに

Amazon の Kindle Direct Publishing は、手軽に電子書籍を出版するためのサービスだ。特定のフォーマットで電子書籍データを作り、ウェブページで情報を入力、手続きすれば、Amazon の Kindle 本として販売ができる。

先日、拙作を上梓したときには Sphinx  というソフトウェアを使った。Sphinx はドキュメントを生成するソフトウェア がある。サンプルをとったことはないけれど、おそらくは主にソフトウェアの技術文書を記述/生成するために使われていると思っている。たとえば Sphinx を使っているコミュニティのウェブサイトは、Sphinx で作られている。けれど別に仕様書を書く以外に使ってもよい。


restructuredText という単純なテキストでコンテンツを準備すると、Sphinx の標準機能で epub 形式に変換できる。Kindle Direct Publishing に epub 形式のファイルをアップロードして、著者情報やジャンルを設定しておけば、めでたく出版されるというわけだ。



Sphinx で epub 形式のファイルを生成

Sphinx を使うには、プログラミング言語 Python を使う。何を言っているのか分からない、かつ、Mac を使っているのであれば homebrew と pyenv を使うとよい。

$ pip install sphinx
$ sphinx-quickstart

続きはドキュメントを読めばよい。最後に make epub すれば epub 形式のファイルが生成される。これを Kindle Direct Publishing で出版すれば完了だ。

さて...

多忙なビジネスパーソンに求められる癒し

クラウドジェネレーションのビジネスパーソンは、日々大きなストレスにされされています。常態化した人手不足により、残業や休日出勤が当然のように要求されます。

現実を知らない評論家は訳知り顔で「残業は無能の証」「効率が悪いだけ」「社畜乙」などの罵詈雑言をSNSでつぶやき、ビジネスパーソンにさらなるストレスを与えているというのが現実です。

直近で目の前の問題に対するソリューションを期待できない今、ビジネスパーソンに必要なことは癒やしです。ひとりでも多くのビジネスパーソンに癒やしを提供したい、その想いから、とおるメモを出版する決意をしました。

メモで癒せるの?

たかがメモを読むだけで癒やしを得られるとは思えない、という人がいます。私がお伝えしたいのは、まさにそのような人にこそ、癒やしとしてのメモ、すなわち Memo as a Heal が必要だということです。

薬物中毒の患者さんは、頑なに「自分には治療が不要だ」と言います。けれど、患者さんこそが、まさに治療を必要としていると思いませんか? 気づかない間に、同じことがビジネスパーソンにも起こっているのです。

なぜメモが癒やしになるのか

長時間のセラピーは、まとまった時間が必要です。これでは多忙なビジネスパーソンに、さらにストレスを与えてしまうことになります。

短いメモを読むだけなら、比較的容易に時間を確保できます。またその癒やされたときに湧き出るβエンドルフィンの作用により、自発的に癒やしを求めるようになり、さらにメモを読むことになります。まさに、ポジティブ・スパイラルですね!


メモが効果的である、たった3つの理由

POINT 1: ショート・センテンス


とおるメモは、短いショート・センテンスとショート・パラグラフで構成されています。だから電車でひと駅の間にひとつのメモを読み切れます。乗り過ごしによるストレスとは、もうグッバイ。


ショート・センテンスだから、寝る前にちょっと読むのにも適しています。これがとても面白い長編小説だと、のめり込んでしまって睡眠時間を削ってしまって、本末転倒。とおるメモなら、1メモくらい読んだら飽きてしまうので、すぐに眠れます。

POINT 2: エクストラ・オーディナリなエクスペリエンス


多くの人が体験できないこと、普段気にしないテクノロジのことが書かれています。擬似的に、非日常的な体験をすることで、読者の魂を開放し、ヒーリングへと導くのです。


たとえばテキサスの片田舎にわざわざ行きますか? 行きませんよね。ニューヨークやサンフランシスコに行きたいと思います。けれど何も考えなかったせいで、クリスマスにはゴーストタウン化してしまう町に住んでしまう愚か者の生活は、なかなか愉快です。

またスーパーコンピュータや、いま話題の原子力についての考察もあり、読者の見聞を広げ、教養を深める効果があります。

POINT 3: ポジティブなアティテュード

エレナ・ホグマン・ポーターの小説「少女パレアナ」を知っていますか? 日本ではポリアンナとして知られているかも知れません。母をなくした少女が、父との約束である「よかった探し」をすることで幸福に生きていく物語です。

とおるメモも、ものごとのポジティブな面に焦点を当てます。成績がCであったとき、A ではなかったことを嘆きません。D でなかったことを喜ぶのです。ネガティブなことを考えても道は開けません。起こったことは変えられないのですから、自分自身の考え方を変えるのです。このようなポジティブなアティテュードのことを、ポリアンナ症候群と呼ぶこともあるようです。


読者の声

出版して間もない「とおるメモ」ですが、すでに多くの読者からポジティブなフィードバックが届いています。













豪華特典

Kindle 版の出版を記念して、今だけ特別に2つの特典があります。

特典1:  通常価格 3,900円を、99円でご提供

特典2:クリエイティブ・コモンズライセンス

この機会をお見逃しなく! あなたの癒された生活を願っております。




とおるメモ Kindle 版

Amazon の Kindle Direct Publishing でとおるメモという本を出しました。もともと、ウェブ上で書き散らかしていた雑文です。10年前の話です。昨年 Kindle版を出版しようとしました。出版しようとしたファイル形式がおかしかったようです。

ウェブで公開しているので無料で読めます。Kindle版を出すにあたってダルい思いをしたので、99円いただきます。うっかり人気が出て、儲けになりそうだと思ったら、値上げしてちゃりんちゃりん生活します。

2014-02-15

捨てたもの: オフィスの引き出しの中身など

職場のデスクの引き出しを整理した。まず、もう食わないだろうという感じのお菓子。それから、使ったきりもとの場所に戻されていない、ケーブルやアダプタ類を所定の位置へ戻した。

自宅の汚れたままだったレジャーシートをゴミ箱へ移動した。雨の日のトライアスロンのレースで使って、後日きれいにしようと思っていた。けれど後日が訪れることなく本日に至る。100円のシートだし。

金属や陶器のゴミを出した。部屋の隅を選挙していたゴミ袋が消えた。

2014-02-12

捨てたもの: データ通信端末、完走証、写真

ランニングやトライアスロンの完走証がまたもや出てきたので捨てた。それから写真も何枚か出てきたので捨てた。

5年以上まえに契約したイーモバイルの、USBスティック型の通信端末を手放した。機種変更なので、正確には捨てたわけではない。風邪で休んでいたら、イーモバイルから機種変更しませんか、と電話がかかってきたのだ。この電話がなければ、以前の端末を使い続けただろうから、まあよい。

問題は何も考えずに機種変更をしたお陰で、この端末が本当に必要なのか怪しくなったことだ。そもそも社外で打ち合わせするとき、新幹線に乗るときくらいしか使わない。今は iPhone でテザリングできる。どうせだったら Nexas 5 にしたらよかった、などといろいろ考えてしまう。

2014-02-08

pyenv と tox で複数バージョンの Python に対応したライブラリ開発

生まれてはじめて PyPI にコードを登録した。Python 2.7 と 3.3 で使えるようにするにあたり、ライブラリの実装とは直接関係ないところで、とまどった。現時点での手順を記録しておく。

以下を前提とする。

  • OS X 10.9.1 (Mavericks)
  • homebrew でパッケージを管理
  • pyenv, pyenv-virtualenv で OS 上の Python 環境を管理
  • PyPI に登録するライブラリは Python 2.7 と 3.3 に対応

まず始める

shimizukawa によるハンズオン資料公式ドキュメントを併読しながら進める。基本的な作業はハンズオンでだいたい分かる。とはいえ、あなたが持っているライブラリは、必ずしもチュートリアルどおりではないだろうから、公式ドキュメントのガイドが必要になるだろう。

ところで、ナウなヤングは egg じゃなくて wheel を使うらしい

pyenv と pyenv-virtualenv をインストールする

pyenv は先週まで存在すら知らなかった。肉の日生まれの wozozo が使っているらしいので、試すことにした。まずインストールする。

$ brew install pyenv pyenv-virtualenv
$ cat >> ~/.zshrc
export PATH=$HOME/.pyenv/bin:$PATH
if which pyenv > /dev/null; then eval "$(pyenv init - zsh)"; fi

pyenv は複数の Python インタプリタをインストール/アンインストールするツールだ。pyenv-virtualenv は、pyenv と virtualenv を一緒に使いやすくする。実際に使ってみる。

$ pyenv install 2.7.6
$ pyenv virtualenv 2.7.6 foo-27

ひとつめのコマンドで Python 2.7.6 をインストールする。通常 ~/.pyenv/versions/2.7.6/bin/python にインストールされる。他にも pip なんかも入る。

ふたつめのコマンドで、Python 2.7.6 をベースに virtualenv を作る。通常 ~/.pyenv/versions/foo-27/bin/python に構築される。pip の他に activate なんかも入る。

同様に Python 3.3 をインストールして、仮想環境を作る。

$ pyenv install 3.3.3
$ pyenv virtualenv 3.3.3 foo-33

普段は Python 2.7 で作業しているので、おそらく foo-33 環境は不要だ。Python 3.3 については、tox が virtualenv を別途作ってくれる。けれど、カジュアルに pip とかしてしまうと、元の環境を壊してしまう。元の環境は綺麗にしておきたいので foo-27 と foo-33 環境を作る。

つづいて、プロジェクトで foo-27 と foo-33 う使うように設定する

$ cd /path/to/foo
$ pyenv local foo-27 foo-33
$ cat .python-version
foo-27
foo-33

pyenv local X Y を実行すると、そのディレクトリで使う Python 環境を設定する。ここでは foo-27 と foo-33 だ。

順序には意味がある。python コマンドを発行した時には、foo-27 環境の Python が呼び出される。

そして foo-27 と foo-33 の両方を指定する必要がある。後述する tox は python2.7 や python3.3 というコマンドを実行する。このとき pyenv local で指定された環境を探しに行くからだ。pyenv local foo-27 だと python3.3 が見つからないというエラーがでる。

ref. Using tox with pyenv #92



tox を設定する


$ pip install tox pytest
$ pip freeze | grep -v wsgiref > requirements.txt

wsgiref を含まないようにしている。理由は後述。

tox を使うための設定ファイルは以下のとおり。

$ cat > tox.ini
[tox]
envlist = py27,py33

[testenv]
deps = -rrequirements.txt
commands=py.test


envlist で py27 と py33 を指定しているため、このディレクトリ以下で、ビルドやテスト時に python2.7 と python3.3 を呼び出す。

tox.ini ファイルで、Python 2.7 インタプリタをフルパスを指定できる。だが、やらない。小さなプロジェクトだけれど、自分のところでしか動かないような設定にしたくないからだ。

tox を実行


$ tox

Python 2.7 用に virtualenv して、インストールして、ビルドして、テストを実行。Python 3.3 も同じ。

requirements.txt に wsgiref が含まれていると Python 3.3 で以下のようなエラーが出る。


Downloading/unpacking wsgiref==0.1.2 (from -r requirements.txt (line 7))
(...)
  File "./ez_setup/__init__.py", line 170

    print "Setuptools version",version,"or greater has been installed."

                             ^

SyntaxError: invalid syntax


PyPI へ登録する


$ python2.7 setup.py sdist bdist_egg upload
$ python3.3 setup.py bdist_egg upload

これで登録はできるが、こういう呼び出し方でいいのか自信がない。


まとめ


  • はじめて setup.py を書いた。
  • ヤク刈り、とは言わないけれど、地味に解決すべきことがことがあった。
  • 明日は肉の日である。 

2014-02-05

捨てた: ドライバ(ねじまわし)、データ集録デバイス、ケーブル、NAS、年賀状

捨てたもの記録

  • ドライバ ... 以前に勤めていた会社で、エンジニアの小道具兼ノベルティになっていた会社ロゴ入りドライバ(ねじまわし)。どう考えても使わないので、次の金属ゴミの袋へ。
  • データ集録デバイス ... ±5V のアナログ信号入出力、デジタル信号入出力をするデバイスをゴミ袋へ。どう考えても使わない。
  • ケーブル類 ... 同じような長さの同じような端子のケーブル。特にUSBケーブル。まとめてゴミ箱へ。品川区ではUSBケーブルは燃えるゴミ。
  • NAS ... .ero フォルダだけが 800GBくらいになっていたけど、まったく使っていなかった。HDDを物理的にエイヤっとして、次の金属ゴミへ。
  • 年賀状 ... 年賀状は読み返すことはないし、出さないので参考にすることもないので、持っていてもしょうがない。すべてスキャンして、住所だけアドレス帳に入力して、さよなら。
  • ペン ... なぜか増えていくペン類。黒を2本、青を5本(普段は青のボールペンを使う)、筆ペンを1本のこして、すべて廃棄。とくに蛍光ペンとかまったく使っていない。