SQLクエリジェネレータsqlsmithを使ってみる

この記事は【2017年4月7日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

sqlsmithというSQLを自動生成してくれるソフトウェアがある。現在は,PostgreSQL9.1 or laterとSQLite3がサポートされているらしい。

https://github.com/anse1/sqlsmith

Build on OSX

早速ビルドして試してみる。環境はOSX。

とREADME.mdのとおりにすると以下のようなエラーになってしまう。。どうもヘッダーファイルが見つからないらしい。

brew install postgresqlでインストールした先の情報は,以下のようになっており,/usr/local/Cellar/postgresql/9.6.2/includeにあるらしい。

postgres.hhの以下を変更することで対応した。

実行

--max-queriesを指定すると最大試行回数を指定できる。なおトランザクションは全てロールバックされる。

--dry-runするとSQLが標準出力に出力される。

コマンドラインオプション

オプション 説明
--target=constr 接続先 --target="host=/tmp port=5432 dbname=regression"
--sqlite=URI SQLiteへの接続先 --sqlite="foo.db"
--log-to=constr ログ出力先のデータベース。スキーマ定義は,log.sqlにある。 --log-to="host=/tmp port=5432 dbname=regression_log"
--seed シード --seed=$(date +%s)
--dump-all-graphs 生成された抽象構文木ASTを出力する --dump-all-graphs
--dry-run クエリを実行せず出力する --dry-run
--exclude-catalog リレーションにカタログテーブルを使わない --exclude-catalog
--max-queries この値に指定されたクエリを実行すると処理を終了する --max-queries=10

実行情報

--verboseオプションをつけると,クエリ実行の情報が標準エラー出力に表示される。

文字 意味
. 成功
t タイムアウト
s 構文エラー
c コネクションエラー
e その他のエラー

内部調査

全体の処理の流れは以下のようになっている。カスタマイズしたい時の参考になるかもしれない。

メイン処理

メイン部分の処理の流れは以下のとおり。コマンド実行すると,sqliteかpostgresqlかに応じてスキーマ及びドライバを初期化し,無限ループでひたすらクエリを生成して実行する。--max-queriesオプションが指定されていれば,指定回数のクエリが投入されてからプログラムは終了する。

ロガー

クエリ生成及び実行,エラーのタイミングで呼ばれる。処理内容は,generatedexecutederrorメソッドで実装する。loggerクラスの仮想関数をオーバーライドすれば独自のロガーを作成できる。

impedance_feedback

クエリ実行の統計を記録する

pqxx_logger

クエリ実行の統計情報をpostgresqlデータベースに記録する。

cerr_logger

標準エラー出力に情報を出力する。--verboseオプションが指定された場合に有効。

ast_logger

--dump-all-graphsオプションが指定された場合に有効。ASTをxml形式でファイルに出力する。sqlsmith-<実行回数>.xmlというファイル名で作業ディレクトリに出力される。xmlは,graphml形式に対応している。

クエリ生成

ASTノードはクラスで宣言されており,各ノードクラスのoutメソッドを呼ぶことでクエリが組み立てられる。ASTノードのベースクラスはprodクラスである。

またASTは,Visitorパターンで実装されている。ASTツリーをwalkしたい場合はVisitorを実装して,ルートノードのacceptにVisitorオブジェクトを渡して呼び出してやれば良い。

各ノードのクエリ生成をカスタマイズするには,ASTノードクラスのoutメソッドをオーバーライドすれば可能である。以下例である。

ASTノード生成の関数も少し触る必要がある。

参考リンク

  • https://korte.credativ.com/~ase/sqlsmith-talk.pdf
  • https://github.com/anse1/sqlsmith

PostgreSQL9.5ストリーミングレプリケーションメモ

この記事は【2017年2月5日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

最近PostgreSQLに触れる機会が増え学習中です。

PostgreSQLでは、バージョン9から非同期レプリケーション機能が組み込まれ、以降同期レプリケーション、カスケードレプリケーションと進化し、バージョン9.6でマルチ同期レプリケーション[1]9.5までは、プライマリサーバに対して同期スタンバイは1サーバのみであったが、9.6からは複数ノードで同期レプリケーションが可能になったが可能になったそうです。

最新バージョン9.6のマルチ同期レプリケーション機能も試してみたいところですが、まずは9.5までのストリーミングレプリケーションに関して備忘録を兼ねたメモです。

PostgreSQL9.5で可能なレプリケーション構成

同期スタンバイサーバは1つのみ

バージョン9.5では、同期スタンバイを組めるのは1サーバのみ[2]http://www.postgresql.jp/document/9.5/html/runtime-config-replication.html#guc-synchronous-standby-namesとなっています。synchronous_standby_namesという設定値に同期スタンバイサーバを指定することで、同期モードで動作するスタンバイサーバを指定することができますが、カンマ区切りで複数のノードを指定した場合は、最初に指定されたサーバが同期スタンバイとなり、残りのサーバは同期候補になります。

上記はローカルマシン上で異なるportを使って複数のpostgresを起動することを想定した場合の最小限の設定例です。

上記設定の場合、standby1が同期スタンバイになります。pg_stat_replicationビューを参照することでレプリケーションの状態を知ることができます。同期スタンバイでないサーバのsync_stateは、potential(同期候補)となります。

同期スタンバイがダウンした場合

potentialのスタンバイサーバがいる状態で同期スタンバイサーバがダウンした場合、potentialサーバが同期スタンバイに昇格します。試しに上記構成で、standby1をstop -m immediateしてみます。

こうすると、pg_stat_replicationは以下のようになります。standby2のsync_stateがsyncになっているのがわかります。

続いてダウンしたスタンバイサーバ(standby1)を、設定はそのままでクラスタに再度参加させると、追加したスタンバイの方が優先度が高いため同期スタンバイとなり、追加前に同期スタンバイであったサーバ(standby2)は、potentialになります。

カスケード接続

PostgreSQLのレプリケーションでは、スタンバイにスタンバイを繋げるカスケード接続も可能です。設定は非常にシンプルで、recovery.confのprimary_conninfoに接続先のスタンバイサーバを指定するだけです。(pg_hba.confでの接続許可やmax_wal_sendersなどの設定は必要です)

カスケード接続されるスタンバイサーバは非同期レプリケーションとなります(standby2のsynchronous_standby_namesにstandby3を指定しても同期にはならない)。

プライマリへの昇格

