02 Jan 2013, 03:40

WordPressで記事を取得して記事一覧を作成する方法メモ

WordPressの固定ページとかで、記事一覧を取得して一覧表示することがよくある。

一覧表示するためには、Exec-PHPプラグインを利用するのだけれども、WordPressの編集画面でテキストから[ビジュアル]に変換すると、表示がおかしなことになる。

そのたびごとに、再度コードを書き直しているのだけれども、どんなコードだったかスグ忘れて、メモもどこかに行ってしまうので、このサイトでもメモしておく。

事前準備

WordPressの編集画面でPHPを利用するために、Exec-PHPを入れる。

WordPress 窶コ Exec-PHP ≪ WordPress Plugins

ソースコード例

以下のコードをWordPress編集画面に貼り付け。ここではPHPカテゴリ(カテゴリIDは39)を取得する。カテゴリIDは[ダッシュポード] > [カテゴリー]から調べることができる。

[gist]https://gist.github.com/4450427[/gist]

表示例

-1, ‘cat’=> 39);

$posts = get_posts($args); global $post;?>

21 Dec 2012, 11:02

Foursquareの履歴をGoogleMapに表示して、wordpressで表示する方法

Foursquareのチェックイン履歴をGoogleMapに表示して、それをwordpressで表示できたらステキなライフログになるだろうと思い、方法を調べてみたので、メモしまふ。

  • FoursquareのKMLフィードを取得する
  • GoogleMapでKMLフィードを表示する
  • GoogleMapをwordpressで表示する

では、順に解説。

FoursquareのKMLフィードを取得する

まずは、Foursquareにログインして、チェックイン履歴のページへ。

次に、右下にRSS/ICS/KMLと書いてあるリンクを選択。

skitch(12)

KMLとは

KMLとは、位置情報を管理するための情報です。http://ja.wikipedia.org/wiki/KML

ページの下からKMLのURLを取得します。

skitch(13)

GoogleMapでKMLフィードを表示する

次にKMLを利用して、GoogleMap上にfouresquareのチェックイン情報を表示します。

GoogleMapのページで、検索窓に先ほどコピーしたURLを貼り付けて、検索をします。

するとチェックイン履歴がGoogleMapに表示されました。

skitch(14)

GoogleMapをwordpressで表示する

最後です。GoogleMapからブロク貼り付け用のリンクを取得します。

左上のクサリのようなアイコンをクリックして、HTMLコードを生成します。

そして、それをコピーして、Wordpressの好きなところに貼り付ければ完了です。

skitch(15)

こんな感じ

大きな地図で見る

大きさを変更したい場合は、width=”200″ height=”200″ の数値で調整する。

18 Dec 2012, 23:28

実践テスト駆動開発(GOOS本)のサンプルを通す

GOOS本(Growing Object-Oriented Software, Guided by Tests 実践テスト駆動開発)のサンプルコードを落としてきて、テストが通ることを確認する。

 

前回の続き記事なので、Openfireの導入は済んでいることが前提。
GOOS本の写経環境構築まとめ(Windows + Eclipse)

環境

  • Windows 7 64bit
  • Java SE 1.7
  • Eclipse 4.2 Juno
  • openfire 3.2

サンプルコードをダウンロードする

サンプルコードはgithubに公開されているものを落としてくる。

Javaの他にも、C#,Ruby,Scala,Groovyのサンプルコードがあるけど、試してない。

WindowLickerのエラーを解消する

テストを実行しようとすると、WinodwLickerでエラーがでる。

java.lang.IllegalArgumentException: keyboard layout JP not available.
(・・・以下エラーメッセージ省略)

日本語用のキーボード設定がないらしい。

(windowlickerのディレクトリ名)/src/core/main/com/objogate/wl/keyboard
に『US』というファイルがあるので、これを日本語用に名前変更して、再度ビルド。

$ (windowlickerのディレクトリ名)/src/core/main/com/objogate/wl/keyboard
$ cp US JP

作成されたWindowlickerのjarファイルをGOOSサンプルコードのライブラリと差し替える。
(Goosのディレクトリ)/lib/develop配下の以下のファイルを差し替え

  • windowlicker-core-DEV.jar
  • windowlicker-swing-DEV.jar

以下のページを参考にした。
http://d.hatena.ne.jp/ToMmY/20111106/1320580066

サンプルコードを実行する

