「ひとかじりのりんご」

へっぽこエンジニアの備忘録。こちらは旧ブログ。新しい方はこちら→「http://sbkro.github.io」

Sphinxでスペルチェックをさせてみた。(sphinxcontrib.spelling)

「sphinxcontrib.spelling」というSphinx拡張でreSTファイルのスペルチェックができるようなので調べてみました。

インストール

Sphinxでインストールされている前提で、pip installコマンドを実行します。

$ pip install sphinxcontrib-spelling
$ pip install pyenchant

セットアップ

Sphinxプロジェクトを作成後、conf.pyにextensionの設定とsphinxcontrib.spellingの設定を記述します。

# Extensionsを追加
extensions = []
↓
extensions = ['sphinxcontrib.spelling']

...

# 以下2行を追加
spelling_lang='en_US'
spelling_word_list_filename='spelling_wordlist.txt'

'spelling_lang'は、スペルチェックを行う言語。pyEnchantによると、以下の4種類の言語がサポートされているみたいです。

'spelling_word_list_filename'は、辞書ファイル名。ここに単語を記入しておくと、スペルチェック対象から外れます。

$ cat spelling_wordlist.txt
Indices

スペルチェックをさせてみる。

「Shpinx」でエラーが検出されるのを期待するために、index.rstに以下のような記述を行ってみます。

Correct string.

    Sphinx

Wrong string.

    Shpinx

コマンドの基本的な使い方は、以下のとおり

sphinx-build -b spelling <source_path> <output_path>
パラメータ名 説明
source_path スペルチェックを行うファイルのrootパス
spell_check_result_path スペルチェックの結果を保存するパス

実行してみます。

$ sphinx-build -b spelling -d _build/doctrees . _build/spelling
Running Sphinx v1.2.3
Initializing Spelling Checker
loading pickled environment... done
building [spelling]: all documents
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
preparing documents... done
index.rst:20:Shpinx:00%] index

Spelling checker messages written to ./doc/_build/spelling/output.txt
build finished with problems.

検出されました。

また、<output_path>で指定した場所に、'output.txt'というファイルが作成され、チェック結果が格納されます。

$ cat _build/spelling/output.txt
index.rst:20: (Shpinx)

おまけ

ちなみに、Sphinxプロジェクト作成時に自動生成されるMakefileを以下のように編集することで、ドキュメント生成前に、スペルチェックを行うことができます。もし、スペルミスがある場合は異常終了しドキュメントは生成されません。なので、これを通すことで、一定の品質のドキュメントができるのではないかと思います。

html:
    $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
    @echo
    @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
↓
html:
    $(SPHINXBUILD) -b spelling $(ALLSPHINXOPTS) $(BUILDDIR)/spelling
    $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
    @echo
    @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

サンプルコード

サンプルのプロジェクトをGIthubに上げました。参考にしてみてください。

動作環境

参考

VirtualBoxに、OSX Yosemite入れてみた。

Yosemiteをインストールしたのですが、私的には微妙だったんで、Mavericksに戻しました。とは言え、Yosemiteは触りたいので、Yosemite on Mavericksに挑戦してみました。

実行環境

ViatualBoxのインストール

Oraclaのサイトにインストーラが用意されています。dmgファイル展開後、pkgファイルをダブルクリックしてください。

Yosemite仮想マシンの作成・インストール

仮想マシンの作成については、下記リンクを参考になりました。

上記サイトの通りに仮想マシンを設定し、起動を開始すると、ブートログが表示されますが、以下のメッセージが表示され、処理が途中で止まってしまいました。

missing bluetooth controller transport

調べてみると、ホストOSのターミナルから、別途下記コマンドを入れる必要があるみたいです。

$ VBoxManage modifyvm '<VirtualBoxの仮想マシンの名前>' --cpuidset 1 000206a7 02100800 1fbae3bf bfebfbff

ブートに成功すると、OSXインストーラが起動するので、指示に従ってインストールを進めると、デスクトップが表示されます。

f:id:sbkro:20141113223109p:plain

感想は...

4CPU/8GB Memを割いているにも関わらず、動きは非常もっさりです。OSが悪いのか、VirtualBoxが悪いのか...OSの挙動を楽しむには十分ですが、プログラミングなど作業するには非常に厳しいと思います。無料でここまで遊べるので、Yosemiteに興味があるけど、インストールに躊躇している人は挑戦してみるといいかもしれません。

Head Firstオブジェクト指向分析設計

Head Firstオブジェクト指向分析設計 ―頭とからだで覚えるオブジェクト指向の基本

Head Firstオブジェクト指向分析設計 ―頭とからだで覚えるオブジェクト指向の基本

以前、「Head First デザインパターン」を読んでいて、オブジェクト指向をマスターしたぜーと思っていましたが、実はそうではなかったようです。

この本ってどんなの?

  • 顧客の要望は、常に変化していくため、コードは再利用・拡張可能な柔軟な設計をする必要があり、そのためには、どのような設計をすべきかについて書かれています。
  • 要望→コードへ落としこむために、「フィーチャ分析」→「ユースケース分析」→「テキスト分析」→「オブジェクト指向の適応」といったツールの使い方を学んでいきます。
  • 最終的には、コード・テストに落としこむため、オブジェクト指向プログラミング言語の知識が必要です。この本は、Javaで実装しています。

この本がおすすめな人

  • 良い設計(再利用可能なソフトウェア)について知りたい人。

良かった点

  • 現実と設計を比較し、「本質」としてどうあるべきかという考え方を知ることができた。
    • 要望に対するコードは、如何様にも実装することはできるが、本質をとらえた実装をしなければ、後々の変更に耐えられなくなる。
  • オブジェクト指向 = デザインパターン」ではないということを気づかせてくれた。

この本を読んだあとは...

あたりがおすすめかと思います。

参考

Alfredで、カレンダーを表示するだけのWorkflowsプラグイン「alc」をリリースしました。

Pythonの勉強がてら、作ってみました。今回の目標として、テストとドキュメンテーションをしっかりしようということで、noseの自動テストとSphinxでのドキュメント自動生成にも挑戦してみました。

iCalを起動せずに、さっとカレンダーを確認できるので便利です。

f:id:sbkro:20140812082804p:plain

ソースは、Githubプロジェクトから

詳細の説明は、別途紹介ページを作ったので、そちらを見てください。