プライマリサーバに何らかの異常が発生し、スタンバイサーバを新しくプライマリサーバとして稼働させたい場合は、スタンバイサーバ上でpg_ctl promoteコマンドを実行します(アプリケーション側は何らかの切り替え処理等が必要)。これにより、スタンバイサーバはプライマリサーバに昇格し、新プライマリサーバで更新処理を実行することができるようになります。PostgreSQL自体に自動フェイルオーバ機能はないので,スタンバイからプライマリへの切り替えを自動で行ないたい場合は別のツールを組み合わせて使う必要があります。

また,pg_ctl promoteを実行するとタイムラインIDが新しくなります。PostgreSQLでは,「タイムライン」[3]https://www.postgresql.jp/document/9.5/html/continuous-archiving.htmlという概念でリカバリ前後におけるデータベースシステムを区別するようになっています。上記のプライマリ昇格では,pg_ctl promoteを実行する前にタイムラインIDが1であった場合,promote後にはインクリメントされて2のようタイムラインIDが変わります。

以下,pg_ctl promoteを実行したサーバのpg_xlogディレクトリです。WALのファイル名の先頭部分「00000001」がタイムラインIDを示していますが,promote前後で「00000001」から「00000002」に変わっていることが確認できます。

同期スタンバイの切り離し

プライマリサーバと同期スタンバイでレプリケーションを構成していて,同期スタンバイサーバが何らかの異常で停止した場合,プライマリサーバで更新処理ができなくなってしまいます。この場合,プライマリサーバの設定ファイルを書き換え,異常のあった同期スタンバイサーバを切り離す必要があります。

上記の同期設定をコメントアウトし,pg_ctl reloadします。これで,引き続きプライマリサーバで更新処理を継続できるようになります。

 

レプリケーションの動きを確認するのに、以下の拙作なツールが役立つかもしれません

https://github.com/moritoru81/pgenv2

参考リンク

PostgreSQL全機能バイブル

新品価格
¥3,780から
(2017/2/5 20:14時点)

脚注

脚注
1 9.5までは、プライマリサーバに対して同期スタンバイは1サーバのみであったが、9.6からは複数ノードで同期レプリケーションが可能になった
2 http://www.postgresql.jp/document/9.5/html/runtime-config-replication.html#guc-synchronous-standby-names
3 https://www.postgresql.jp/document/9.5/html/continuous-archiving.html

Xcodeで外部ソース(postgresql)をビルドする

この記事は【2017年1月6日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

PostgreSQLを少し触る機会があり,ソースも少し追っかけてみたい(が膨大で難しい。。)と思いデバッグ環境を構築することに。

ターミナルでgdbでステップ実行するのもあまり慣れていないので,Xcodeでと試した時のメモです。

環境

  • MacOS X 10.11.6
  • Xcode8.2.1
  • postgresql-9.5.5

作成手順

ソースコードジャンプ

まず適当に空のプロジェクトを作ります。

続いてソースコードなどをインデクシングしてジャンプできるようにダミーのターゲットを作成します。

続いてダミーのターゲットのCompile Sourcesでpostgresqlのsrcフォルダ下の.cファイルを追加します。Add Otherで,FinderのSearchに.cと打つとCソース一式を絞り込めます。(他に良い方法あれば教えて欲しいです。。)

すべてのソースを選択してxcodeのCompile Sourcesに表示されるまで少し時間がかかるかもしれません。

続いて,PROJECTのBuild Settingsで「User Header Search Paths」にpostgresqlのsrc/includeディレクトリを指定します。

これでソースにジャンプできるようになっているはず。

ステップ実行

続いてブレークポイントを貼ってステップ実行するための設定。

まず,TARGETSを追加してExternal Build Systemを選択します。

続いて実行ディレクトリを指定します。

次にEdit SchemeでPre-actions,Post-actionsのスクリプトを指定します。Pre-actionsではconfigureの実行,Post-actionsではmake installを実行しています。

あとはターゲットを実行します。上手くいくとprefixで指定したディレクトリに実行ファイル等一式が生成されているはずです。

続いて試しにinitdbを実行してみます。まずは,ターゲットを作ります。

続いてEdit Schemeでデバッグビルドした実行ファイルを選択します。

実行時の引数や環境変数を設定します。

以上を設定の上,ブレークポイントを適当な場所に貼ってターゲットinitdbを実行してみます。

指定した箇所でブレークできました!上手くいったようです。

プロセスにアタッチ

psqlで対話インターフェースを起動し,クエリを実行するところでブレークしてステップ実行してみます。

まずは,コンソールでpsqlを実行します。

続いてXcodeからプロセスにアタッチします。プロセスIDはpostgresで最新のプロセス番号になっていると思いますが,psでも確認しておきます。

以下のようなプロセスが見つかると思います。

IDが分かればXcodeでアタッチしてみます。

何も起こったように見えませんが,ポーズボタンを押してプログラムの実行を中断してみます。

するとデバッグコンソールに(lldb)と表示され入力待ち画面になります。

ここで,試しに関数exec_simple_queryにブレックポイントを貼ってpsqlを立ち上げたコンソールからselect 1;を実行してみます。

lldbからブレークポイントを張る場合は,以下のように入力します。

一応ブレークポイントを確認してみます。

これでselect 1;を実行すると,以下のようにブレークポイントで中断できました。

参考リンク

PostgreSQL全機能バイブル

新品価格
¥3,780から
(2017/1/6 22:20時点)

2016 大晦日は金比羅山にお参り

この記事は【2016年12月31日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

今日は2016年12月31日,大晦日。

いつもは家でのんびり過ごすところですが,今回は金比羅山にお参りし800段の階段を登り下りしていい運動をしてきました。久々の運動でいい汗をかきました。参拝される方,寒い時期ではありますが,登り下りではいい汗をかきますので,あったかくしつつも脱ぎ着しやすい格好で行かれることをお勧めします。

昨年も参拝された方のお話しでは,前年は人が少なかったらしいのですが,今年の大晦日は前年よりもやや人が多かったようです。混雑というほどではないですが,ツアー客の方もそこそこいて階段も常に人が登り下りしていてすれ違うような感じでした。

参拝の通りにあるお店は年始に向けての準備も整って,参拝客をお迎えしているような感じでした。

