SlipOn(スリップオン) ロディア#16(No.16)用レザーカバー正面

PCが大好きでキーボードも大好きだけど、手書きのメモも好きである。

昔、論文試験がある試験対策でものすごく文字を書いていた時は手首の痛みが酷かった。それも万年筆にしたらかなり痛みが解消したという体験から、なるべく普段のメモやノートも万年筆にしている。(ちなみにキーボードは、デスクトップではRealforce、ノートはThinkPadにしたら改善した)

とはいえ、結構なめんどくさがりなので、万年筆特有のめんどくさいのはイヤ。

そんな自分にとっての必須アイテムが、PILOTのキャップレスデシモという万年筆。これは別エントリー済み。
→続きを読む

セーラー・プロギア・インペリアルブラック・イメージ1

止まらない物欲

この前ペリカンのスーベレーンM400を購入したばかりだというのに、常用しているロディアNo.16のメモカバーを我慢しきれずに購入してしまった(→別エントリー)ことを皮切りに、そのメモカバーのペンホルダーにセットする万年筆がほしくなってしまった。

第一候補は、ペリカンのスーベレーンM300。小型でインク吸入式のスーベレーン。M400が良いだけに間違いない買い物っぽいが、いかんせんM400を購入したばかりだし、ちょっと高いし、緑縞しか無いしということで二の足を踏んでいたら、M300ベースのカスタマイズモデルM320シリーズを見つけるも、気に入ったオレンジはどこにも在庫が無く、しかも高かった。

そんなこんなでいろいろと万年筆をあれやこれやと探していた。
最終的に、ラミーの2000に落ち着くかに見えたが、たまたま、セーラー万年筆の「プロフェッショナルギア インペリアルブラック」なるものを見つけてしまい、それがまた好みにドンピシャだった。

軸が太く、メモカバーには間違いなく収まらない。でももう関係ない欲しいっ!

…ということで購入してしまいました。
→続きを読む

以前、FuelPHPでphpwordを使ってワードファイル(docx)を出力できるようにした時のメモ | Lunarian's Blogというエントリーをあげたのですが、その後、私が利用したphpwordをforkして進化したと思われるphpoffice/phpwordを発見しました(Github: PHPOffice/PHPWord · GitHub)。日本語に対応し、Pakagistにも登録(該当ページ:phpoffice/phpword – Packagist)があり、使い方は同じっぽいのでこちらを利用する方法に変更します。以下、使い方を簡単にメモ。

fuelPHPへの導入方法− composerをつかう

