nDiki : PAR
PAR - Perl Archive Toolkit
Perl プログラムから実行形式 (Windows であれば exe 形式)ファイルを作成することのできる Perl モジュール。
などの機能がある。
PAR 0.970 から PAR と PAR-Packer に分離した。
Tips
自分自身がPARでアーカイブしたものかどうかを調べる。
もし明示的に PAR モジュールを use していない場合、 $INC{'PAR.pm'} が真かどうかをチェックすることで判定できる。 真の場合はPARでアーカイブされたものであるので、PAR::read_file 等を実行してアーカイブの中のファイルにアクセスすることができる。
pp で作成した実行可能ファイルのライセンスについて
The Artistic License の下にあるライブラリを使用しているだけであれば、第8条に従い任意のライセンスを設定できる。
(pp のマニュアルより)
スポンサード リンク
Related term
2005年3月15日 (火)
■ PAR で作った実行可能ファイルを殺せない

PARでWindows用実行可能ファイル(exe)にしたプログラムを、別のプログラムから起動・終了させるプログラムを書いていたところ困った事態。
今まで気がつかなかったのだが、PARで作った実行可能ファイルを実行するとプロセスが起動される。片方がブートストラップで、もう一方がPerlインタプリタのようだ。
プログラムから起動した時に取得できるのはブートストラップの pid で、これを TerminateProcess してもPerlインタプリタの方は以前として動き続ける。 止める方法がわからん。
自爆機能とかつけて対処するしかないか。
@ --pidfile
結局 --pidfile オプションをつけて、pid をファイルに書き出せるようにした。 $$ の値はPerlインタプリタ側のプロセスIDで、こちらを kill するとまとめて落ちてくれる。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- PAR (2004-07-19)
- UPXで実行可能ファイルを小さく (2005-03-07)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- ActivePerl 5.8.9 build 825 + MinGW 5.... (2009-02-22)
2005年3月16日 (水)
■ wxPerl + PAR ではDLL追加指定の必要あり

メモ。 PAR (0.87) では DLLが使用するDLLまでは自動的に検出できないので、明示的に指定する必要あり。
wxPerl だと Wx.dll 以外に wxmsw24.dll が必要になるので、pp の -l オプションで指定しなければならない。 この際見つからなくてもエラーにならないようだ。 見つからない場合はフルパスで指定しなければならない。
$Config{sitelib} . "\\auto\\Wx\\wxmsw24.dll"; # with use Config;
あたりにあるはず。
- PAR で DLL ファイルをロードできなかったら大文字小文字を疑え (2009-02-23)
- 今日のさえずり - くるみマフィンの賞味期限が2月30日 (2009-02-23)
- [ Debian ] GRUB でソフトウェアRAID1 ブート設定 (2004-01-05)
- 私的10大ニュース2004 [ comp ] (2004-12-31)
- wxWidgets + wxPerl (2004-07-20)
2005年3月31日 (木)
■ Wineを入れてみる

Linux 上で Win32 用の ActivePerl を動かして、PPM パッケージの作成や PAR による実行可能ファイルの作成をできるようにしたい。
調べたところ Wine 上でも ActivePerl が動くらしい。 さっそく Debian GNU/Linux の sid 環境にインストールしてみる。
debパッケージは以下をインストール。
- wine
- wine-utils
- winesetuptk
- wine-doc
- msttcorefonts
winesetup を実行して ~/.wine 以下を作成。 winesetup が古いのか wine を実行すると
Please use the registry key HKEY_CURRENT_CONFIG\Software\Fonts\LogPixels to set the screen resolution and remove the "Resolution" entry in the config file
という警告がでるので、[fonts] の中の
"Resolution" = "96"
をコメントアウト。
次に msi 形式になっている ActivePerl インストーラを動かすために、Windows Installer をインストールする。
失敗。設定がうまくいっていないのか、何かが足りないのか。
usr/share/wine/wineinstall で ~/.wine 以下を作っても駄目。
要調査。
- ActivePerl で Ming (2005-02-23)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- ActivePerl 5.8.9 build 825 + MinGW 5.... (2009-02-22)
- Debian GNU/Linux sid 環境を新 HDD へ (2006-07-29)
- NSIS 2.22 は Linux でビルドできず (2006-12-20)
2006年2月9日 (木)
■ ActivePerl と PAR PPM パッケージは合わせる必要あり

