Plaggerでニコニコ動画をPodCastとしてiTunesに登録する on SnowLeopard

9 月 10th, 2009

タイトルのとおりですが、MacOS X 10.6 Snow Leopardが発売されたので、再インストールと同時にPlaggerの環境も再構築してみた。

同時に、これまでiPhoneで再生出来なかった、mp4形式の動画の再エンコードも対応済み。

1.SnowLeopardへのPlaggerのインストール

以下の記事を参考に、全力でインストールした。
LeopardにPlaggerを全力でインストールしてみる by PoWerStationさん

大まかな流れとしては、

  1. MacPortsをインストール
  2. MacPortsを利用して、CPANから各モジュールをダウンロード
  3. Plaggerの最新版をチェックアウト
  4. 動作確認

で、Plaggerの準備が完了する。記事ではいくつかのモジュールのインストール時にエラーが出ていたみたいだが、僕のSnow Leopard環境ではエラーが出なかった。めでたし。

2.Plaggerモジュールのインストール

Plaggerのインストールが完了したら、ニコニコ動画をダウンロード&エンコードするモジュールをインストールする。

これは、いくつかの記事を元に自分にあった動作のモジュールを選んでインストール。
ニコニコ動画からPlaggerでPodcastを作りiTunesで見たいゼ by PoWerStationさん
⇒導入の流れをわかりやすく説明してくれている


Plagger::Plugin::Filter::FetchNicoVideo でニコニコ動画(SP1) H.264 形式対応
by SmallStyleさん
⇒去年のニコニコ動画のH.264、SWF対応の対策

Filter::FLVInfo書いた by はこべにっき#さん
⇒ニコニコ動画ではアスペクト比が16:9と4:3のものが混在しているようなので、その対応

Plaggerでニコニコ動画を一括ダウンロード&変換 Podcast を生成して iPod touch で見る - 2007年11月最新版 by ゆーすけべー日記さん
⇒Plagger×ニコニコ動画の先駆者の記事(だと思われる)

基本的に必要なモジュールと、Plaggerでの処理の流れは以下のとおり

  1. Plaggerでyamlを起動
  2. Filter::FetchNicoVideoを起動
    ⇒ニコニコ動画からの動画のダウンロードを担当
  3. Filter::FFmpegにて動画とエンコードオプションを指定
  4. FFmpeg::Commandffmpegバイナリを起動し、動画をエンコード
  5. Filter::RewriteEnclosureURLとPublish::FeedでPodCastのフィードを作成

問題なのが、2年の間に各モジュールがいろんな人にアップグレードされているため、オプションなどの仕様が異なること。そのため、yaml、FetchNicoVideo.pm、FFmpeg.pmの中身を見ながら、使いやすいように修正した。
いろいろな人の要素が混ざっているので、以下に概要を記述しておく。

  • DBを使って、ダウンロードを管理(一度ダウンロードした動画はダウンロードしない)
  • flv、mp4形式の動画のダウンロードとエンコード
  • iTunesへの登録及び、iPhone OS3で再生できるようにエンコード
  • h264を使用しているため高画質だが、エンコード速度は遅い
  • コメントはダウンロードしない
  • swf形式の動画はダウンロードしない
  • PodCastのフィードを書き出し
  • 昨年のニコニコ動画のログイン仕様の変更に対応

3.iPhone OS 3.0への対応

FetchNicoVideo.pmの0.02でH.246のダウンロードは対応出来るように修正されていたけど、そのままだとiTunesへの登録はできるが、ベースプロファイルの関係で、iPhoneでに転送&再生されない。
iPhone 3GS向け動画エンコード設定(H.264) / AviUtl-x264GUI by 髭日記出張所さん

そのため、再生可能なオプションで再エンコード出来るように修正。
具体的には、拡張子がmp4の動画は同名ファイルでエンコードできないので、別名をつけてエンコードするだけ。
また、上記の記事にあったアスペクト比での振り分けがFLVInfo.pmを使う関係上、拡張子がFLVの動画でしか出来ないため、オプションからはずし、元動画のサイズでエンコードされるように変更。今のところ、ニコニコ動画はには最大640pxの動画が多いので、
640px以上の動画が再生できない > mp4形式の動画が再生できない
という考えで、640px以上は無視。
本来的には、mp4形式の動画もアスペクト比を計って振り分けたほうがいいが。

