Category Archives: ネット・PC

POST2PDF Converter バージョン0.3 リリース

WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.3」をリリースした。 最新の「POST2PDF Converter」をダウンロード 「POST2PDF Converter」は、一度、変換されたPDFを保存せず、ダウンロードリンクがクリックされる度に、新たにPDFへの変換を行う方式を採用しており、この方法は、記事を変更した場合にも、リアルタイムでPDFにも反映されるというメリットがあるが、サーバーに負荷を掛けると言うデメリットもある。 このあたりは次のバージョンでの改善を考えているが、バージョン0.3では、この問題を解決する1つの手段として設定画面上で管理者が手動で記事をPDFに変換し、ダウンロード出来るようにした。 設定画面で作成したPDFファイルに、記事に任意の場所でリンクを貼れば、サーバーに負荷を掛ける事なく、記事をPDF形式でダウンロード出来るようになる。 また、「POST2PDF Converter」がPDF作成のために利用してる「TCPDF」は、PC用のTrueTypeフォントを直接フォントとして使用することが出来ず、予め変換を行う必要があるが、バージョン0.3では、この変換作業を設定画面上で行うこと出来るようになった。 変換できるフォントは、TrueTypeフォント、OpenTypeフォント、Type1フォントなどである。 なお、変換テストは、TrueTypeフォントでしか行なっていない。 TCPDF用フォントへの変換は、プログラムの改変する行為であり、またPDFで使用すると言うことは、広く一般に配布されるドキュメントでフォントを埋め込む事を意味する。 そのため、変換が許されるフォントは、ライセンス上、改変が許され、PDFの埋め込みフォントとして利用でき、作成したPDFの配布が許されているフォントに限られる。 現実的は、オープンソースのフォントや自作のフォントに限られるだろう。 変換後のフォントを再配布する場合も、ラインセンス上、問題がないか確認すること。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | Leave a comment

Google Translate API v1の終了とWordPressの翻訳プラグイン

Googleが無料で提供している翻訳サービス「Google 翻訳」大変便利で、広く使われているが、その無料APIである「Google Translate API v1」が残念なことに昨年12月にサービスを終了し、有料の「Google Translate API v2」のみの提供となってしまった。 WordPressの翻訳系プラグインでも広く使われていたAPIであるので、WordPressへの影響は大きく、これを機に開発を終了してしまったプラグインや、公開されてはいるものの動作しないプラグインが出てきている状況である。 実際、私が使っていたWordPressプラグイン「Gtranslate」も「Google Translate API v1」を使っていたため、機能しなくなった。 また、WordPressプラグインではないが、このブログの下に表示される多機能ツールバー「Wibiya」の翻訳サービス「iTranslation」も同様の理由で機能しなくなってしまった。 そのため、代わりのプラグイン、サービスを探す必要が生じた。 APIが公開されている翻訳サービスは数多くあるようであるが、日本語に対応し、対応言語(翻訳可能な言語)が多く、使いやすく、サービスが継続されそうなものとなると殆ど皆無で、「Bing Translator」の「Microsoft Translator API」が良さそうである。 ただし、「Google Translate API v1」と比べると対応言語が37と少ないなど、機能面で見劣りすることは否めないが・・・。 そこで「Microsoft Translator API」をサポートするWordPressプラグインを探してみたが、多くのプラグインが「Google Translate API」を採用しており、予想外に見つからない。 それだけ「Google Translate API」が優れているということだろうが、私が探した範囲では、「Transposh Translation Filter」が、唯一「Microsoft Translator API」を採用し、まともに使えるプラグインだった。 厳密に言えば、「Transposh Translation Filter」は、「Google Translate API」と「Microsoft Translator API」の両方をサポートしており、「Microsoft Translator API」を使うなら、37の言語、日本語を除いて実質36の言語への翻訳が可能である。 設定画面上で、言語の有効化/無効化を行うが、言語と対応するAPIも分かりやすい。 ただし、言語名の表記が、その言語でされているため、何の言語なのか分からないという難点がある。 言語の選択を行うウィジェットを追加できる他、ブラウザの言語に応じて、予め翻訳済みの記事を自動表示するように設定することも出来る。 実際に「WordPressのショートコードAPI」を英語に翻訳してみると・・・ 本文だけでなく、タイトル、メニューのラベル、カレンダーと言ったかなり細かなところまで翻訳されていることが分かる。 このプラグインの最大の特徴は、「Google Translate API」と「Microsoft Translator API」を利用した自動翻訳機能を備えながらも、サイトの訪問者などに翻訳して貰う機能を備えている点である。 サイトの訪問者は、自動翻訳による訳文に気に入らない部分があれば、そこを簡単に修正することが出来る。 これを利用すれば、人の手による翻訳で翻訳の精度を上げることが出来るが、もっとも、これは訪問者の協力が得られればの話である。 設定にもよるが、自動翻訳、または人の手による翻訳によって作られた訳文はデータベースに保存されるようで、翻訳の度に必ずしもAPIにアクセスするわけではないようである。 設定項目は多く、細かな設定が出来るプラグインであるが、基本的には、最初の「Supported languages」の設定さえ行えば、問題なく使えるはずだ。 ただし、「wp-config.php」で、$_SERVER['HTTP_ACCEPT_LANGUAGE']を使って定数「WPLANG」の設定を振り分けてローケルを切り替えている場合は、「Enable override for default locale」を無効にしないと、管理画面の表示が思わぬ結果になる。 ちなみに、今のところ、WordPressの翻訳系プラグインは選択肢不足の状況にあるので、もし、人気のプラグインを作りたいなら、翻訳系のプラグインは狙い目かもしれない。