実行するためには、Openfireを立ち上げておく。(管理者権限で実行)

Eclipseにgitプロジェクトとしてインポート。
パッケージを選択して、[実行] > [JUnitテスト] を選択して、実行。

17 Dec 2012, 11:58

実践テスト駆動開発(GOOS本)の写経環境構築まとめ(Windows + Eclipse)

実践テスト駆動開発(Growing Object-Oriented Software, Guided by Tests略してGOOS本)を読んでいる。

開発環境構築が少し難しかったので、備忘録としてまとめ。

 

設定環境

  • Windows 7 64bit

環境構築

以下の導入手順は省略で。

  • Java SE 1.7
  • Windows 7
  • Eclipse 4.2 Juno

JUnit

Javaの定番xUnitフレームワーク。以下の記事を参考。

JMock

Java用Mockオブジェクト生成のためのフレームワーク。

このGoos本は、Mockオブジェクトを使ったTDDをまとめたもの。

Smack

SmackはXMPPをJavaから利用するためのライブラリ。

XMPP(eXtensible Messaging and Presence Protocol)とは、XMLベースのメッセージプロトコルのこと。以下のリンクから最新版を落とす。

ダウンロードしたら、smack.jar,smackx.jarを追加する。

プロジェクトの[プロパティ] > [Javaのビルド・パス] > [外部Jarの追加]でsmack.jar,smackx.jar追加。

Openfire

xmpp サーバであるOpenfireを入れる。

以下のリンクからwinodws版exeファイルの最新版を落とす。

各種プラットホームに対応したインストーラがある。

実行ファイルを起動するとインストーラが立ち上がるので、[次へ]を押して完了。

Openfireの初期設定

[Launch Admin]を選択して、初期設定をする。

skitch(11)

  1. Language Settiing

    日本語ないので、適当に選択。

  2. Server Setting

    Domainは[localhost]

    あとは、Defaultのままに設定(Portは9090)

  3. Database Settings

    [Embedded Database]を選択。データベース詳しくないので、とりあえず速度は出ないがセットアップが楽そうなので。

  4. Profile Settings

    Default選択。

  5. Administrator Account

    adminはデフォルトで設定済み。パスワードを入力(pass)。

OpenfireのGOOS設定

Opnefireの初期設定ができたら、次はGOOS環境で使うための設定。