さて,私はというと,今年は人生にとっても結構大きな変化のあった年でした。生活環境も変わり,職場も変わり。長く慣れた環境を離れるのは勇気のいることで,色々と悩んだ結果の決断でしたが,来年はその決断が良かったと思えるような年にしたいなと。今までお世話になった方への感謝も忘れず,自分自身もっと成長していきたいし,少しでも周りの人たちに良い影響を与えられるような人間になれたらという思いで,今年を締めつつ来年を迎えたいと思います。

金比羅山の参拝ですが,当日の天気は良く,山頂からの讃岐平野の景色は綺麗でした。くもりもほとんどなく,非常に見通しの良い天候でした。この景色を見ながら,来年に向けて決意を新たに頑張りたいと思いました。

スポンサーリンク



WordPressで投稿ごとにテンプレートを変える

この記事は【2016年12月18日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

2016/12/6にWordPress4.7『Vaughan(ヴォーン)』がリリースされましたが、このリリースから投稿タイプ[1]WordPressでは、投稿種別を識別するタイプという識別子データを内部に保持しています。post、page、attachmentなどそれぞれ投稿種別毎に識別子が割り当てられています。
http://wpdocs.osdn.jp/投稿タイプ
が「投稿」についても「ページ」と同様にテンプレートを選択することができるようになりました。以前はプラグインを使ってテンプレートを切り替えていたと思いますが、4.7からはWordPress本体だけでそれが可能になったみたいですので早速試してみたいと思います。

テンプレートの仕組みのおさらい

今までは、投稿タイプが「ページ」のものについては、テンプレートのコメントヘッダに以下のように記述することでWordPressがテンプレートとして認識してくれました。

WordPressの内部ではテーマディレクトリ下のファイルをスキャンして、ファイル内にTemplate Nameという文字列が存在する場合にテンプレート名として取得するようになっています(wp-includes/class-wp-theme.php)。ここで取得されたテンプレート名は、管理画面内で『ページの編集画面>右サイドの「固定ページの属性」』で選択できるようになります。

ちなみに余談ですが、以下の場合はどうなるか?

テンプレートがサブディレクトリにある場合は?

サブディレクトリにphpファイルがあっても問題ありません。ただし、ディレクトリ階層が2階層以上の場合は認識されません。以下の例で言うと、page_template_sub1.phpまではOKですが、page_template_sub2.phpは認識されません。これは、1階層までをスキャンするようになっているためです。

Template Nameは先頭でないと駄目か?

Template Nameは、必ずしもファイル先頭でなくても大丈夫ですが、何かと悩まないためにも先頭の方が良いです。正規表現で該当文字列を探索していますが、そこまで厳密ではありませんので以下のような例もOKになります。

ただし、こんな場合は思わず悩まされてしまうかもしれないので注意が必要です。

ファイル内の最初のマッチ情報を使うので、本来使って欲しい「こっちが使われない」のテンプレートが使われません。ということで、テンプレートファイルはテンプレート名でトラブルにならないよう見通し良く作成するのがよいと思います。

新しくなったテンプレート

今までは投稿タイプが「page」に対して可能でしたが、様々な投稿タイプに対してテンプレートを指定することができるようになりました。具体的には、以下のような指定の仕方になります。Template Post Typeという新しいプロパティを指定することができ、投稿タイプをカンマ区切りで指定する形になります。

この状態で投稿の編集画面を開くと以下のようにテンプレートを選択できるようになります。

また先の例では、投稿タイプにページ(page)も指定しているので、ページの編集画面でもこのテンプレートを選択できます。

これで、今まで「ページ」でしか適用できなかったテンプレート機能を他の投稿タイプにも使えるようになったので、柔軟なコンテンツ作成が可能になりました。専用のプラグインやスラッグ・カスタムフィールド、埋め込みの文字列等でテンプレートを分岐させなくとも、WordPress本体の機能として利用できるので大変便利になりました。

少し内部の実装を見てみよう

どのように変わったか少し内部を見てみます。対象は、wp-includes/class-wp-theme.phpです。

まず、今までのテンプレートを取得するメソッドのシグネチャが変わっています。

この変更だけ見ても、投稿タイプ「page」以外を使えるように拡張されたことが想像できます。もう少し追ってみますと、get_post_templatesというメソッドが追加されており、基本的な流れは従来のget_page_templatesメソッドと同じですが、以下のような今回の追加実装の一部を確認できます。

デフォルトでは、pageという投稿タイプを使うけれど、Template Post Type指定があればそちらを優先するような処理になっています。そして、複数の投稿タイプを指定する場合は、カンマ区切り「,」となります。

と少し内部まで追って見ましたが、既存のpageのテンプレート機能をベースに拡張し、その他の投稿タイプでもテンプレート機能を使えるようになっていることがわかります。

まとめ

WordPress4.7からは、投稿タイプ「page」以外の投稿タイプでもテンプレート機能が使えるようになり、柔軟なコンテンツ作成が可能になったようです。投稿記事ごとに色々なデザインを使い分けたい方には大変便利な機能だと思いますので、是非試してみてはと思います。

参考リンク

 

 

 