Posted in WordPress, ネット・PC | Tagged , , | 2 Comments

Plugin Directoryの自分のプラグインページにバナーを設置する

WordPressのプラグイン公開サイトである「WORDPRESS.ORG Plugin Directory」を見ると昨年末より、バナーが表示されているページが増えて来たことに気づくだろう。 これは、昨年末より「Plugin Directory」がバナーの表示をサポートしたからであり、これに関する記事が「WordPress Development Updates」にMattの手で書かれている。 バナーを表示させるだけでも随分と見栄えが良くなり、プラグインの機能を端的に伝える事も出来る。 プラグインを開発し、「Plugin Directory」で公開しているなら、ぜひバナーを設置したい。 以下、バナーを表示させる方法をまとめる。 まず、横772ピクセル、縦250ピクセルの画像を用意する。画像はjpegかpng形式でなければならない。ファイル名は、「banner-772×250.jpg」、または「banner-772×250.png」とすること。 続いて、「assets」というディレクトリを、SVNのルートの作成し、その中に作成した画像を入れてアップロードする。(ローカルで作成して、単にコミットすれば良い。)「assets」の作成場所は「trunk」の中ではない事に注意。 以上で、暫くするとバナーが表示されるはずである。 これらの情報は、「Developer FAQ」にも書かれており、ここを読むと更に面白いことが出来ることに気づく。 ?banner_url=画像のURL というパラメーターをプラグインページのURLに付加することで、指定した画像をバナーに使用して、プラグインページを表示させることが出来る。 以下のURLは、同じプラグインページへのURLであるが、パラメーターによるバナー画像の指定で、バナーが変化することが分かる。 http://wordpress.org/extend/plugins/wp-syntaxhighlighter/ http://wordpress.org/extend/plugins/wp-syntaxhighlighter/?banner_url=http://plugins.svn.wordpress.org/wp-wapuu-widget/assets/banner-772×250.png ※URL中の「×」が全角で表示されているが、正しくは半角。

Posted in WordPress, ネット・PC | Tagged , , , | Leave a comment

CodeMirror for CodeEditor バージョン0.5 リリース

「CodeMirror for CodeEditor バージョン0.5」をリリースした。 最新の「CodeMirror for CodeEditor」をダウンロード バージョン0.5では内包する「CodeMirror」ライブラリをアップデートしている。 新機能としては、タブをマーカーで表示して、タブによるインデントを見えるようにする機能が追加された。 また、検索、置換機能が新しくなり、キー操作によって必要な時だけ表示するタイプに変わった。 そのためツールバーは、以前のバージョンに比べてすっきりしている。 例えば、検索機能は、CtrlとFキーの同時押しで起動する。(または、CmdとFキー) その他の操作は下記の通り。 下候補:CtrlとGキーを同時に押す。(または、CmdとGキー) 上候補:Shift、CtrlとGキーを同時に押す。(または、Shift、CmdとGキー) 置換:Shift、CtrlとFキーを同時に押す。(または、Cmd、OptionとFキー) 全置換:Shift、CtrlとRキーを同時に押す。(または、Shift、Cmd、OptionとFキー) ただし、フルスクリーンモードでは、検索、置換機能が使えなくなった。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | Leave a comment

初心者による初心者のためのPHP講座 第7回 配列