ここからは、本のコラム『Openfireサーバをセットアップする』を参考にする。

  • 以下の3つのアカウントとパスワードを作っておく。

    [User/Groups]タブ > [Create New User]から、以下のアカウントを作成。

    • sniper: sniper
    • auction-item-54321: auction
    • auction-item-65432: auction
  • [Server]タブ > [ServerInfomation]でServer Name が[localhost]であることを確認。(もしくは、下の[Edit Propertyで変更)

  • [Server]タブ > [Server Setting] > [Resource Policy]で[Never kick]を選択。

  • Openfireを再起動。

    (Windowsでは『管理者として実行』しないと、起動に失敗した)

WindowLicker

JAVA用のGUIテスティングフレームワークであるWindowLickerをいれる。

http://code.google.com/p/windowlicker/

バイナリやパッケージはないらしい。

以下、英語のGoogleグループの質問ページを自動翻訳したもの。(珍妙な訳・・・)

https://groups.google.com/forum/?fromgroups=#!topic/growing-object-oriented-software/d5sdcR5wTkw

あなたはwindowlicker.googlecode.comからWindowLickerを得ることができます。それはだ現在流動的な状況で、我々はそれが別のルックに対応するよう

異なるプラットフォーム上で実行されているが、コア機能と、感じている

(ポーリング、タイムアウトやエラーレポート)安定しています。

バイナリ配布はまだありません。あなたはそれをからチェックアウトする必要がありますSVNとAntでビルドします。

-ツꀀ NAT

というわけで、svnコマンドでcheckoutして持ってくる。

svn checkout http://windowlicker.googlecode.com/svn/trunk/ windowlicker-read-only

githubにもあるっぽい。

https://github.com/petercoulton/windowlicker

$ git clone https://github.com/petercoulton/windowlicker.git windowlicker

落としてきたらとりあえず、ビルド(./buil.shを利用)

するといろいろとテストが始まって楽しい。

build/jarsにjarファイルが作成されるので、それをEclipseの外部jarに登録。

  • windowlicker-core-DEV.jar
  • windowlicker-swing-DEV.jar

参考

16 Dec 2012, 23:02

JMockのインストールとEclipseでの使い方まとめ

JMockとは、JAVAでモックオブジェクトを簡単に作成するためのフレームワーク。
モックオブジェクトを利用すると、以下のことが簡単にテストできる。

  • メゾッドが何回呼ばれたか。
  • メソッドがどんな引数で呼ばれたか。
  • メソッドから任意の値を返す。
  • メゾッドがどんなシーケンスで呼ばれたか。

などなど。他にもできることはたくさん。

JMockの設定方法

JMockのダウンロード

以下のサイトより、ダウンロード。
ここでは、最新安定版の 2.5.1 jmock-2.5.1-jars.zipを落とす。

jMock – Downloads

Eclipseでビルド・パスを通す

ダウンロードしたzipファイルを解凍し、任意の場所に置く。
(ここでは、jmockと名前を変更してC:\src\jmockにおいた)

EclipseからJMockライブラリを利用するために、ビルド・パスを通す。
プロジェクトを選択して、[ブロパティ] > [Javaのビルドパス]を選択。
[ライブラリ]タブ > [ライブラリの追加] > [ユーザライブラリ] > [次へ]
[ユーザライブラリ] > [新規]を選択。

ライブラリを作成するために、[JMock2]と名前をつける。
続いて、[外部Jar追加]。ここでは、以下のJarを追加。

  • jmock-2.5.1.jar
  • jmock-junit4-2.5.1.jar
  • hamcrest-library-1.1.jar
  • hamcrest-core-1.1.jar

JMockを動かしてみる

JMockを動かしてみる。JMockを利用するためには、テスト対象のコードは以下。

public class Sample {

    private External external;

    public int num() {
        return external.get_num();
    }

    public void setExternal(External external) {
        this.external = external;
    }
}

インタフェースの用意

JMockを利用してモックオブジェクトを作成するためには、

クラスのメソッドがインタフェース化されている必要がある。

インタフェースを利用することで、『実体』と『モック』を置き換えることができる。

public interface External {
    int get_num();
}

テストコードの追加

続いて、テストコードの追加。ここでは、1回呼ばれることを検証している。oneOf

されに、生成されたモックの戻り値として返して貰いたい数字を指定している(10)

import static org.junit.Assert.*;

import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(JMock.class)   // TestRunnerを使う宣言
public class mock_sampleTest {
    private final Mockery context = new JUnit4Mockery(); //モッカリー生成
    private External external;
    private Sample impl;

    @Before  // 事前処理宣言
    public void setUp() throws Exception {
        external = context.mock(External.class);  //インタフェースのモック生成
        impl = new Sample();                       //テスト対象の宣言
        impl.setExternal(external);
    }

    @Test
    public void firstMockGenerate() {
        context.checking(new Expectations() {{
            oneOf(external).get_num();      //1回呼びだされる
            will(returnValue(10));          //10を返す
        }});
        assertEquals(10, impl.num());       //メソッド呼び出し
    }
}

モッカリーとは、テスト実行中にモックを呼び出す。

モッカリーやモック生成は定型文なので、コピペで。

テストを実行すると、グリーンバーが出てテストが成功することがわかる。

おまけ

Eclipseだと、もともと入っているJUnitとJMockでのものが競合する場合がある。

そんなときは、以下の解決方法を参照。

EclipseにJMockを入れてSecurityExceptionが発生。

15 Dec 2012, 12:50

less 中に Emacsを起動するTips

less 中に vを押すと通常はviを起動してしまけれど、あたしはEmacs派なので、
なんとかEmacsを起動したいなと思ったので、Let’s hack begen.

環境変数export EDITOR=emacsを設定する

方法は簡単だった。環境変数で以下を指定すればよい。

export EDITOR=emacs

bashならば.bashrcとか。

zshならば、.zshrcとかに記入してやればよい。

以上

15 Dec 2012, 07:36

Sphinxでテキストから変幻自在の出力結果比較(HTML,Word,PDF,ePub)

Sphinxの魅力の一つが、ひとつのテキストから様々なフォルダ形式に出力可能な点だ。

今回は以下の形式の出力結果をまとめてみようと思う。

  • HTML
  • Word
  • PDF
  • ePub

HTML出力

まずは基本から。

image

PDF出力

rst2pdfを使ってPDF出力しました。

 

image

Word出力

Sphinx-docxbuilderを利用して、Word出力しました。

image

ePub出力

IMG_0014

15 Dec 2012, 07:21

SphinxのPDF出力をrst2pdfで試す@Windows64bit

SphinxでPDF出力する方法は以下の2つがあるらしい。

  • rst2pdf
  • Latex

以下のページを参考にした。
SphinxでPDFファイル作成 :: ドキュメンテーションツール スフィンクス Sphinx-users.jp
今回はWindows環境で、rst2pdfを使う方法を試してみた。

環境

  • Windows 7 64bit
  • Python 2.6
  • Sphinx1.1.3

rst2pdf設計方法

rst2pdfを手に入れる

easy_installに対応しているので、コマンドプロンプトから以下のコマンドを叩きます。

 easy_install rst2pdf

そうすると、すんなりいかないでしょう。

Pythonモジュールである、PILやReportLabをインストールするところで失敗します。

PILの入手@Winodows64bit version

Windows 64bitユーザはPILを以下のサイトから手に入れます。

ReportLabの入手@Winodows64bit version

ReportLabのインストールは注意が必要です。version2.6ではなくて、2.5を入れます。

以下のサイトにありました。

2.6を入れると以下の様なエラーが発生して、PDF作成に失敗しました。

これは、既知障害っぽいです。

http://code.google.com/p/rst2pdf/issues/detail?id=474

$ rst2pdf -s ja –font-path=C:\Windows\Fonts index.rst

Traceback (most recent call last):

File “/usr/bin/rst2pdf”, line 8, in

load_entry_point(‘rst2pdf==0.92’, ‘console_scripts’, ‘rst2pdf’)()

File “/usr/lib/python2.6/site-packages/rst2pdf-0.92-py2.6.egg/rst2pdf/createpdf.py”, line 1445, in main

section_header_depth=int(options.section_header_depth),

File “/usr/lib/python2.6/site-packages/rst2pdf-0.92-py2.6.egg/rst2pdf/createpdf.py”, line 183, in __init__

self.loadStyles(stylesheets)

File “/usr/lib/python2.6/site-packages/rst2pdf-0.92-py2.6.egg/rst2pdf/createpdf.py”, line 276, in loadStyles

def_dpi=self.def_dpi)