4.エンコードの高画質&高速化

最後に、画質とエンコード時間をトレードオフしながらyamlのエンコードオプションを設定。
僕が設定しているオプションはこんな感じ。

option_string: ‘-threads 0 -vcodec h264 -r 29.97 -b 600 -level 13 -loop 13 -refs 6 -mbd 2 -cmp 2 -me umh -qmin 12 -qmax 24 -sc_threshold 60 -subcmp 2 -flags2 bpyramid+wpred+mixed_refs+brdo -acodec aac -ar 44100 -ab 160k -ac 2′

以下は必須

  • ビデオコーデック[-vcodec]
  • フレームレート[-r]
  • ビットレート[-b]
  • ベースプロファイル[-level 13](13にしないとiPhoneで再生できない)
  • オーディオ[-acodec]
  • サンプリング周波数[-ar]
  • ビットレート[-ab]
  • チャンネル数[-ac]

その他は、画質とか速度に関するオプション。特に、以下の2つが画質と速度のバランスに大きく関係する。

  • スレッド数[-threads](h264の場合は0を指定すると自動でマルチCPUに対応)
  • 画質[-qmax][-qmax](h264の場合は、qminは10以上が良いらしい

詳しい設定はこちらを参考に。
最新FFmpeg by mobilehackerzさん

以上で、設定終了
この設定でplaggerを起動すると、大体の動画がダウンロードでき、iPhoneで再生できるようになった。

設定のyamlと、修正したモジュールを以下にUPしておくので、よかったら参考にしてください。

設定データ(2009/09/10)をダウンロード

Flash Video Playerのアクセシビリティ

8 月 26th, 2009

ちょっと前に仕事で汎用的なVideoPlayerを作る機会があったが、こんな記事がアップされてた。

アクセシブルなFlash Video Playerを目指して | デベロッパーセンター

富士通は以前からWebのアクセシビリティの研究をやってたが、今回はVideo Playerにフォーカスしたものが紹介されていた。

必要そうな機能は搭載されており、ツールチップや字幕などもありなかなか使いやすい。

もちろん、アクセシビリティの話しでよく取り上げられるキーボード対応やスクリーンリーダーへの対応もされている。

シークバーを触ったときの操作や、初回ロード時のサムネイル表示が実装されていないので、これらは今後に期待かな。あとは、同社のサイトで使い回すなら、音量をSharedObjectなどで保存するとかして欲しいかも。

若干残念なのが、ユーザへのアクセシビリティは練られているんだけど、それをページに実装する制作者側のアクセシビリティ(と呼ぶのかどうかわからんが)が考慮されていない。FLVのパスや音量、サムネイル画像なんかはjsではなくhtmlレベルでページごとに変更出来た方が良いし、jsもFlashで標準に書き出されるAC_のスクリプトではなく、独自に考えて欲しかった。無駄にサイズでかいし。

こういうところは、大勢の人が使うYouTubeとかの方が作り込まれているし、ノウハウもありそうな気がする。

とはいえ、良くできていると思うので、このあたりのノウハウも富士通の研究サイトで公開していただけることを期待しよう。

SENNHEISER HD595

8 月 21st, 2009

hd595

自宅用のヘッドホンが欲しかったので、SENNHEISER HD595を購入。

音質最高!!つーか異常。

これまで聞いてきたヘッドホンがおもちゃに感じた。

全体的に低音と中高音のバランスが良い音で、低音が強いなどの特色は無いけど、非常にクリアな印象を受ける。

また音の分解能が高く、これまで聞こえなかった音やボーカルの息づかいまで聞こえるのは衝撃!今まで聞いてきた音楽が全く新しいものに聞こえるくらい。

特に良かったのは音場の広さ。数千円クラスのヘッドホンではただ鳴っているだけの印象だったが、HD595では耳ではなく頭の回りから音が気持ちよく聞こえ、音が通っているだけでなく、長時間聞いていても疲れない。

本体のフィット感も非常に良く、楕円形のイヤーパッドが耳を包み込んでくれるため、他のヘッドホンと比べても違和感はほとんどない。また、SONYのXB-700も柔らかいイヤーパッドで気持ちよかったが、人間工学に基づいたこちらの形状の方が疲れにくい。

購入にあたって上位機種のHD650とも比較したけど、HD650は上品すぎる印象だったため、よく聞くポップスとかにはHD595の方が合っている感じがした。逆にクラシックなんかにはHD650の方がいいかも。

オープン型のため外では使えないのが残念だけど、自宅で聞く分には価格以上の価値があった。一度お試しあれ。

2009/8/21 追記

こっちにケーブル交換のための分解手順のマニュアルがあった。

Changing the cable (HD 515, HD 555 and HD 595) [PDF]

これで、ケーブル詰めたりできる。

あとは本体色を他の色に塗装したいなあ。

Ultimate Ears 700

7 月 24th, 2009

今年の1月に購入したKlipsh ImageX10を修理に出したときに、Ultimate Ears 700を購入したので、レビュー

e700

Ultimate Ears 700

デザイン

ユニットのデザインは丸っとした感じになっており、ビーズのような質感になっていた。個人的には小さくてかわいいといった感じ。重量も11gと軽く、耳に入れてもほとんど違和感がない。

イヤーチップは標準的なシングルフランジと、コンプライの低反発ポリウレタンフォームチップが付属。コンプライはすぐに汚れてしまうので、通常のフランジを使用している。

デザインで特によかった点は、ケーブルの柔らかさと、取り回しのしやすさ。

ケーブルがとても柔らかく、どんな状態でつかっても突っ張ったりしない。あと、ケーブル擦れによるノイズも少ない。

音質

専門家みたいにうまく批評できないので、あくまで素人としての意見。

音は全体的に高音が強く、軽い感じがする。ロックとか聴くとシャリ音がちょっと強調されているような印象を受ける。逆にバラードなど落ち着いた曲は非常にしっくりくると感じた。

じっくり聞くと、それぞれの音がよくわかるし、非常にクリアに聞こえる。

遮音性

かなり高い。iPodで音量を10%くらいにすると、もう周りの音が聞こえなくなる。

総評

普段使いのイヤホンとしては音質、使い勝手ともに非常によいと思う。

高音域が強いため、クラシックとかを聞く人には向かないかもしれないが、ポップスやバラードを聴く人にはよいかも。

次回(があれば)はImageX10の感想を書こうかな。

FlashHelperScripts:JavaScriptで「Flash+Photoshop」連携をパワーアップ! | デベロッパーセンター

7 月 19th, 2009

以前SparkProjectにこっそりコミットしてたJSX for Developersをデベロッパーセンターで取り上げていただきました。

Flash Helper Scripts:JavaScriptで「Flash+Photoshop」連携をパワーアップ! | デベロッパーセンター

仕事上の効率化のために作成していたものですが、利用していただけると幸いです。

AdobeのスクリプトのUIにはSWFも使えるものもあるので、こういったツールの開発にもFlashを活用していけるんじゃないかと。そうすれば画一的なOS標準UIじゃない、もっと便利なものを作れるはず。

各ショッピングモールの商品一括登録用データ作成マクロ開発メモ

7 月 13th, 2009

複数のショッピングモールに店舗をオープンするとき、商品データを手作業で移植とかやってられません。とくに1000件とか超えると面倒です。

なので、CSVやTSV形式の商品データリストを作成して、各モールに用意されている一括登録サービスを使用するのが一般的ですが、

「モールごとに形式が違いすぎる!!」

特にamazonが最悪。

Yahooやbiddersは1行1商品で設定できるのに、amazonは商品のバリエーションも1行ごとに記述しないといけなかったり、登録するジャンルごとにCSVのテンプレートが違ったりして、マクロの処理がかなり複雑になってしまいました。

あとは、画像関係。Yahooショッピングは商品コードの画像をUPしたら自動で反映されるが、他のモールは画像パスを全部指定しないとだめとか・・・

結局、YahooショッピングにUPした後、Excel⇒IE⇒PHPの連携でUPされている枚数を確認して、他のモールのデータに反映しました。また、楽天はYahooショッピングの画像データが使えないっぽいので、Yahooショッピングから画像をダウンロードしてきて、再UP予定。

Excelのデータから作成したURLから画像をダウンロード

Yahooショッピングのストアマネージャーでは画像データが一括ダウンロードできないので、商品データのCSVからパスを作成してダウンロードするようにマクロを作成しました。

Excel単体では無理だったので、ダウンロードはローカルサーバーを立てて、IEからPHPで実行。

[Excel VBA]

Dim imagePath as String

imagePath = “画像URL”

‘画像確認用IEの起動
Dim objIE As InternetExplorer
Dim objDOC As HTMLDocument

Set objIE = CreateObject(”InternetExplorer.Application”)
objIE.Visible = True
objIE.FullScreen = False
objIE.Top = 100
objIE.Left = 100
objIE.Width = 1200
objIE.Height = 200

‘画像の存在確認
objIE.Navigate “http://test.local.com/excel/download.php?path=” + imagePath

While objIE.ReadyState <> READYSTATE_COMPLETE Or objIE.Busy = True
DoEvents
Wend

‘IE 終了
objIE.Quit
Set objIE = Nothing

[download]

<?
chmod(”download”, 0755);

$imgPath = $_GET["path"];

$tempFilePath = explode(”/”,$imgPath);

$imgFilename = $tempFilePath[count($tempFilePath)-1];
echo $imgFilename.”\n”;

$newImgPath = “download/”.$imgFilename.”.jpg”;

$imginfo = getimagesize($imgPath);
if($imginfo[2] == 2){
$imgContents = file_get_contents($imgPath);
$outputImage = fopen($newImgPath,”w”);
flock($outputImage,LOCK_EX);
fwrite($outputImage,$imgContents);
}
?>

大量のデータを扱う場合はやっぱりExcelは便利で、VBAが無かったら全部手作業で死んでました。

これを機に、もうちょっとVBAを勉強してみようと思いました。

Photoshop Script作成メモ

6 月 11th, 2009

前の記事では高速化についてだったので、他のTipsメモ


選択範囲の透明部分を完全に削除して切り抜きたい

Photoshop Scriptでレイヤーでは

document.activeLayer.bounds

でレイヤーの領域を取得でき、

document.activeLayer.selection.copy(true);

で選択範囲を結合してコピーできます(引数をfalseにすると結合せずにコピーになります)。

しかし、実際にこの操作を行ってから新規ドキュメントを作成し、データをペーストすると上下に数ピクセルの余白ができることがありました。

これらを削除するために、

if((nx2 - nx1) != (x2 - x1) || (ny2 - ny1) != (y2 - y1)){
newDocument.crop(newBoundsObj);
}

//x1-x2、y1-y2はコピーした領域、nx1-nx2、ny1-ny2は新規ドキュメントの領域

という形で、サイズが異なる場合は、新しいドキュメントの内容の領域で切り抜きを実行することで余白を削除できます。


リミットを設ける

Scriptを実行したさい、レイヤー数が多いとどうしても処理が重くなります。そのため、ある程度でリミットを設け、警告を出すようにしたほうがよいです。

特に、

  • レイヤーが500を越える
  • レイヤーセットの入れ子が多い

このようなデータで処理を実行すると、pCのスペックによっては処理中にフリーズする可能性が高くなるようです。

Adobe ExtendScript Toolkit 2を使う

スクリプトの作成、デバッグにはAdobe CSのフォルダの[Adobe ExtendScript Toolkit 2]を使うと便利です。独立して実行できるので途中で処理を止めたりもできます。

最初、知らなくてテキストエディタで作成してました。

参考サイト

Adobe Photoshop CS2自動化作戦

http://www.openspc2.org/book/PhotoshopCS2/

Photoshopのスクリプト制御
http://codezine.jp/article/detail/406

Adobe Photoshop Scripts | Trevor Morris Photographics
http://morris-photographics.com/photoshop/scripts/index.html

そらかぜ工場 Photoshop Scripting 覚書き
http://www016.upp.so-net.ne.jp/sorakaze/script/

Adobe CS4 バージョンJavaScript ファレンス
http://www.openspc2.org/reibun/AdobeJS/index.html

PhotoShop JavaScript(ExtendScript):Note - ホコホコ hoko-hoko
http://hokori.net/2008/04/20/photoshop_javascript/

Photoshopだけでなく、Flash(JSFL)、Illustrator、AfterEffects(Expression)など、JSでアプリケーションを操作できるAdobe製品は多いので、応用でいろいろと便利なものができると思います。

Photoshop Scriptを高速化する場合のメモ

6 月 11th, 2009

「Flashデベロッパー向けPhotoshopスクリプト集」を作成する際に工夫した、Photoshop Scriptの処理を高速化するためのポイント(JavaScript限定)

http://www.libspark.org/wiki/yoshihiko/jsx

1.アクションを併用する

PhotoshopScriptを最大に高速化するには、アクションでできることはアクションで行うことです。

全体的な処理の負荷は

アクション > JavaScript Object

となっているみたいで、アクションだと一瞬で終わる作業をJSで実装すると倍以上の時間がかかることも多いです。特にレイヤー関係で顕著で、JSで全レイヤーの表示・非表示などを行うと、レイヤー数によっていはフリーズすることもあります。


アクションをJSの中に組み込む

アクションの起動はJSかVBからできます(今回はJS)。まず準備として、PhotoshopのアクションをJSの状態で記録するプラグインを導入します。

Photoshop CSの[スクリプティングガイド]フォルダ内の[ユーティリティ]フォルダ内にある、[ScriptListener.8li]というプラグインを、[プラグイン]フォルダ内の[自動実行]フォルダにコピーし、Photoshopを再起動します。

この状態でPhotoshopを操作すると、アクションパネルで記録できる動作がすべてJSとVBの状態でデスクトップに記録され続けます。JSの場合は以下のようになります。

// =======================================================
// =======================================================
var id238 = charIDToTypeID( “Hd  ” );
var desc23 = new ActionDescriptor();
var id239 = charIDToTypeID( “null” );
var list15 = new ActionList();
var ref18 = new ActionReference();
var id240 = charIDToTypeID( “Lyr ” );
ref18.putName( id240, “レイヤー 1″ );
list15.putReference( ref18 );
desc23.putList( id239, list15 );
executeAction( id238, desc23, DialogModes.NO );

上記はレイヤー1を非表示にするアクションを実行するスクリプトです。

[ActionDescriptor]、[ActionList]、[ActionReference]、[charIDToTypeID]、[executeAction]の4つがJSの関数及びオブジェクトとして定義されています。

イメージとしては[ActionDescriptor]がアクションの定義、[ActionList]はアクションの設定の定義、[ActionReference]はアクションの引数の定義のようなものです。これらを作成した後、[executeAction]で実行する流れになります。

[charIDToTypeID]は上記の定義を作成する際に、4文字の文字列をコマンドタイプに変換する関数で、たとえば上記の例の場合、charIDToTypeID( “Hd  ” )では「非表示にする」というコマンドを作成し、charIDToTypeID( “Lyr  ” )は「レイヤー」であることを示すコマンドを作成しています。

これらをJSと連携してカスタマイズすることができます。

「Flashデベロッパー向けPhotoshopスクリプト集」では、全レイヤーの選択や表示、非表示の変更など、全レイヤーに対してループする処理などをアクションに置き換えることで高速化をおこなっています。

2.レイヤーカンプ機能を利用する

多少、使用する状況が限定的ですが、レイヤーの表示、非表示を元に戻す場合など、初期状態を記録するためにレイヤーカンプ機能を使用すると高速化できます。

全レイヤーを操作して、状態を記録するのではなく、レイヤーカンプを一枚作成しておき、処理が終了した際に最初のレイヤーカンプを選択すると、実行前の状態に戻ります。ただし、レイヤーの削除などを行った場合は戻らないのでご注意ください。

3.再帰関数を作成する

Photoshop Scriptに限らず、forループを入れ子にするより、再帰関数で実行するほうが高速化します。特にレイヤーの検索など対象のドキュメントのレイヤーセットが多数入れ子になっている場合に効果がありました。

4.全レイヤーへの操作を極力減らす

Photoshop Scriptを実行した際に特に処理が重くなったのが、レイヤーの選択を行うことでした。選択カーソルが動く時などは非常に遅くなります。この処理を極力減らし、処理の最後にすることでかなりの負荷が軽減できます。

もっと高速化する方法があれば教えてください。

まあ、Cでプラグインを作成するほうが早いとは思うんですが・・・

Flash IDEからのBasic認証サイトへのアクセス

5 月 10th, 2009

開発メモ

Flash CS3、CS4での開発中にBasic認証のかかったサイトのデータを取得する方法に調査したところ、いろいろと問題が出てきました。

ネットではAS2とAS3はそれぞれ以下の方法でBasic認証を解除できるとあります。

as2

http://www.neetranger.com/red/2006/12/flash_basic.html

as3

http://haricot.tumblr.com/post/41549486/as3-flashide

しかし、実際に試すと、URL Opening errorが発生します。(検証したのはAS2のみですが、おそらくAS3も無理)

そこで、Fiddlerを使ってHTTPリクエストを確認したところ、認証解除のためのAuthorization ヘッダーが送信されていないようでした。

ヘッダー関係のドキュメントを探すと、Flash Player  9,0,115,0 からヘッダーの取り扱いが変更され、通常の状態では送信できなくなっており、Autorizationヘッダーを送信するためにはcrossdomain.xmlに許可文を記述する必要があるようです。

http://www.adobe.com/jp/support/kb/ts/233/ts_233453_ja-jp.html

また、Flash CS3 標準のTest MovieプレーヤーはFlash Player  9,0,115,0であるため、Autorizationヘッダーの送信自体が不可能とありました(なんでそんなバージョンのプレイヤーが・・・)。

さらに、Flash Player  9,0,115,0より上のバージョンのテストプレーヤが搭載されているFlash CS4でも試してみましたが、Flash IDEから実行した場合はポリシーファイルは関係ないようで、上記のcrossdomain.xmlを記載しても反映されませんでした。

というわけで、通常の方法ではFlashCS3、FlashCS4ではBasic認証解除は難しいかな。

結果、Basic認証のかかったサイトからデータを取得するための解決策としては以下の3点

  • 素直にブラウザでプレビューし、認証機能を使用する
  • Flash 8以前のIDEを使用する
  • FlashCS3のTestMoviePlayerのバージョンを何とかしてダウングレードする(推測)

Basic認証サイトにアクセスする方法をご存知の方いらっしゃったら、教えてください~。

つーか、Flash内の設定でそれくらい用意してほしいです。

Spark勉強会 #7 に参加してきました。

2 月 25th, 2009

[概要]
http://wiki.libspark.org/wiki/SparkStudy/07

[発表内容]
Adobe最新動向

Spark近況報告

  • Adobe Maxで発表しました。あと、IT新聞に記事が掲載されました。

最近のコミット(面白そう&役立ちそうなものをピックアップしています。)

  • Amazon:Amazon Web Serviceを手軽に使えるライブラリ。
  • Exif:JPEGファイルのメタ情報を取得できるローダー。
  • AllClassLinkageReplace:ムービークリップのリンケージ設定を検索、置換できる。Flash拡張機能。
  • Freezable:子、孫のムービークリップも含めていっせいに停止できるライブラリ。
  • Timeline Controller:タイムラインを操作できるツールがそろったFlash拡張機能。
  • EnhancedTimer:Timerクラスの拡張クラス。時間情報を持っているので、時間が高速にすすむアニメーションなどが簡単につくれる。

発表

  • AdobeMaxレポートの舞台裏(flabakaさん)
    Adobe MAX Japan 2009 Spark project ちょっと変わったレポートで紹介されたレポートの制作秘話でした。
    おもしろいレポートを突き詰めていき、興味を持てるようにと専門用語を削っていった結果、このような漫才形式のレポートができたそうです。
    発表資料はこちら
  • SVG on AS(nutsuさん)
    XMLでベクター画像を記述するSVG形式のファイルを読み込み、AS上で扱う形式に変換してくれるライブラリの紹介。Frocessingと組み合わせることで、面白いアニメーション効果を作り出していました。
    SVG形式はベクターを扱うアプリケーションから簡単にエクスポートができるので、ASと連携できるアプリケーションの幅がかなり広がると思われます。
  • 自前で3Dした話か何か概念(dokeさん from KAYAC
    3DをPapervisionなどの外部ライブラリを使用せずに作成した過程を紹介
  • Progressionを使ってみた&女性Flasherから見たかわいいとは(ナックルさん from KAYAC
    Progressionを案件で使用した感想など
  • BeTween(yossyさん)
    現在製作中のトゥイーンライブラリ、BeTweenの紹介。
    Tweensyクラスの速度と、トゥイーン自体を加工できるという面白い特徴をもってるライブラリ。Vectorクラスを使用して高速化しているため、要FlashPlayer10。フリー&制作が日本なので、たぶんこれからおすすめ。

以上です。来月も参加してきます。