「配列」は変数の一種であるが、通常の変数が、1つの変数に1つの値しか格納できないのに対して、「配列」とは、複数の値を格納する変数のことである。 配列は、格納する値同士の紐付けが容易であるため、重宝する場面が多く、出番も多いので必ずマスターしておく必要がある。 私の場合、それほど多用するわけではないが、設定パラメーターを格納する際には、よく配列を用いている。 配列の定義 例えば、年齢を変数に格納するとしよう。 複数の年齢を格納する場合は、今まで学んだ知識の範囲でこれを記述するとなると、 <?php $age1 = 13; $age2 = 25; $age3 = 46; ?> のように複数の変数を定義する必要がある。 値の数が少ない場合は、上記のような定義も悪くはないが、値の数が1,000個、10,000個となると、定義すべき変数の数が膨大になり、非常に効率が悪い。 しかし、配列を用いれば、複数の値を1つの変数に格納することが出来る。 実際に配列を使って定義すると以下のようになる。 <?php $age[0] = 13; $age[1] = 25; $age[2] = 46; ?> 上記の例では、1つの変数と言うことも出来る配列$ageに全ての構成要素が格納されている。 配列と言っても通常の変数と書式に違いはないが、配列に格納される各要素(値)を定義する場合は、角括弧構文を用いて[キー]を指定する必要がある。 <?php $変数名[キー1] = 値1; $変数名[キー2] = 値2; $変数名[キー3] = 値3; ?> 「キー」と「値」は、必ずペアになっており、「キー」に紐付けられた「値」を配列の要素と呼ぶ。 「要素」は「値」が住んでいる部屋で、そのルームナンバーが「キー」と理解すると良いだろう。 配列から値を取り出したい場合も、ルームナンバーである「キー」を使って取り出すことが出来る。 値としては、通常の変数同様に、整数値、浮動小数点、文字列、論理値、NULLが格納できる他、配列を格納することも出来る。 配列を格納する配列を、多次元配列と呼ぶが、これについては後ほど説明する。 以下の例では、配列$ageを定義し、$ageからキー「1」の値を取り出してecho()で表示させている。 <?php $age[0] = 13; $age[1] = 25; $age[2] = 46; echo $age[1]; ?> 以上のように、特定の値を取り出す場合にも角括弧構文を用いて、キーで指定する。 キーに0から始まる整数値を使う場合は、下記のように角括弧構文の中のキーを省略して定義することも出来る。 <?php $age[] = 13; $age[] = 25; $age[] = 46; echo $age[1]; ?> 上記の例では、キーは省略されているもの、各要素には先頭から順に0、1、2・・・と言った整数値がキーとして与えられており、「25」と表示される。 また、配列は角括弧構文以外でも定義でき、配列の定義のために用意されているarray()関数を使って配列を定義することも出来る。 <?php $age = array(13, 25, 46); ?> キーは、省略されているが、この場合も、各要素には0から始まる整数値のキーが自動的に割り当てられる。 明示的にキーを書くならば、下記のようになる。 <?php $age = array(0 => 13, 1 => 25, 2 => 46); ?> array()関数を用いる場合は、演算子「=>」を使って、キーと値の関係を記述し、要素を定義できる。 また、explode()関数を使えば、特定の文字で区切られた文字列を配列に格納することが出来る。 <?php $str_age = "13,25,46"; $age … 続きを読む →

Posted in PHP, PHP講座, ネット・PC | Tagged | Leave a comment

EZ zenback バージョン1.5 リリース

「EZ zenback バージョン1.5」をリリースした。 最新の「EZ zenback」をダウンロードする バージョン1.5では、zenbackを表示させる手段として、ショートコードをサポートした。 書式:[zenback] 上記のショートコードは、投稿や固定ページの本文で使うことが出来る。 ショートコードを使えば、投稿や固定ページの任意の場所で、zenbackを表示させる事ができ、特定の投稿や固定ページのみでzenbackを表示させたい場合も、ショートコードを使うことで対応できる。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , | Leave a comment

WordPressのショートコードAPI