以前 ActivePerl にインストールした PAR で Windows 実行形式ファイルに変換しておいたプログラムが実は動かなかった事に気がつく。
プログラム名 - エントリポイントが見つかりません。
プロシージャ エントリ ポイント PL_memory_wrap がダイナミックリンク ライブラリ perl58.dll から見つかりませんでした。
おや。
どうやら ActivePerl 5.8.7 Build 813 上で、 ActivePerl 5.8.6 Build 811 で PPM パッケージ化しておいた PAR を使ったのがまずかったようだ。
ActivePerl は 5.8 系の間ではバイナリ互換だったと思うが(5.6系とは駄目)、PAR に限ってはそうはいかないらしい。まぁ、考えてみればそうなってもおかしくない。
ということで PAR PPM パッケージを作り直してインストールし、こちらであらためて exe ファイルを作成。 うまく動くようになったことを確認。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- 自前 PPM リポジトリの管理 (2006-07-03)
- ActivePerl で Ming (2005-02-23)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
2006年6月16日 (金)
■ PAR に関する ActivePerl のライセンス

確認したら ActivePerl Community License v2.1 (ActivePerl 5.8.8.817 はこれ) には PAR (や PerlApp や Perl2Exe など) で ActivePerl に含まれているファイルをラッピングしてアプリケーションに含めることができると書いてあった (一部条件あり)。
今まで見落していたよ。
「ActivePerl」 + 「The Artistic License 下な CPAN にあるモジュール」 + 「自作コード」を PAR でバイナリ化して配布しても OK ということが分ってちょっとすっきり。
- ActivePerl 5.6.1 Build 638 にバンドルされている... (2004-08-19)
- PAR + ActivePerl で実行形式ファイルを作った時のライセンスは? (2004-07-21)
- Perl プログラムと必要なモジュールの配布 (2005-05-16)
- 自前 PPM リポジトリの管理 (2006-07-03)
- ActivePerl と PAR PPM パッケージは合わせる必要あり (2006-02-09)
2006年7月3日 (月)
■ 自前 PPM リポジトリの管理