File “/usr/lib/python2.6/site-packages/rst2pdf-0.92-py2.6.egg/rst2pdf/styles.py”, line 527, in __init__

reportlab.platypus.tables.CellStyle1.fontname=self[‘base’].fontName

AttributeError: ‘module’ object has no attribute ‘CellStyle1’

日本語フォントのインストール

PDF出力をするためには、日本語フォントを追加する必要があります。

以下の2つをそれぞれダウンロードします。

それぞれ、拡張子がttfのファイルをWindowsのフォントフォルダにコピーします。

  • VL-Gothic-Regular.ttf
  • VL-PGothic-Regular.ttf
  • ipag.ttf
  • ipam.ttf
C:\Windows\Fonts

rst2pdfがインストールできたかの確認

試しにSphinxのindex.rstをpdfに変換します。

以下のコマンドを叩いて、index.pdfが生成出来れば成功です。

rst2pdf -s ja --font-path=C:\Windows\Fonts index.rst

Sphinxの設定

各RSTファイルへの実行は成功するようになったので、全てのRSTファイルをまとめて実行できるように、Sphinxの設定ファイルをいじります。

Makefileの修正

まずは、make pdfが実行できるように、Makefileの終わりに以下を追加します。

Makefileの常識で、先頭の空白は必ずタブにします。