WordPressは、ショートコードを登録、処理するためのAPIを備えており、このショートコードAPIを使えば、簡単にショートコードを登録することが出来る。 今回は、このショートコードAPIの説明を行う。 ショートコードの登録には、add_shortcode()関数を使用する。 add_shortcode('ショートコードタグ', 'ハンドラー'); ショートコードは、 [ショートコードタグ] と言った[]で文字列を囲んだ書式であるが、[]を除いたものを「ショートコードタグ」として記述し、「ハンドラー」には、ショートコードと置き換える文字列を戻り値として返す関数の名称を記述する。 例えば、「こんにちは」と表示されるショートコード [hi]を登録する場合は、 add_shortcode('hi', 'my_shortcode_handler'); function my_shortcode_handler() { return 'こんにちは'; } と記述すれば良い。 非常に簡単にショートコードを登録できるようになっているが、内部的には、 do_shortcode()というフィルター関数が、add_shortcode()関数で登録された全てのショートコードハンドラーを使って文字列に変換する処理を行なっており、デフォルトでは、do_shortcode()関数は、the_contentフィルターフックにプライオリティ11で適用されている。 このフィルターによって、投稿や固定ページが表示される際に、ショートコードが決められた文字列に変換され、表示に反映される。 デフォルトでは、ショートコードが使えるのは投稿と固定ページの中だけであるが、他の場所でも使用したいなら、このdo_shortcode()関数を使えば良い。 例えば、コメントでショートコードを使いたいなら、 add_filter('comment_text', 'do_shortcode', 11); とすれば良い。(プライオリティは11ある必要はない。) 以上がショートコードの登録の基本であるが、ショートコードAPIは、単純なショートコードだけなく、属性値を持つショートコードや囲み型のショートコードもサポートしている。 [ショートコードタグ attr1="値1" attr2="値2" ・・・]任意の文字列[/ショートコードタグ] 次の例は、属性値を持つ、囲み型のショートコードであり、[div id="id1" class="class1"]任意の文字列[/div]と言う書式のショートコードを<div id=”id1″ class=”class1″>任意の文字列<div>に変換してくれる。 add_shortcode('div', 'my_shortcode_handler'); function my_shortcode_handler($atts, $content = null) { extract(shortcode_atts(array( 'id' => 'block', 'class' => 'block', ), $atts)); return '<div id="'.esc_attr($id).'" class="'.esc_attr($class).'">'.do_shortcode($content).'</div>'; } ハンドラーは、引数としてショートコードで囲まれた部分の文字列を受け取ることが出来る。 加えて、属性名をキー、属性値を値とする配列の形で、ショートコードの記述された全ての属性と属性値を引数として受け取ることが出来る。 しかし、ユーザーが入力する属性、属性値に関しては、何が含まれているか分からない。 そこで、無効な属性が含まれている場合は、これを取り除き、欠けている場合は、デフォルト値を与えて補う必要があるが、これを簡単に行うことができるのが、shortcode_atts()関数である。 上の例では、id、classのデフォルト属性値は「block」となっており、ショートコードで、idまたはclassが省略された場合は、この「block」が値として自動的に割り当てられる。 そして最終的には、extract()を使って属性名を名前とする変数に格納している。 これらの値を用いて、置き換えの文字列を定義し、これを戻り値として返しているが、受け取った属性値は、セキュリティ上も信頼できないので、そのまま出力することは避けたい。 そこで、戻り値として返す前にesc_attr()関数でエスケープしている。 また、$contentに対してdo_shortcode()を適用して、ショートコードに囲まれたショートコード、つまりネストされたショートコードも、ショートコードとして正しく処理されるようにしている。 前にも書いたがdo_shortcode()が、ショートコードを処理するフィルターそのものであるので、do_shortcode()を文字列に適用すれば、文字列内のショートコードが正しく処理される。上記の場合は、$contentに対して、これを行なっている。

Posted in PHP, WordPress, ネット・PC | Tagged , , | Leave a comment

POST2PDF Converter バージョン0.2 リリース

WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter バージョン0.2」をリリースした。 最新の「POST2PDF Converter」をダウンロード バージョン0.2では、ショートコードをサポートし、ショートコードを使って、投稿や固定ページの任意の場所にPDFのダウンロードリンクを追加できるようにしている。 書式:[pdf]PDF形式でダウンロード[/pdf] ショートコードを使えば、特定のページのみPDF形式でのダウンロードを許可すると言ったことが出来る。 また、様々な属性をサポートしており、ページごとに言語やフォントやロゴを変えたり、投稿IDを指定して、別のページをPDFとしてダウンロードさせることも可能だ。 書式:[pdf id="1643" lang="jpn" file="id" font="cid0jp" monospaced="cid0jp" fontsize="11" subsetting="1" ratio="1.35" header="1" logo="1" logo_file="my_logo.png" logo_width="45" wrap_title="1" footer="1" filters="1" shortcode="1" ffamily="0"]Click here to get a PDF[/pdf] また、このバージョンからは、本文末に署名を表示できるようになった。 任意のテキストを署名として登録できるので、署名以外に、ラインセンス、メッセージなどの表示にも利用できる。 加えて、引用やソースコードが本文に含まれる場合、それを整形して表示する機能も追加され、PDFに変換された際に見やすくなっている。 WP SyntaxHighlighter、SyntaxHighlighter Evolved、Syntax Highlighter for WordPress、Syntax Highlighter CompressなどのSyntaxHighlighterベースのプラグイン用に書かれたソースコード、WP-Syntax、CodeColorer、WP-CodeBox、WP-SynHighlightなどのGeSHiベースのプラグイン用に書かれたソースコードがその対象となる。 設定画面の項目も増え、ヘッダー、フッターの表示/非表示、フィルターの有効化/無効化、長いタイトルの折り返しと言った機能を設定できるようになっている。 また、同梱しているTCPDFをバージョン5.9.142にアップデートしている。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | Leave a comment