fuelPHPは、バージョン1.6からパッケージ管理にcomposerが利用されています。(composer公式サイト:Composer
phpoffice/phpword – Packagistがありますので、composerで導入することができます。

composer.json(composer.pharと同一フォルダにある)のrequire部分に、下記記載を追記。

あとは、ターミナル(黒い画面)で

で導入されます。phpwordは、ルートのvendorファイル下に配置され、class PHPWordにパスが通ります(という言い方が正しいかよくわからないけど、オートロードされるということ)。従って、普通に「new $phpword = new \PhpOffice\PhpWord\PhpWord();」でインスタンス生成で、利用できます。

使い方

※createWrite部分で誤りがあったため修正(2014/6/12)

↓こんな感じになります。
生成したワードファイル

参考リンク

FuelPHPとPHPWordのイメージ
【追記:2014/4/21】
以下で利用しているphpwordよりも新しいphpwordパッケージが見つかりました。そちらの方を利用する方が幸せになれると思いますので、コチラのエントリ:FuelPHPでphpoffice/phpwordを利用するメモ | Lunarian's Blogをご参照下さい。

職場で、簡単な業務用のアプリをFuelPHPで作っています。業務用アプリということで、文章を出力する機能が必要となり、PDF出力を利用していました。これについては、FuelPHP用にfuelpdfというパッケージ(fuel-packages/fuel-pdf · GitHub)があり、実装は簡単です。PDF出力ライブラリとしてTCPDFが利用されており、以前利用していたので簡単に実装できました。

ただ、どうしても取引先がMicrosoft Wordのファイルが良いという要望があり、こっちもそのためにWordを起動して手動でドキュメントを作る手間が馬鹿に出来なかったので、phpwordというPHPでMicrosoft Wordファイルを出力するPHPのライブラリをfuelPHPで利用できるようにしたまで奮闘した成果メモを記しておきます。

FuelPHPのパッケージへの理解、autoloadへの理解、フォルダ構成への理解などが不十分で結構とまどいましたが、とても簡単にできました。

phpwordの概要

生成できるのはWord2007形式

phpwordは、オープンソースのライブラリで、PHPでMicrosoft wordのファイルを出力するためのものです。
wordのファイルは、2003までの形式(*.doc)と2007移行の形式(*.docx)で中身が異なり、phpwordで出力できるのは、2007移行の形式(*.docx)になります。
なぜか2007移行の形式(*.docx)を毛嫌いしている人がたまに見受けられるのですが、Microsoft Office 2003は、XPのサポート終了と同時にサポートを終了してたりしますし、phpから2003までのword形式(バイナリファイル)を出力するのはかなり大変なので、そこはあきらめてほしいです。

生成方法は2通り

phpwordは、2つの方法でwordファイルを出力できます。
1つ目は、ワードファイルをテンプレートとして別途用意し、それを読み込んで編集(値を入れ替える)形で出力する方法。
2つ目は、一からワードファイルを生成する方法です。専用のオブジェクトを生成し、そのオブジェクトに一つ一つパーツを入れていき、最後に一つのワードファイルに生成します。

両方法のメリット・デメリット

1つ目は、ワードファイルをワードで編集して作っておくことが出来るなどのメリットがありますが、値を入れ替えるための変数の入力時などに若干面倒があります。また、プログラムの変更時にPHPとワードファイルと2つのソースを編集する必要があります。

2つ目の方法は、TCPDFなどでのやり方と同じなので慣れている人には楽です。またPHPで柔軟にドキュメント内容を変更できます。

私は2つ目の方法で主に利用するのですが、パスワード付きのドキュメントを取引先に指定されているので、その場合には、パスワードが付いたワードファイルのテンプレートを読み込むという形で1つめの方法で生成しています。(パスワードは固定なのでこの点ではそんなに手間はありません。セキュリティをそこまで厳密にする必要が無くて助かりました。phpwordには一からパスワード付きのファイルを生成する機能は無いようなので。)

phpwordの問題点:日本語への対応

問題として日本語への対応がされていないことが上げられます。
与えられた値に対して、PHP関数の「utf8_encode()」を適用してしまい、似非utf8でエンコードされてしまい文字化けする問題があります。これを手動で外す必要があります。
utf8_encode()という関数の名称から問題なさそうに思えるのですが、どうもちゃんとしたutf8にエンコードしてくれるわけではないとのことです。

fuelPHPへの導入方法その1− composerをつかう

(こちらの方法は、日本語対応で問題があるため、私は使っていません。)

fuelPHPは、バージョン1.6からパッケージ管理にcomposerが利用されています。(composer公式サイト:Composer
Packagistに、phpwordがありますので、composerで導入することができます。

composer.json(composer.pharと同一フォルダにある)のrequire部分に、下記記載を追記。

イメージ:
composer.jsonに追記する

あとは、ターミナル(黒い画面)で

ターミナル上でcomposer.phar updateする

で導入されます。phpwordは、ルートのvendorファイル下に配置され、class PHPWordにパスが通ります(という言い方が正しいかよくわからないけど、オートロードされるということ)。従って、普通に「new ¥PHPWord」でインスタンス生成で、利用できます。

この方法がオフィシャルな感じで一番正しい導入方法と思いますが、上述の日本語対応の問題を手動で修正しても「composer.phar update」時に新バージョンで上書きされてしまい、そのたびに修正しなければいけないのでは無いかと思います。(masterブランチしかないので)

そこで以下の方法でパッケージ化(というほどでもないけど)しました。

ちなみに、phpwordをforkしてutf8_encode()部分を消して、packagistに登録して、それでcomposerで導入という方法もありますが、めんどいのと、いろいろとアレなので私はやりません。

FuelPHPへの導入方法その2− packageにしてみる

fuelwordというそれっぽい名前でパッケージ化してみました。
なお、導入方法1と両方やった場合でどういつ名称だとcomposer導入の方が優先されるかと思います。

パッケージの構成と位置

fuel
├app
├core
├vendor
└packages
  └fuelword
    ├classes
     └fuelword.php
    ├config
    ├bootstrap.php
    └vendor
      └phpword(ダウンロードしてここに入れる)
        ├Examples
        ├PHPWord
        ├template
        └PHPWord.php

このような感じになります。fuelフォルダ下のpackagesフォルダ下に「fuelword」というフォルダを作成し、その下にclassesフォルダ、configフォルダ、vendorフォルダを作成。vendorフォルダ下に、PHPWordのページの「download」からphpword本体をダウンロード・解凍し、配置。

fuelwordフォルダの直下の「bootstrap.php」と、fuelword/classesフォルダの下に「fuelword.php」を自作します。私は以下の内容で自作しました。(下記は、フォルダ名、ファイル名が上記の通りであることを前提の内容)

ライセンスがどうなってるのかなど確認してないので問題があったら消します。

内容としては、たいしたことはしてません。他にスマートな方法がある気がしますが、時間が無いのでこれで済ませました。

実際に使ってみる

テンプレートから作成パターン

※テンプレートファイル(*.docx)は自分で用意

下記の参考リンクにも役立つ情報有りなので見てね。

1から作成パターン

↓こんな感じになります。
生成したワードファイル

参考リンク

ペリカン スーベレーン M400とロディアNo.16

私生活で色々あって人生の機微を味あわされています。金銭的には多少余裕があるのと買い物でストレス解消している面もあって、久々に万年筆が、それもペリカンのスーベレーンが欲しくなってしまいました。

先々週くらいから欲しいな〜と思い始めていて、先週もどんどんと物欲が増していき、昨日とうとう購入してしまいました。

ペリカンのスーベレーンシリーズは、長い歴史を持つ万年筆シリーズで、ドイツ語で「優れもの」を意味する「souveran」(スーベレーン)の名が冠されています。

現在では、M300からM1000まで、その軸の太さと長さによりタイプが分かれており、M300は小型で柔らかいペン先(ニブ)が採用されており、M400はやや小型で、汎用的なものであり、M800は大型スタンダードで独特の重量バランスがあり、M600はその中間に位置づけています。M1000は最大のもので柔らかいペン先が採用されており、極上の書き味とのことです。

ペリカン スーベレーン M400と他の万年筆の比較私は手が小さい方なので、M400くらいがちょうどいいなと思いつつ、M800は現在使用しているセーラー万年筆のプロフィット21・長刀研ぎとそんなに大きさが変わらないので、良いモノが欲しいと思う傾向の私としては、M800に惹かれていたのですが、普段良く使うキャップレス・デシモと比較してもそんなに変わらないM400のサイズ感がやはりぴったりなのかなとも思い、また速記に向き筆記試験向きでもあるということなので、M400にしました。

ペリカン スーベレーン M400の新デザインによりキャップトップが金メタルに最近ちょっとしたデザインリニューアルがあり、キャップ先がメタルの素材感になりました。黒地に金のペリカンマークの旧モデルも好きでしたが、実物を見てみるとこっちも高級感があり満足しています。

スーベレーンといえば、やはり緑縞かなという思いもあり、緑縞を購入しました。青縞もボルドー縞も茶縞も惹かれましたが、やはり緑縞かなと。M800はブラックと緑縞しか無いのでM800を購入予定の方で色をダブらせたく無い方は要注意ですが。

ペリカン スーベレーン M400の外観。透けてて軽い。実物を手にしてみるとインクが入っていない状態はとても軽くてびっくりしました。インクを入れて見るとほどよい重量感で、EF(極細)とはいえインクフローは滑らか。国産万年筆のF(細字)くらいの太さで、個人的にはもっと細い方が好みなのですが、滑らかさを捨てるよりは良いかなと思います。

ペリカン スーベレーン M400のペン先ペン先のデザインと緑縞、黒の光沢とメタルの質感からくるその佇まいは、高級感があり所有欲をこれでもかと満たしてくれます。

キャップレスデシモはペン先が柔らかくしなるような感触なのですが、M400はやや固く、それでも滑らかでしっかりとした筆記感があります。

書くという行為は、ずっとITだった自分だったからこそ、その良さが分かる気がします。毎日帰宅後、就寝前にでも何とはなしに思いやアイデアを書き記していきたいなぁと思っています。その良き友になってくれそうです。

写真ギャラリー

th_IMGP0826th_IMGP0830th_IMGP0832th_IMGP0834th_IMGP0837th_IMGP0841th_IMGP0842th_IMGP0843th_IMGP0844th_IMGP0846th_IMGP0847