Windows Perl アプリケーション用に PPM リポジトリを久しぶりに整理。
自分が使用する PPM パッケージは以下の理由から、以前より基本的に自前でビルド/保存し PPM リポジトリをローカルに作成するようにしている。
- 後でオフラインでインストールできるようにする。
- 「公開リポジトリが無くなった」あるいは「公開リポジトリに欲しいパッケージが無くなった」時に困らないようにする。
- 動作確認された組み合わせでの PPM パッケージセットを作成・保持できるようにする。
- ライセンス的にクリアなものだけを含むリポジトリを用意する。 (芋蔓式インストールで、ライセンス的にクリアでないパッケージが入ってしまうのを防ぐ)。
@ 手元では以下のように管理
PPM
|-- <category>
| `-- 8xx
| |-- <projects A> [ 公開 / export ]
| | |-- module1.ppd -> (A)
| | |-- module1.tar.gz -> (B)
| | `-- ...
| `-- ...
`-- pool
|-- module1-x.yy
| |-- module1.x.yy.tar.gz
| |-- some documents...
| `-- build817
| |-- module1.ppd (A)
| `-- module1.tar.gz (B)
`-- ...
@ pool
- pool ディレクトリに「[モジュール]-[バージョン]」ディレクトリを作成する。同じバージョンでも、異なるバージョンは両方とも別々にキープしておく。
- その下にソース tarball を置く。
- ライセンス情報ファイルなども置く (touch Perl-License 等空のファイルを作成しておく)
- PPM パッケージを PPM::Make で作成し、その時に使用した ActivePerl のビルド番号別にサブディレクトリを作って .tar.gz と .ppd を置く。
@ リポジトリ
- ActivePerl のビルド番号別にリポジトリを作成する。基本的には 6xx 系、8xx 系それぞれの中ではバイナリ互換性がある (PAR などは、ビルド番号に1対1でしか互換性がない)。
- 必要に応じてカテゴリ別サブディレクトリを用意 (アクセス制限の都合などにより)
- 必要に応じてプロジェクト毎にサブディレクトリを用意 (プロジェクト毎にパッケージセットを作るため)
- リポジトリディレクトリからは pool 内の .ppd、.tar.gz へシンボリックリンクを張る。欲しいモジュールのバージョン、ビルド番号を選んでリンクする。
@ 公開
- Samba、Apache などで、PPM ディレクトリ全部あるいは特定のリポジトリ部分を公開する。
- 必要なら export して別サーバに置く。rsync や cp の -L オプションでシンボリックリンクを実ファイルに置き換えてアーカイブを作成する。
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- ActivePerl で Ming (2005-02-23)
- XAMPP で WiKicker を動かしてみた。PPM インストール OK。 (2007-02-09)
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- rsync の --copy-unsafe-links (2004-08-21)
2006年12月12日 (火)
■ PAR::Repository でビルド済み Perl モジュールをネットワーク配信

@ 実行可能ファイル作成としての PAR
PAR といえば Perl スクリプトを実行可能ファイル(Windows なら EXE 形式ファイル)に変換するモジュールとして有名である。
ちなみに実行可能ファイルを作成する部分はは PAR 0.97 より PAR-Packer パッケージに分けられ、PAR 自体はインストールしやすい pure Perl なパッケージになっている。
@ PAR モジュールアーカイブからのローダとしての PAR
PAR が提供するもう一つの(こちらが本来はメイン?)機能は、プログラムの実行時に必要な Perl モジュールを PAR ファイルと呼ばれる Perl モジュールアーカイブファイルからロードする機能である。 XS モジュールなどもコンパイルすることができるどこかの環境で1度ビルドして PAR ファイルにしておけば、同じアーキテクチャのホスト上でそのまま利用することができる。
@ PAR リポジトリ
ロードしたい PAR ファイルはファイルパスだけではなく URL でも指定することができ、必要な時にオンデマンドでフェッチさせることができる。 これを使えば Perl プログラムの集中管理可能だ。
PAR 0.951 からは PAR リポジトリというコンセプトが追加され、パッケージ毎に作った PAR ファイルをサーバ上(あるいはローカル)のリポジトリに蓄積してオンデマンドでロードできるようになった。
個別に PAR ファイルを指定する従来の方式に比べてかなり便利そうである。 ということで試用してみた。
まずは
- PAR
- PAR::Repository
- PAR::Repository::Client
- PAR::Repository::Query
- PAR::Dist
- PAR::Packer
あたりをインストールし準備 OK。
@ 1. PAR リポジトリを作成する
最初に PAR-Repository に含まれている parrepo で。
parrepo create -r /tmp/PAR
PAR リポジトリファイルの中にはデータベースファイルが作成されるが、これは DBM::Deep というアーキテクチャ非依存のものを使っているので、Linux でも Windows でもどちらからでもアクセス可能である (つまり Linux 上でリポジトリをメンテできるということだ)。
@ 2. Perl パッケージを PAR ファイル化する
次に必要な PAR ファイルを作成する。 作成したいパッケージを展開してビルドし、blib ができている状態で PAR::Dist を使ってパッケージ化する。
perl Makefile.PL make make test perl -MPAR::Dist -e blib_to_par
例えば ActivePerl*1 上で WWW-Mechanize-1.20 を PAR ファイル化すると
WWW-Mechanize-1.20-MSWin32-x86-multi-thread-5.8.8.par
というファイルが作成される。
普段から ActivePerl で必要なライブラリは基本的に自前で PPM パッケージ化して、動作確認した上で PPM リポジトリに蓄積するようにしているので、合わせて次の手順でパッケージを作ることになる。
perl Makefile.PL nmake nmake test perl -MPAR::Dist -e blib_to_par make_ppm
@ 3. PAR リポジトリに PAR ファイルを登録する
PAR ファイルができたら parrepo でリポジトリに登録する。
parrepo inject -r /tmp/PAR -f xxx.par
@ 4. PAR リポジトリ上のライブラリを使用してみる
例えば先ほどの WWW::Mechanize がリポジトリに登録されている状態で
#!/usr/bin/perl
use PAR { repository => 'file:///tmp/PAR/' };
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.example.com');
print $mech->content;
というスクリプトを書いて実行すると、PAR リポジトリから WWW::Mechanize がロードされて正しく実行される。
ここでリポジトリを Web サーバへアップロードして、repository のところに URL を指定するようにすることもできる。 例えばリポジトリを http://www.example.com/PAR/ に配置したとすると
#!/usr/bin/perl
use PAR { repository => 'http://www.example.com/PAR/' };
use WWW::Mechanize;
my $mech = WWW::Mechanize->new;
$mech->get('http://www.example.com');
print $mech->content;
と書き換えることで、インストールしていない WWW::Mechanize を使用できるようになる。
@ Perl プログラムを実行形式化する
先ほどの Perl スクリプトを get_top_page.pl という名前で保存して pp で実行可能ファイル化する。
pp -o get_top_page.exe -M PAR::Repository::Client get_top_page.pl
とすれば get_top_page.exe という実行可能ファイルが作成される。 WWW::Mechanize はオンデマンドで http://www.example.com/PAR/ からフェッチされるので、アップデートが必要な場合は新しい PAR ファイルを作成してリポジトリを更新するだけでよい。 EXE ファイルを作成しなおして利用者に配付しなすといった作業も不要だ。
@ スクリプトもリポジトリにおく
さらには実行するスクリプトをも PAR リポジトリに置いておくことが可能だ。
例えば WWW-Mechanize に含まれている mech-dump をオンデマンドにフェッチして実行する実行形式ファイルは以下のコマンドで作成できる。
pp -o mech-dump.exe -M PAR::Repository::Client \
-e "use PAR { repository => 'http://www.example.com/PAR/', \
run => 'mech-dump' }"
@ まとめ
ActivePerl では PPM があるとはいえ、普通のユーザにちょっとしたプログラムを使ってもらうのに「ActivePerl をインストールして、PPM パッケージをインストールして、……」というのは手間すぎる。
pp で プログラムに必要なものを全てバンドルした実行形式化ファイルにするという方法ももちろんあるのだが、頻繁にアップデートするようなスクリプトの場合には、起動のための部分だけ pp で作成しておいてあとは PAR リポジトリで集中管理するというのもちょっと魅力的である。
- [ Perl ] PDL::PP で C extension を書く (2004-02-19)
- 自前 PPM リポジトリの管理 (2006-07-03)
- ActivePerl 5.8.9 build 825 + MinGW 5.... (2009-02-22)
- ActivePerl で Ming (2005-02-23)
- ActivePerl 5.8.8.820 の PPM では ppd/tar... (2007-02-05)
2008年2月21日 (木)
■ 今日のさえずり - 4C-0.4 芯って予想以上に細い

@ 2008年02月20日
- 08:31 京浜東北線遅延により激混み。2本見送り。[mb]
- 08:55 久しぶりに京浜東北線の最後尾車両に乗ってる。[mb]
- 16:19 Cava Packager っていうのがあるんだ。PAR と比べてどうなんだろう。http://www.cava.co.uk/ *Tw*
- 16:35 プリントアウトの裏紙を靴べらのかわりにしているけれど、イマイチすぽっと履けない。 *Tw*
- 18:54 新しく買ったカメラバッグが入ったヨドバシカメラの袋持っている隣の人、先に通勤バッグ新調したほうがいい。[mb]
@ 2008年02月21日
- 00:07 P3 を 2.37 から 2.50 に上げて久しぶりに起動。しばらく見ない間にさらに改良されている。
- 00:10 @lynmock Linux ユーザとしては設定ファイルが ~/.P3_PeraPeraPrv に入ったのが嬉しいですね。
- 10:12 4C-0.4 芯って予想以上に細い。滲みがないからハイテックCより細い字が書けるな。ただ髭が出る。
- 12:10 久しぶりに Squid。Red Hat Linux 8.0 BOX に Squid 2.6 をソースからインストール。すんなりはいった。
- 12:32 アトレ大井町、今日は休館日か。
- 17:19 先週の金曜日にかっちゃんが死んだので、明日のタッチは見逃せない (TOKYO MX)。
- 19:45 SO905iCS でiアプリ版モバイル Google マップダウンロードできるようになった。現在位置取得も OK。[mb]
- 22:30 3日前にケータイ保障 お届けサービス申し込んだので、ドコモプレミアムクラブガイドブックが郵送されてきた。
- 今日のさえずり - SO905iCS ケータイ補償 お届けサービス申し込んだ (2008-02-19)
- 今日のさえずり - 除虫菊を栽培していただきます (2008-08-05)
- 今日のさえずり - 「じゅうふく(重複)」はやはり気持ち悪い (2008-03-21)
- Cyber-shot ケータイ SO905iCS 発売から1年 (2009-02-15)
- 今日のさえずり - ファミリーマートにクリスマスケーキ4号・5号 (2008-12-24)
2009年2月22日 (日)
■ ActivePerl 5.8.9 build 825 + MinGW 5.1.4 + PAR で Perl スクリプトを実行可能ファイルに

久しぶりに PAR の出番。 休日出勤して環境作り。
今回実行可能ファイルにしたい Perl プログラムが Perl 5.8 で開発・テストされているものの改訂版で、必要な PPM パッケージも 8xx 用に作りだめしてあるので、ActivePerl 5.8.9.825 上で行うことにした。
PAR::Packer は ActivePerl の build と合っていないとうまく動かないので、自分でソースからビルドして PPM パッケージ化する。 必要な依存モジュールのバージョンも軒並み上がっているので、それらもビルド。
今まで Visual Studio 6.0 でビルドしていたのだけれど、この間 PC をかえてから入れていなかったので、今回は MinGW を使うことにした。 SourceForge.net 上から g++ をダウンロードしてネットワークインストールできないようなので、そこだけ SourceForge.JP で探してきてインストール。
MinGW の bin ディレクトリを PATH に追加したら、特に問題なく Perl モジュールコンパイルできている。素晴しい。ExtUtils::FakeConfig 無くてもいいのかな。
- ActivePerl で Ming (2005-02-23)
- PAR::Repository でビルド済み Perl モジュールをネット... (2006-12-12)
- 自前 PPM リポジトリの管理 (2006-07-03)
- bundle を作成して Perl モジュールをまとめてインストール。 (2004-10-21)
- Wineを入れてみる (2005-03-31)
2009年2月23日 (月)
■ 今日のさえずり - くるみマフィンの賞味期限が2月30日

@ 2009年02月21日
- 11:49 YouTube 見てたら Linux フリーズした。 *P3
- 11:53 リラックマストア東京駅店、昨日オープンか。 *P3
- 13:42 西安餃子の半個室。 [mb]
- 14:49 ズボン濡らしたのでイトーヨーカドーで新しいの買って着替え。 [mb]
- 18:50 今日買ったくるみマフィンの賞味期限が2月30日だった。で、ハリマヤさんいったい賞味期限はいつなの? [mb]
- 20:34 昼のエビチリ、2度辛いがきたっぽい。 *P3
@ 2009年02月22日
- 09:47 シェーキーズってまだあるんだ。最後にランチの食べ放題食べたのいつだろう。もう今行っても、もとを取れないだろうけど久々に食べたい。 [mb]
- 09:55 @nakameP えーっ、シェーキーズってそんなに進化してたんですか。最後に行ったのは15年以上前かなあ。学生にはあのチープ感でも満足でした。 [mb]
- 10:25 出社。 *P3
- 10:53 JUDE/Server 2010年2月末日をもってバージョンアップ終了か。需要少なかったのかなあ。 *P3
- 11:41 メモ用にと名刺入れに名刺サイズ方眼情報カードをずっと忍ばせていたんだけれど、基本 RHODIA 持ち歩く習慣がついているので使ったためしがない。かさばるだけなので捨てる。 *P3
- 14:43 MinGW 5.1.4 インストール。 *P3
- 15:41 SourceForge.net から MinGW の g++ がダウンロードできないので、そこだけ SourceForge.JP から取ってきてようやくはいった。 *P3
- 17:45 PAR-Packer の nmake test をかけると、Norton Internet Security がしゃしゃり出てくる。 *P3
- 18:11 ようやく PAR-Packer の nmake test が終わった。 *P3
- 19:12 斜め向かいのちょっとバーコード始まっているおじさんがポータブル MD プレーヤーの外付けバッテリのネジにずっと苦戦している。カチャカチャ。 [mb]
- 22:53 目が尋常なく痒い。 *P3
@ 2009年02月23日
- 12:59 PAR における DLL ファイルのファイル名の大文字小文字問題に翻弄されていた。 *P3
- 13:02 PDL 今もきちんとバージョンアップしているんだな。ちょっと安心。 *P3
- 19:02 納期間近の仕事集中的にやっていたけれど、そろそろルーチンワークもやっておかないとヤバい。 *P3
- 20:27 さて帰る。 *P3
- 20:44 切ない……。会社にマスク忘れてきた。 [mb]
- 20:53 モバツイ不調なので久しぶりに PC2M 経由で本家。
- 21:38 そろそろ RPG のアイテムに花粉症の薬が出てきてもいい頃。 *P3
- PAR で DLL ファイルをロードできなかったら大文字小文字を疑え (2009-02-23)
- ActivePerl 5.8.9 build 825 + MinGW 5.... (2009-02-22)
- ActivePerl で Ming (2005-02-23)
- 今日のさえずり - 乗客もっと絶望の表情になるべきだろ (2009-02-20)
- PAR を ActivePerl 5.6.1 build 638 に (2004-07-20)
■ PAR で DLL ファイルをロードできなかったら大文字小文字を疑え

PDL を使っている Perl プログラムを、昨日構築した今ごろの環境で PAR を使って実行可能ファイル化したんだけれども、実行してみたら
Can't locate loadable object for module PDL::Core in @INC ...
というエラー。 実行時のキャッシュディレクトリを見ると core.dll が同梱されていない模様。 なんでだー。
いろいろやってみたところ、もしやと思ってインストール済みの core.dll を Core.dll という名前に変えたらエラーが出なくなった(正確には次のモジュールで同様のエラーが出た)。
ファイル名の大文字・小文字が問題だったらしい。 PAR の FAQ には「Win32::Perms の Perms.DLL でこのエラーが出たら、Perms.dll にしてね」と書かれている。 最初これ拡張子の問題だけだと思っていた。 ベース名でも同様のようだ。
以前は問題なかったから、比較的新しい PAR で発生するようになったと思われる。 これ絶対はまる。
- Template Toolkit + PAR (2004-09-13)
- 今日のさえずり - くるみマフィンの賞味期限が2月30日 (2009-02-23)
- Wineを入れてみる (2005-03-31)
- ActivePerl 5.8.9 build 825 + MinGW 5.... (2009-02-22)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
スポンサード リンク
■よく検索されるキーワード
torrent(113) perl(50) 書き方(41) アジェンダ(33) ドラマ(27) linux(27) 動画(24) windows(24) 提案書(22) debian(20) 冷蔵庫(18) 使い方(17) アジェンダとは(16) evernote(16) firefox(15) 画像(14) x31(14) twitter(14) java(14) usb(12) gmail(11) dropbox(11) winmerge(11) tc-1(10) tickler(10) 映画(10) 修理(10) naneyorgwiki(9) thinkpad(9) ダウンロード(9) テンプレート(9) ixy(9) lsyncd(9) nikon(9) ノート(8) svn(8) rcs(8) フリー(8) 生年月日(8) 壁紙(8) apache(8) wiki(8) インストール(7) うなぎ(7) ダイソー(7) 210(7) smtp(7) サンプル(7) 女優(7) 提案書の書き方(7) a6(7) file(7) iwgp(7) ganttproject(7) aniara(7) 写真(7) 01(6) web(6) 補助充電アダプタ(6) grub(6) cm(6) ssh(6) boblbe-e(6) モジュール(6) 無料(6) フルハルター(6) visual(6) トレント(6) ヨドバシ(6) hyde(6) 評判(6) 無料動画(6) 会議(6) ブログ(6) c++(6) 作り方(6) foma(6) skype(5) ボールペン(5) c#(5)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザイン ビックカメラProcess Time: 0.120765s / load averages: 0.21, 0.29, 0.31
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)




スポンサード リンク