WordPressの投稿をPDF形式でダウンロード出来るプラグイン「POST2PDF Converter」

WordPressの投稿や固定ページをPDF形式でダウンロード出来るようにするプラグイン「POST2PDF Converter」をリリースした。 最新の「POST2PDF Converter」をダウンロード 「POST2PDF Converter」は、PHPライブラリ「TCPDF」を用いて、HTML形式のWordPressのコンテンツをPDFに変換し、ダウンロード出来るようにする。 このページの先頭にも、ダウンロードリンクがあるので、実際の動きを見たいなら試してみると良いだろう。 主な特徴は下記の通り。 ダウンロードリンクの追加が簡単、かつ柔軟。 PDFのダンロードに制限をかけることが可能。 様々な言語に対応し、言語に応じて最適化される(つもり)。 PDFのフォントサイズの変更やフォントの指定が可能。 ショートコードを処理するか削除するか選べる。 Font subsettingサポートし、PDFのファイルサイズを抑えられる。 なお、「Font subsetting」は、フォントのうち、実際使われている文字だけをPDFに組み込むことで、フォントの組み込みによるPDFのファイルサイズの増大を抑えることが出来る機能であるが、PHPの処理としては負荷がかかる複雑な処理になる。 そのため、場合によっては、「Font subsetting」を無効化し、フォント全体を組み込んだ方が良いかもしれない。 「POST2PDF Converter」で使用している「TCPDF」は、現状、日本語で書かれたHTMLを上手くPDF化出来ず、一部の文字が表示されないなどの問題が発生する。 これは、搭載している日本語フォントが主な原因であるが、この問題を解決するために、別途、TCPDF用日本語フォント「RCJフォント for TCPDF」と「梅フォント for TCPDF」を公開している。 ファイルサイズの関係で、「RCJフォント for TCPDF」と「梅フォント for TCPDF」は「POST2PDF Converter」に同梱していないので、別途インストールして欲しい。 「Font subsetting」を無効化し、フォント全体を組み込むならファイルサイズが比較的小さい「梅フォント for TCPDF」が向いている。

Posted in WordPress, ネット・PC, 自作アプリ | Tagged , , , | 1 Comment

TCPDF用日本語フォント「RCJフォント」

「TCPDF」用の日本語フォント「RCJフォント for TCPDF」をリリースした。 バージョン003.03 2011/12/22 最新の「RCJフォント for TCPDF」をダウンロード 「TCPDF」は、テキストやHTMLをPDFファイルに変換するためのPHPライブラリであるが、標準のフォントでは、正しく日本語を表示できないなど、日本語環境(おそらくマルチバイト過環境全般)での利用に関して問題も多い。 そこで、オープンソースの日本語フォントである「IPAフォント」ベースに、TCPDF用に変換した「RCJフォント for TCPDF」を作成した。 パッケージには、「IPAゴシック」、「IPA Pゴシック」、「IPA明朝」、「IPA P明朝」と同等のフォントが収められている。 このフォントは、「/tcpdf/fonts/」ディレクトリにインストールして使うことができるが、PDFを受け取った相手が、同じフォント持っていなくとも編集出来るようにするには「FontSubsetting」を setFontSubsetting(false) に設定して使用する必要があるため、PDFファイルにフォント全体が組み込まれ、生成するPDFファイルのサイズが大きくなるという問題もある。 「RCJフォント」は、超マイナーなフォントであり、パッケージにソースとして収録はしているが、PDFを受け取った相手のPCに「RCJフォント」がインストールされている確率は皆無であり、そのためPDFにフォントを組み込む必要が生じる。 また、フォント自体のファイルサイズが小さくないため、PHPに割り当てられたメモリの上限が小さい場合は、PDFを正常に生成出来ないかもしれない。 その場合は「php.ini」を編集するなどして、割り当てるメモリの上限を増やす必要がある。 memory_limit = 64M

Posted in ネット・PC | Tagged , , | Leave a comment