pdf:
        $(SPHINXBUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf
        @echo
        @echo "Build finished. The PDF files are in _build/pdf."

conf.pyの修正

conf.pyにrst2pdfを実行する際のオプションを設定します。

extensions = ['rst2pdf.pdfbuilder']

pdf_documents = [
    ('index', u'MyProject', u'My Project', u'Author Name'),
]

# A comma-separated list of custom stylesheets. Example:
pdf_stylesheets = ['sphinx','kerning','a4','ja']

import os
font_dir = os.path.abspath(os.path.join(os.path.split(__file__)[0], os.pardir, 'fonts'))
pdf_font_path = [font_dir, 'C:\WINDOWS\Fonts']

pdf_language = "ja"

フォントの指定

最後にフォントを指定するための設定ファイルを作ります。

ja.jsonという名前で、以下の内容を追記します。

{
  "embeddedFonts" : [
    [
        "VL-Gothic-Regular.ttf",
        "VL-PGothic-Regular.ttf",
        "ipam.ttf",
        "ipag.ttf"
     ]
  ],
  "fontsAlias" : {
    "stdFont": "VL-PGothic-Regular",
    "stdBold": "VL-PGothic-Regular",
    "stdItalic": "VL-PGothic-Regular",
    "stdBoldItalic": "VL-PGothic-Regular",
    "stdMono": "VL-PGothic-Regular",
    "stdMonoBold": "VL-PGothic-Regular",
    "stdSanBold": "VL-PGothic-Regular",
    "stdSansBold": "VL-PGothic-Regular"
  },
  "styles" : [
    ["base" , {
      "wordWrap": "CJK"
    }],
    ["literal" , {
      "wordWrap": "None"
    }]
  ]
}

PDFを生成する

以下のコマンドで、_build/pdf配下にPDFが生成されます。

make pdf

image

10 Dec 2012, 23:37

EclipseにJMockを入れてSecurityExceptionが発生。

EclipseにJMockを入れたところ、java.lang.SecurityExceptionという例外が発生した。

java.lang.SecurityException: class “org.hamcrest.TypeSafeMatcher”‘s signer information does not match signer information of other classes in the same package at java.lang.ClassLoader.checkCerts(ClassLoader.java:943) at java.lang.ClassLoader.preDefineClass(ClassLoader.java:657) at java.lang.ClassLoader.defineClass(ClassLoader.java:785) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:791) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) at java.net.URLClassLoader.access$100(URLClassLoader.java:71) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:423) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:356) at org.jmock.internal.InvocationExpectationBuilder.createExpectationFrom(InvocationExpectationBuilder.java:86) at org.jmock.internal.InvocationToExpectationTranslator.invoke(InvocationToExpectationTranslator.java:19) at org.jmock.internal.FakeObjectMethods.invoke(FakeObjectMethods.java:38) at org.jmock.lib.JavaReflectionImposteriser$1.invoke(JavaReflectionImposteriser.java:33) at $Proxy8.someExternal(Unknown Source) at mock_sampleTest$1.(mock_sampleTest.java:45) at mock_sampleTest.testSome(mock_sampleTest.java:44) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:66) at org.jmock.integration.junit4.JMock$1.invoke(JMock.java:37) at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:105) at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:86) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:94) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:84) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:98) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61) at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:54) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:34) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:44) at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:52) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

環境

  • Eclipse 4.2
  • JUnit 4
  • JMock2

原因

EclipseのJUnitプラグインに含まれるHamcrestと、jMockのHamcrestのバージョンが異なっているみたい。

EclipseをダウンロードしてきたときのデフォルトJUnitにJMockを追加したら発生した。

解決方法

このページを参考 :

http://stackoverflow.com/questions/4755442/jmock-dependency-issue

以下の解決方法が提示されている。

  • junit.jarの代わりに、junit-dep.jarを使う
  • Eclipseのビルド・パスで、hamcrest.jarをJUnitライブラリの前ではなく、あとに並び替える。

The solution is simple – make sure that hamcrest.jar is before the JUnit library included by Eclipse in the classpath.

I believe if you look at the “Order and Export” tab in the java build path property (Configure Build Path), you will find that the JUnit jar is above the hamcrest.jar. You can move hamcrest above the JUnit jar here and the problem will go away.

  • 重複しているJUnitのHamcrestを削除。

自分は、Eclipseデフォルトのプラグインを削除して、外部から落としてきたJUnitをビルド・パスに設定し直すことで、解決した。ビルド・パスの設定は、以下のエントリを参照。

JUnitのインストールとEclipseでの使い方まとめ

image

09 Dec 2012, 07:12

SphinxをWindowsに導入していろいろした使い方・カスタマイズまとめ

Sphinx関係の記事をたくさん投稿してきたので、ここらでまとめてみます。

Sphinxとは

Sphinx(スフィンクス)とは、文章を書くためのツール(フレームワーク)

エディタとも、wikiとも分類しがたい、新たな書き方のツール。

Sphinx-Users.jp :: ドキュメンテーションツール スフィンクス Sphinx-users.jp

導入方法はこの記事を参照されたし。

SphinxをWindowsPCにインストールした。

Sphinx導入のメリット

利用すると、以下のことができるようになります。