エンジニアのためのWordPress開発入門 (Engineer's Library)
野島 祐慈 菱川 拓郎 杉田 知至 細谷 崇 枢木 くっくる
技術評論社
売り上げランキング: 97,855
いちばんやさしいWordPressの教本第3版 人気講師が教える本格Webサイトの作り方 (「いちばんやさしい教本」)
石川栄和 大串 肇 星野邦敏
インプレス (2017-02-24)
売り上げランキング: 805

脚注

脚注
1 WordPressでは、投稿種別を識別するタイプという識別子データを内部に保持しています。post、page、attachmentなどそれぞれ投稿種別毎に識別子が割り当てられています。
http://wpdocs.osdn.jp/投稿タイプ

2016秋 情報セキュリティスペシャリスト試験に合格しました!

この記事は【2016年12月16日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

H28秋期の情報処理試験で『情報セキュリティスペシャリスト(SC)』を受験し、なんとか1回目の受験で本当にぎりぎり「合格」できました(特に午後II)。試験対策というほどの大それた綿密な勉強計画を立てて学習した訳ではなかったのですが、参考書など受験を予定されている方のご参考になればと思い、以下私の勉強法をまとめてみました。

試験の統計

IPAの統計情報をグラフにしてみたのが以下です。セキュリティへの関心の高さかSCとしての最後の試験なのか不明ですが、統計によると受験者数は近年で最も多かったようです。

https://www.jitec.ipa.go.jp/1_07toukei/_index_toukei.html

私のスペック

・Webアプリケーションエンジニア9年目
・普段はJavaでWebアプリケーションの開発がメイン
(サーバ設定やネットワーク機器を触ったりすることは普段ほとんどありません)

基本的なWebアプリケーションの脆弱性を突いた攻撃(セッション固定化攻撃、SQLインジェクション、XSS、CSRF、OSコマンドインジェクション、ディレクトリトラバーサルなどなど)についての知識は人並み程度にあリます。

試験対策

メインで使った参考書と問題集

情報処理教科書 情報セキュリティスペシャリスト 2016年版
上原 孝之
翔泳社
売り上げランキング: 70,044

午前・午後を通して共通で使用したのが上記参考書です。ネット上での評価も高いようで、実際に読んでみると幅広く体系的にまとめられておりとても分かりやすかったです。本書をじっくり繰り返し読むことで、午前・午後の基礎力は身につくと思います。

私の場合は、本書を繰り返し読みつつ、関連知識として合わせて覚えておきたい内容を参考書に書き込んで教科書兼ノートとして使用しました。本書を実際に手に取ると分かりますが、本書は分厚く情報量も多いため、学習用に別途ノートを用意するよりも、本書に追加で情報を書き込んでいき一冊でほとんどの情報をすぐに参照できるようにした方が効果的だろうと感じました。通勤や移動の時間を利用して、とかく本書を繰り返し読みインプットしていきました。家に帰ってからは過去問中心に対策を立てていきます。

実は、本テキストですが2年前に試験を受けようと購入しつつそのまま本棚に眠っていました。。新しい方が良いとは思いますが、やや古くてもテキストとして十分活用できました。

平成28年度【秋期】情報セキュリティスペシャリスト パーフェクトラーニング過去問題集 (情報処理技術者試験)
エディフィストラーニング株式会社
技術評論社
売り上げランキング: 115,939

直近の過去問題の対策として本書を使用しました。過去4回分の過去問題が掲載されています。その他、PDFで10回分程度の過去問題をダウンロードできます。午前問題が学習しやすい紙面構成(見開き、左ページに問題、右ページに解答)となっているのが特徴的です。

本書の過去4回分を解きつつ、その先は後述の午前・午後のやり方で学習をしていきました。

午前対策

今回、私の場合は午前I・IIと両方とも受験したので、朝一からの試験でした。午前対策は、過去問題集を数年分解きまくるです。

情報セキュリティスペシャリストドットコム[1]http://www.sc-siken.comというWebサイトでとても分かりやすく情報をまとめてくださっている方がいらっしゃいますが、そのWebサイトで利用できる過去問道場をひたすら繰り返します。問題と解答のほか学習記録も取ることができ、午前はほぼココのみの対策で臨みました。問題文を見て瞬間的に解答を選べるようになるまで、毎日1回分の午前I・IIを解き、次の日は前回の1回分と新しい1回分という感じで繰り返し学習しました。過去数年分の問題を解きました。

午後対策

午後IIについては、ほとんど対策していませんでした。というのは、問題文が非常に長く難しそうに見えますが、問題文の意味をしっかり理解し読み進めれば解答できるというようなことが参考書にも書いてあったからです。実際に過去問を眺めてみると、問題文は各セクションで独立して解答できるような構成になっているようでした。その代わりに午後Iについてはなるべく数年分の過去問を解くようにしました。

2016 情報セキュリティスペシャリスト 「専門知識+午後問題」の重点対策 (午後対策シリーズ)
ITのプロ46 三好康之 大谷將 具志強 早坂一希
アイテック (2015-11-27)
売り上げランキング: 9,971

午後対策として本書をメインに学習しました。本書は、学習項目ごとに章が分けられており、章ごとに知識を整理しながら集中的に学習を進めることができ、また要点も整理されているためとても分かりやすかったです。本書には各章に演習問題が用意されており、問題は過去問がベースとなっています。演習問題の数は各章1問と少なく思えますが、章の学習項目に関連する出題が過去問でいつの年度のどの箇所で出題されているか、また目を通しておいた方がいい過去の問題をピックアップしてくれていますので、演習問題に加えてこれらの参考問題をIPAの過去問集ページからダウンロードし印刷して問題・解答・講評を眺めることで、類似の問題を効率的に学習していくことができます。この一冊と過去問をじっくり学習することで、午後の部を何とか合格レベルまで持っていけるのではと思います。

IPAセキュアプログミング講座

http://www.ipa.go.jp/security/awareness/vendor/programming/

特に午後試験のセキュアプログラミングに関する問題で有効かと思います。Webアプリケーション、C/C++でのソフトウェア開発など出題されそうなトピックをカバーしているので軽く目を通しておいた方が良いかもしれません。特にプログラミングに関する問題を選択される方は是非目を通された方が良いと思います。

安全なWebサイトの作り方

Webアプリケーションの開発で代表的な攻撃に対する説明、それに対する対策がわかりやすくまとめられています。ソースコードの修正例も掲載されており、セキュアプログラミング問題対策として活用できる資料だと思います。

http://www.ipa.go.jp/security/vuln/websecurity.html

情報セキュリティ白書 情報セキュリティ10大脅威

https://www.ipa.go.jp/security/vuln/index.html

こちらは毎年IPAから発表されているようで、近年どのような脆弱性をついた攻撃が行われているのか最新のトレンドを知ることができます。標的型攻撃やランサムウェアなど、攻撃の特徴、対策についてまとめられているので一回は目を通しておくと良いかもしれません。特に、攻撃手法ランキングで近年いつも上位にランクしている標的型攻撃ランサムウェアに関しては、是非目を通しておいた方が良いと思います。

その他参考書

ポケットスタディ 情報セキュリティスペシャリスト 第2版 (情報処理技術者試験)
村山 直紀
秀和システム
売り上げランキング: 13,653

こちらはコンパクトで持ち運びしやすく、試験対策に特化した参考書でした。特に午後I・IIの記述問題対策がかなり凝ってます。こう問われたら、こう答えるのような解答パターンが筆者の経験から詳細に分析されています。ただ、メインで使う参考書としては毛色が異なっている感じで、午後問題を過去数年分くらい解いた後で見ると効果がありそうでした。私は午後対策が不十分だったので、本書が手元にあったものの十分に活かせませんでした。。

事例から学ぶ情報セキュリティ――基礎と対策と脅威のしくみ (Software Design plus)
中村 行宏 横田 翔
技術評論社
売り上げランキング: 178,821

たまたま本屋で見かけたので購入した本です。最近の脆弱性をついた攻撃事例が載っていました。OpenSSLの脆弱性に関するHeartbleed、bashの脆弱性に関するShellShockの事例も載っていたので目を通しておくと参考になるかもしれません。

試験直前〜試験

試験直前は、引っ越しなど家事情も重なり十分に学習ができず、午前対策についてはスマフォがあれば過去問道場で学習できるのでそれを気が向いたら解きつつ、午後対策は重点対策シリーズを時間を見つけて眺める感じでした。

午後問題は、普段プログラミングがメイン業務なので、セキュアプログラミングに関する問題をなるべく選択するようにと決めていました。普段の業務で使っているJavaとは毛色が異なりますが、午後Iの問2のBOFなんかは過去にもよく出題される問題なので、なんとなく解答できそうということで選択。午後IIは、問2がBash脆弱性・Shellshockに関する問題でしたが、問題文を読めば理解できるものでWebアプリケーションも絡めた問題だったので、ある程度解答できそうかもということで選択。

結局、結果を見ると自分のメイン業務部分に近いセキュアプログラミング部分で点を稼げていた事で合格できたという感じでした。

その他参考になった本

今回の学習用に購入したものではないですが、個人的に持っていて参考になった本です。

暗号技術入門 第3版 秘密の国のアリス
結城 浩
SBクリエイティブ
売り上げランキング: 8,672
体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

上記の体系的に・・・のタイトルはWebアプリケーション開発に関わるならば、テストを受けなくとも是非読んでおいた方が良いと思います。

情報処理安全確保支援士に対応した参考書

情報処理教科書 情報処理安全確保支援士 2017年版
上原 孝之
翔泳社
売り上げランキング: 3,823
2017 情報処理安全確保支援士「専門知識+午後問題」の重点対策 (午後対策シリーズ)
ITのプロ46代表 三好 康之
アイテック (2016-09-26)
売り上げランキング: 24,333

試験名は変われど、情報処理安全確保支援士の試験は従来のセキュリティスペシャリストを踏襲していますので、従来のセキュリティスペシャリストの参考書も役に立つと思います。

情報処理安全確保支援士に関する情報

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-28-18-27-06

画像:IPA情報処理安全確保支援士のチラシより(http://www.ipa.go.jp/siensi/index.html)

IPAのサイトでもアナウンスされているとおり、”情報処理安全確保支援士試験の出題内容・範囲は情報セキュリティスペシャリスト(SC)試験と変わらない”とされています。今までやってきたSC試験対策がそのまま活かせるので、参考書や対策ノートなど同様に流用できるものと思われます。詳細は以下をご参照ください。

『情報処理安全確保支援士』と名乗るには登録が必要

「情報処理安全確保支援士」と公的に名称を利用するには、IPAに支援士としての登録が必要となります。すでに第一回目の登録申請が始まっていますので、まだの方は以下のページの登録の手引きを参考にしながら手続きを行ないましょう。色々と提出書類が必要なので、締め切り直前にならないよう余裕を持って準備をした方がよさそうです。

http://www.ipa.go.jp/siensi/index.html

初回登録期間は、平成28年10月24日(月)〜 平成29年1月31日(火)消印有効となっているようです。(※年に2回登録申請期間が設けられます)

「情報セキュリティスペシャリスト」または「テクニカルエンジニア」合格者の方が対象となっています。

また情報処理安全確保支援士になってからは定期的に講習を受ける必要がありますが、講習費がそれなりにかかってきますので、事前にそこも合わせて確認する必要があるでしょう。維持費がそれなりにかかってきます。

http://www.ipa.go.jp/siensi/koshu.html

脚注

性能orコスト?WordPress向けレンタルサーバー比較!

この記事は【2016年12月13日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

WordPress[1]https://ja.wordpress.com/create/は、ブログやコーポレートサイト、ニュースサイト、アフィリエイトサイトなど様々な用途で利用されているWebサイト作成で人気なCMS(Contents Management System)の1つです。プラグインも豊富でカスタマイズしやすく、PHP言語の知識があれば欲しい機能も自分で加えることができるのも大変魅力です。WordPressはオープンソースソフトウェアとして提供されており、誰でも簡単にサーバーにインストールして使い始めることができますが、どのサーバーがいいのか悩ましいところだと思います。

今回は、オープンソースのWordPressをレンタルサーバーに設置するとして、どのような代表的なレンタルサーバーがあって、また各レンタルサーバーでどういった特徴があるのか、WordPressを使う上での注意点も含めて、これから使ってみたいと思われている方向けに分かりやすいようざっくりまとめてみました。

WordPressを動かすには

WordPressを動かす[2]http://wpdocs.osdn.jp/サーバーの用意には、プログラミング言語であるPHPとデータベースソフトウェアMySQL[3]https://www-jp.mysql.com(またはMariaDB[4]MySQL互換のデータベースで、MySQLの創設者により始められたプロジェクト。https://mariadb.org)がサポートされている必要があります。これについては、ほとんどのレンタルサーバーではこれらのソフトウェアが動作する環境が提供されているのでまず心配はいりません。

それから、最近のレンタルサーバーでは『WordPressの簡単インストール』といった機能が提供されており、初めての方でもすぐにWordPressを使い始められるような環境が整備されていることが多いようです。従来は(すみません少し古い人間でして・・・)、ソフトウェアをダウンロードして、レンタルサーバーにFTPソフトでアップロードして、データベースを準備して、インストールウィザードを開いて・・・とステップを踏んでいたのですが、簡単インストールではそれらのステップを自動的に行なってくれます。ですので、WordPressでWebサイトを作りたいと思ってから実際に利用し始めるまでのステップが非常に簡単になっています。

WordPressを動かすのに気をつけたいこと

WordPressはデータベースを使いますので、静的なページだけで構成されるWebサイトに比べるとページの描画までにマシンリソースを必要とします。また、WordPressでは豊富なプラグインが提供されており、それらを利用すると簡単にWebサイトに機能追加することができるため、ついつい多くのプラグインをインストールしてしまいがちです。プラグインを入れたために逆にWebサイトが重くなったということもあるかもしれません。そうなってしまうと、サイトへの負荷が少し増えただけでサーバーが不安定な状態になり、サイトへ繋がりにくくなったり、場合によってはレンタルサーバーでサイトへのアクセス制限がかかったりすることもあります。プラグインは入れすぎない(そしてインストールで一度に入れすぎない)、それから怪しいプラグインは停止するのが良いでしょう。

そこで、サイトアクセスの負荷を軽減し高速化するための方法の1つとしてキャッシュ機能を利用したりします。以前に作成・利用されたデータを記憶して、次回にその記憶されたデータを取り出し利用することで余分なマシンリソースの使用を減らし、高速にレスポンスを返す仕組みです。WordPressでは、キャッシュ機能をプラグインとして利用できるものがありますが、WordPressはあくまでWebサーバーの上で動作するPHPのアプリケーションなので、サーバーの内部レベルやミドルウェアレベルでのチューニングはできません。ですが、レンタルサーバーの中にはミドルウェアレベルやサーバー構成の中でキャッシュ機能を提供していたり、その他高速化のための仕組みを提供しているものがあり、WordPressを動かすレンタルサーバーを決める際の1つの選択基準[5]ネットワーク、サーバースペックやマルチテナント、リバースプロキシ、ソフトウェア、CDNなど高速なレスポンスを実現する上で他にも色々と関係する項目がありますなるでしょう。

レンタルサーバーの特徴比較

pak85_deskshiryou20131223_tp_v

以上をふまえた上で、WordPressを使ったサイトを作成するのにどのような代表的なレンタルサーバーがあるのか見てみましょう。以下に代表的なレンタルサーバーと主な特徴をまとめてみました。共用レンタルサーバー[6]複数のユーザーとサーバーを共用で使うタイプのレンタルサーバーです。で、よく知られていて月額もそこそこで、比較的始め易いものに絞っています。また、使い勝手がわからずいきなり契約するのに躊躇される方もいると思いますので、ここではお試し期間があるものを選んでいます。

  • キャンペーンなどで初期費用が無料だったりする場合もあるので、下表は調査時点(2016年12月10日)の通常プランの場合としてあくまで参考程度で見てください。
  • 不明な項目は?にしています。詳細は公式サイトをご参照ください。
  • WordPressが使える標準的なプランで記載しています。
サーバー XSERVER[7]https://www.xserver.ne.jp/functions/
X10プラン
wpXサーバ[8]https://www.wpx.ne.jp/server/service/functions.php さくらレンタル
スタンダードプラン[9]http://www.sakura.ne.jp/plans.html
ロリポップ
スタンダード[10]https://lolipop.jp/service/about/
ヘテムル[11]https://heteml.jp/service/function/ カゴヤ [12]https://www.kagoya.jp/shared3g/plan.html#sh_header
S21
初期費用 3000円 5000円 1029円 1500円 3950円 3240円
月額
(1年契約)
1000円 1000円 500円 500円 1500円 1728円
マルチ
ドメイン
無制限 10個 20個 100個 無制限 無制限
独自SSL [13]SNI。https://ja.wikipedia.org/wiki/Server_Name_Indication
データ
ベース
50個 データベース1つ:500 MB
WordPress設置可能数:10
20個 30個 100個 合計10GB(追加可能)
(1GB単位で利用)
Disk
容量
200 GB 30 GB 100 GB 120 GB 256 GB  300GB (Web: 200GB + Mail: 100GB)
PHP 5/7 5/7 4/5系 5系 5/7 5/7
PHP動作モード FastCGI[14]プロセス起動/終了のオーバヘッドを減らし高速に処理するための仕組み。
https://www.xserver.ne.jp/manual/man_server_php_fastcgi.php
? CGI版 CGI版
モジュール版[15]https://lolipop.jp/nextgen/#dsophp_anchor
CGI版
モジュール版
CGI版
他高速化対応
など
(サイトの機能一覧より読み取れる範囲での内容です)
・OPCache(PHP)[16]http://pecl.php.net/package/ZendOpcache
・mod_pagespeed[17]https://gitdub.com/pagespeed/mod_pagespeed
・リバースプロキシによるキャッシュ
・SSDストライピング
・mod_pagespeed[18]https://gitdub.com/pagespeed/mod_pagespeed
・SSD ・SSD
SSH
アクセス
x
OS Linux Linux FreeBSD Linux Linux Linux
簡単
インストール
お試し期間 10日 14日 14日 10日 15日 14日
公式サイト XSERVER
詳細へ
wpX
詳細へ
さくらレンタル
詳細へ
ロリポップ
詳細へ
ヘテムル
詳細へ
カゴヤ
詳細へ

(2016年12月10日調べ)

XSERVER

XSERVERは、WordPressユーザーに人気なレンタルサーバの1つで、私も使っています。月額は少し高めですが、管理パネルも見やすく使い易いと思います。WordPressは『簡単インストール機能』で容易に設置することができるので、初めての方でもすぐに使い始めることができます。

x10プランでは、マルチドメイン無制限、データベースは50個、Diskは200GBと通常利用においてリソースは十分割り当てられており、複数サイトを運営される方にとっても十分なプランとなっています。このサイトもXSERVERで動いており数十の投稿がありますが、使用量は220MB程度でまだまだ余裕があります。

その他特徴として、FastCGIOPCacheという高速化のためのソフトウェアが使われています。また、PHPやMySQLも最新バージョンがサポートされています。

最近は検索エンジンのランキングにもSSL対応が影響する[19]https://webmaster-ja.googleblog.com/2014/08/https-as-ranking-signal.htmlと言われていますが、XSERVERでは独自SSLを無料(ドメイン認証型、Let’s Encrypt[20]https://www.xserver.ne.jp/functions/service_ssl.php)で利用できるので、その点も魅力の1つです。

筆者による単純なベンチマーク[21]Apache Bench。サーバーに過度な負荷をかけないレベルで実施しています。過度な負荷を与えることはDoS攻撃とみなされる可能性があるので気をつけましょう。では、XSERVER X10プランでさくらレンタルスタンダードプランより秒間数倍程度多くのリクエストをさばくことができましたので、初めからトラフィック増大が予想される場合はXSERVERを選択するのも良いでしょう。

エックスサーバー

性能を重視するなら

wpXサーバー


XSERVERと運営元が同じでWordPressの運用に特化されたレンタルサーバーです。高速化のためにリバースプロキシやSSDなどの対応がされているようです。一見するとXSERVERに比べてDisk容量やWordPress設置数など少なくXSERVERの方が良いのでは?と感じてしまいますが、シンプルなベンチを試したところパフォーマンスはXSERVERよりもかなり良い結果(秒間リクエストで数倍〜十倍)[22]Apache Bench。サーバーに過度な負荷をかけないレベルで実施しています。過度な負荷を与えることはDoS攻撃とみなされる可能性があるので気をつけましょう。となりましたので、WordPress専用で高速化されているというのも納得できます

wpXは、XSERVERと比べると管理画面のメニューが少なくかなりシンプルな構成になっています。WordPressは、管理画面のメニューから簡単にインストールでき、インストールされているWordPressに関するサマリーが一覧で確認できるようになっており、まさにWordPressに特化されているといった感じです。

また、XSERVERと同じく独自SSLも無料で利用できます(ドメイン認証型、Let’s Encrypt)。

WordPressに専念してサイトを運用されたい方は、お試し期間もあるのでwpXサーバーを検討しても良いかと思います。速いです

wpXレンタルサーバー

とにかく性能を重視するなら

さくらレンタルサーバー

レンタルサーバーといえば誰もが知っているであろうさくらレンタルサーバーです。特徴は、初期費用と月額のコストを低く抑えられるので比較的始めやすいといったところになるかと思います。管理画面のデザインは非常にシンプルです。WordPressの簡単インストール機能もあるので、WordPressの設置も簡単にできます。

さくらレンタルサーバーでは、PHPはCGIモードで動作しています(上位プランではモジュールモードを利用できます)ので、高速性という点においては、FastCGIやモジュール版に比べると軍配は後者に上がるかと思いますが、低コストでDisk容量も100GBと豊富なリソースが使えます。

また、WordPressではないですがさくらのブログというサービス[23]http://www.sakura.ne.jp/blog/を使えるので、WordPressと合わせて利用するのも魅力的かと思います。

さくらのレンタルサーバ スタンダード

標準的でコストを重視するなら

ロリポップ

ロリポップは、サンタのマスコットが印象的で誰もが知っているであろうレンタルサーバーの1つです。こちらも特徴としては、まずコストが挙げられるかと思います。スタンダードプランで初期費用や月額もさくらレンタルサーバー並みに抑えることができます。WordPressも簡単インストール機能があるので設置も簡単に行なえます。

さくらレンタルサーバーと違って魅力的な点は、スタンダートプランでモジュール版PHPが使える点です。通常CGI版よりモジュール版の方が高速に動作します。ロリポップのサイトによる説明で、同社のベンチマークによるとモジュール版はCGI版より37倍高速に動作するとあります(いずれもベンチはロリポップの環境にて実施されたと記載されています)。シンプルなベンチを試してみましたが確かに速いです(具体的な数値は載せていませんがXSERVERよりも良い値が出てました)。月額500円(年契約)のスタンダードプランで高速なモジュール版が使えるので、低コストで性能を求める方は是非検討してみてはと思います。

また、さくらレンタルサーバーと同様にロリポップでもロリポブログというブログサービスが使えますので、WordPressと合わせて利用するのも良いでしょう。

ロリポップ!

コストと性能を重視するなら

heteml(ヘテムル)

ロリポップと運営元は同じでGMOペパボさんが運営されているレンタルサーバーです。月額はやや高めに感じるかもしれませんが、36ヶ月契約だと月額コストはXSERVER X10プラン並みになりますので、じっくりとサイトを運用される方は長期契約が良いでしょう。もちろん、WordPressも簡単インストール機能があるので設置は簡単です。

ヘテムルの特徴は、やはり性能でしょうこちらはオールSSDということでハード面における高速化対応がされています。また、PHPもモジュール版が使えますので非常に高速に動作することが期待できます。シンプルなベンチを試してみたところ、かなり速いです。wpXでは、プロキシキャッシュの効かないページ(wp-adminとか)と効くページで比べると効かないページでは多少性能が下がりますが、シンプルなベンチだとヘテムルでは同様な性能でした。最近サーバーが刷新され、また拡張版の「モジュール版PHP」がリリースされたようです[24]https://heteml.jp/info/detail/id/1837。同時接続数が少々増えても高速なレスポンスが期待できそうです。かなりイイです。

そのほか、マルチドメイン無制限SSDでありながらDisk容量256GBと豊富なリソースが用意されています。

WordPressが簡単・すぐに使える『レンタルサーバーheteml(ヘテムル)

とにかく性能を重視するなら

KAGOYA

KAGOYAさんは、データベースが使えるプランはやや高めですが、転送量が多いのが特徴です。転送量は、Webやメール、FTPアップロードなどに利用されるデータ量のことです。サイズの大きい画像や動画などを扱う場合には転送量制限に引っかかってしまうかもしれませんが、KAGOYAさんは他のレンタルサーバーと比較すると転送量上限が大きく設定されています。もちろん、WordPressは簡単インストール機能があるので設置は簡単です。

高速化という点では、PHPはCGI版となっていますが、データベースのDiskがSSDが採用されているとありますので、データベースアクセスのあるリクエストでは性能向上が期待できます。

またその他、IPSという侵入防止装置が搭載されているのも特徴です(不正な侵入を検知し防御することのできる装置で、WAFよりも下のネットワークレイヤが守備範囲です。[25]最近は、WAFと言っても色々なサービスが増え広いレイヤーを指すものもあります。https://www.symantec.com/ja/jp/page.jsp?id=waf-ips-ids

共用サーバーでも無料でIPS(侵入防止)がついているのはカゴヤだけ!

転送量を重視するなら

まとめ

以上代表的なレンタルサーバーのプランと特徴をWordPressを中心に比べてみました。どの会社さんも日々進化していますので、現時点での調べが今後も必ずしも当てはまるとは限りません。継続的にウォッチしていくのが大切だと思います。

触ってみての感想で、あくまで調査時点での個人的な見解なのですが、コストと性能に絞って判断すると、、

とにかく性能が一番!なら、

か、

 

コストも性能も重視したい!なら、

 

性能を重視するなら、

 

コスト重視なら、

 

転送量重視なら、

 

真に最高の性能を求める方は、、、

KUSANAGIという超高速WordPress仮想マシンをご存知の方もいるかもしれません。こちらは、共用のレンタルサーバーではありませんのでやや高度な知識が必要となりますが 爆速 です。とにかく性能が一番、大量トラフィックが見込まれる方は是非検討してみてはいかがでしょうか。

例えば、GMOさんの『ConoHa』はKUSANAGIを利用できます。

その他、KUSANAGIが動かせるサービスは以下を参照してみてください。

https://kusanagi.tokyo

 

最後に

その他色々な比較軸があると思います。

試用期間があるので是非試してみてはいかがでしょうか?

脚注

脚注
1 https://ja.wordpress.com/create/
2 http://wpdocs.osdn.jp/サーバーの用意
3 https://www-jp.mysql.com
4 MySQL互換のデータベースで、MySQLの創設者により始められたプロジェクト。https://mariadb.org
5 ネットワーク、サーバースペックやマルチテナント、リバースプロキシ、ソフトウェア、CDNなど高速なレスポンスを実現する上で他にも色々と関係する項目があります
6 複数のユーザーとサーバーを共用で使うタイプのレンタルサーバーです。
7 https://www.xserver.ne.jp/functions/
8 https://www.wpx.ne.jp/server/service/functions.php
9 http://www.sakura.ne.jp/plans.html
10 https://lolipop.jp/service/about/
11 https://heteml.jp/service/function/
12 https://www.kagoya.jp/shared3g/plan.html#sh_header
13 SNI。https://ja.wikipedia.org/wiki/Server_Name_Indication
14 プロセス起動/終了のオーバヘッドを減らし高速に処理するための仕組み。
https://www.xserver.ne.jp/manual/man_server_php_fastcgi.php
15 https://lolipop.jp/nextgen/#dsophp_anchor
16 http://pecl.php.net/package/ZendOpcache
17, 18 https://gitdub.com/pagespeed/mod_pagespeed
19 https://webmaster-ja.googleblog.com/2014/08/https-as-ranking-signal.html
20 https://www.xserver.ne.jp/functions/service_ssl.php
21, 22 Apache Bench。サーバーに過度な負荷をかけないレベルで実施しています。過度な負荷を与えることはDoS攻撃とみなされる可能性があるので気をつけましょう。
23 http://www.sakura.ne.jp/blog/
24 https://heteml.jp/info/detail/id/1837
25 最近は、WAFと言っても色々なサービスが増え広いレイヤーを指すものもあります。https://www.symantec.com/ja/jp/page.jsp?id=waf-ips-ids

岡山城

この記事は【2016年12月11日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

岡山城(別名鳥城(うじょう)と呼ばれる)へ散歩へ。お城というと白壁のイメージですが、岡山城の外壁は黒漆塗で黒いお城です。姫路城は真っ白な外観ですが、岡山城は真っ黒で対照的です。寒いですが天気も良く、綺麗に写真が撮れました。お城の五角形も上手く写真に映っています。

写真のスポットとしては、(1)城の入場口の正面の芝生と、(2)後楽園側からの2つがあるそうです。(2)の側からは、上手くいけば鏡写しの写真も撮れるみたいです。

  • 駐車場:1時間まで300円、以降30分ごとに100円
    ただし、岡山城に入場すると150円引きになるみたいです。
  • 岡山城入場:大人300円、小・中学性120円
    城までは料金はかかりません。後楽園が隣接しています。
  • アクセス:岡山駅から徒歩20分くらいでほぼ直線です。
  • https://okayama-kanko.net/ujo/index.html

 

 

向かい側には岡山県立図書館。

岡山城から後楽園へ。

WordPress WP_Hookでのアクションとフィルタ登録

この記事は【2016年12月9日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

WordPressにはactionやfilterという仕組みがあり、ユーザーにレスポンスを返すまでの流れの中の任意のポイントで事前に登録したコールバック関数を実行することができます。これにより、WordPressの内部処理における制御の流れをコントロールすることができ、テーマやプラグインの中で頻繁に利用されています。

従来のAPIからの変更点

actionやfilterを使う場合は、通常add_actionadd_filterというAPIを使ってコールバック関数を登録しますが、内部構造を理解している人は、以下のようなハックをしているかもしれません。というのは、以前のadd_filter関数の中身が以下のように実装されていたからです。

$wp_filterは、単純なarrayとして実装されていたので上記のような配列アクセスで値を代入できました。しかし、今回はWP_Hookというクラスに置き換わっています(このクラスは、IteratorとArrayAccessを実装しているので配列のような振る舞いをします。https://github.com/WordPress/WordPress/blob/master/wp-includes/class-wp-hook.php)。そして、タグごとにWP_Hookオブジェクトが生成されています。

WP_Hookのメソッドを使う

以上をふまえ、actionやfilterの登録にはadd_actionadd_filterのAPIを使うかまたは以下のような方法でも可能なようです。

add_action、add_filter

冗長になるので素直にadd_actionやadd_filter関数を使った方がいいですね。。

参考リンク

WordPress REST API JSONPで投稿を取得する

この記事は【2016年12月7日】と作成から2年以上経っているため、記事の内容が古い可能性があります。最新の情報を合わせてご確認されることを推奨いたします。

WordPressを最新にアップグレードすると、ダッシュボードの下方にREST APIという文字が飛び込んできた。どうも4.7からWordPress REST APIが本体に追加されたようでした[1]https://ja.wordpress.org/2016/12/07/vaughan/。もともとXML-RPC APIがサポートされていましたが、扱いやすいREST APIでレスポンスをJSON形式で受け取れるようになったようなので、JavaScriptや他のプログラミング言語を使ってWordPressと連携したアプリケーションを作りやすくなったのではと思います。

試しに投稿一覧を取得してみる

REST APIのエンドポイントのベースは、以下のようになります。

例えば投稿に関するリソースを取得するには以下のようになります。

試しに投稿一覧を取得してみます。上記URLにGETリクエストを送信してみます。以下では、CocoaRestClient[2]https://developer.wordpress.org/rest-api/reference/というアプリを使っています。

上手く取得できているようでした。

APIの詳細は以下のドキュメントで参照可能です。

https://developer.wordpress.org/rest-api/reference/

JSONPで表示してみる

REST APIには、Global Parameters[3]http://v2.wp-api.org/reference/global.htmlというAPIのリクエスト/レスポンスをカスタマイズするパラメータが使えます。_jsonp、_method、_envelope、_embedなどがあります。このパラメータを使うとJSONP形式でレスポンスを受けることが可能です。これによりクロスドメインでのコンテンツの取得が可能です。

以下では、JavaScriptで最新5件の投稿を取得してページに表示しています。

これを実行すると以下のようになります。

スポンサーリンク


プログラミングや日常の記録など