僕は発展途上技術者

mp4 から avi への変換など、動画編集に役立つフリーウェア

ゴールデンウィーク最終日は、悲しくも雨。


というわけで今日は外出せず、インドアでなにかこども達を喜ばせようと、映画撮影のまねごとをしてみました。


以前


» 「ダースベーダー vs ヨーダ」 本編では描かれなかった闘い (ホームビデオです。悪しからず) : 僕は発展途上技術者


こんなものを作ったことがあるのですが、2年経って僕も子供達もちっとも進歩せず、あいかわらず僕らにとっては、映画 = スターウォーズ なのです。


というわけであいも変わらず、スターウォーズの名シーンをいくつか再現し、撮ったビデオに本編の音声を合成したりして楽しんだのですが、毎回毎回動画ファイルの変換をおこなうソフトウェアを探したり、手順を思い出すために無駄な時間を使っている気がするので、手順を自分のためにもメモしつつ、使ったフリーウェアを紹介します。


1. MPEG4形式のファイルをAVI形式のファイルに変換


xacti で撮ったビデオのファイル形式が MPEG4 で、後述する Windows ムービーメーカーで編集できる形式が AVI なので、MPEG4 -> AVI の変換をおこないます。


以前は、MPG2AVIというフリーウェアを使っていたのですが、なぜか動かなくなっており、しかもダウンロード元のページがなくなってしまっていたので、


» Free MP4 to AVI Converter 1.3 - Convert MP4, M4V, MP4V files to AVI or MPEG, iPod MP4 to AVI converter - Jacek Pazera


に切り替えました。


MPEG4 -> AVI の変換にしか使わないので、マニュアルを読むことなく操作できましたが、もっと高度なことがやりたい方は適当にググッてみてください。


2. DVDから音声を抽出


映画のDVDから音声を切り出してくるために僕がいつも使っているのが、


» Audacity: Free Audio Editor and Recorder


です。


DVD を再生し、Audacity の音源を選ぶセレクトボックスで「Stereo Mix」を選択し録音したあと、wav 形式で書き出します。


3. 動画や音声ファイルを編集


動画や音声ファイルを編集するときに使うのが、Windows ムービーメーカー。Windows XP に最初から入っていたソフトウェアですが、こいつが結構便利で使えるのです。


以上のフリーウェアがあれば、とりあえずそれっぽい動画を作ることができます。


番外として、「スターウォーズ好き」にしか役立たない情報ですが、


» スターウォーズのライトセーバー動画を無料ソフトウェアだけで自作する方法 : 僕は発展途上技術者


を紹介しておきます。


実は上記記事、rails や ruby、プログラマー向けの話題が多い僕のブログの中にあって、他を圧倒してダントツで読まれている記事だったりするのです。


passenger を使うときは .htaccess を削除!

サーバー周り、環境構築でここ数日よくはまる。


以前はまったことがあったのに、またまた同じところではまってしまった自分に厳重注意。


passenger を使うときは .htaccess を削除


皆さんもはまってます。


» Passenger を使う時は public/.htaccess に注意! - yuum3のお仕事日記

» Passenger(mod_rails)と.htaccessではまる - 仙台Rails社長


Ubuntu Hardy に ImageMagick と RMagick をインストールする

わかってしまえば超簡単なのですが、2時間近くはまってしまいました。


Slicehost 上の Ubuntu Hardy に ImageMagick と RMagick をインストールするには



% sudo aptitude update

% sudo aptitude install imagemagick libmagick9-dev

% sudo gem install rmagick


であっさり出来てしまうのですが、最初の sudo aptitude update をやっていなかったために、sudo gem install rmagick で



Building native extensions. This could take a while...

ERROR: Error installing rmagick:

ERROR: Failed to build gem native extension.


/usr/bin/ruby1.8 extconf.rb install rmagick

checking for Ruby version >= 1.8.2... yes

checking for cc... yes

checking for Magick-config... no

Can't install RMagick 2.9.1. Can't find Magick-config in /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin


というエラーに悩まされ、ああでもこうでもないと散々パッケージのインストール、アンインストールを繰り返してしまいました。


sudo aptitude update は、man の記述



Updates the list of available packages from the apt sources (this

is equivalent to "apt-get update")


の通り、aptitude でインストールするパッケージ情報を最新に更新するコマンドです。これまで特に更新しなくても問題が起こらなかったため、甘く見てました。今度からは aptitude install でなにかパッケージをインストールするときは、事前に必ず aptitude update をおこなうことにします。


aptitude update 超重要ということはもっと認識されるべきです。(どこにもあまり書かれてない)


あと、sudo aptitude install imagemagick libmagick9-dev がなにごともなく通っているように見えて、ImageMagick が正常にインストールされている、と勝手に思い込んでしまったことも問題がどこにあるかわからなくなってしまったことの原因。


ImageMagick がインストールされているかどうかは、



% which convert

/usr/bin/convert


で確認できるということが、インストールがうまくいった後わかりました。


HTMLカラーコードで表された色を濃く(暗く)する Javascript

任意に指定された HTML カラーコードで表された色と、それを少し濃くした色とのペアを取得するという必要にせまられた。これを実現する Javascript のコードを探したのですが、適当なものがみつからなかったので自分で書いてみました。


エントリー末尾の Javascript コードを読み込み、


darken('ff0000', 0.8)


のように darken 関数を呼んでください。2つ目の引数は濃くする度合いで、1に近いほど濃くする度合いは弱く、0に近いほど度合いが強くなります。


以下、実際どのように濃くなるかの例です。


  ff0000

  darken('ff0000', 0.8) = cc0000


  ffccff

  darken('ffccff', 0.8) = cca3cc


» Miscellaneous : True Color Darkening and Lightening / The JavaScript Source


のコードを参考にしました。


上記は逆数を取ったりとちょっとややこしいことをしているのですが、#ff0000 のような原色をうまく変換してくれなかったので、


» Darken and lighten color? - Usenet Forums




To lighten, increase RGB values by 10% each. To darken, decrease RGB values by

10% each. Maybe replace 10 with whatever the "certain amount" is.


(RGBの各色を10%ずつ増やせば色を薄く、10%ずつ減らせば色を濃くできる)


という発言を参考にして書き直しました。


不備があったり、もっと良い方法がありましたら、コメントなどでお知らせください。



世界中のどこからでもラジコンを遠隔操作 - JokerRacer

あとで読むフレッシュリーダーを開発されたサイドフィードの赤松さんに誘っていただき、一ヶ月ほど前から参加しているプロジェクトなのですが、これがかなり良い感じで進行しています。


いろいろ説明するより見てもらった方が早いです。



Linux サーバーを積んだラジコンを無線経由でインターネットに接続し、iPhone から操作!


車の前面に搭載されたカメラからリアルタイムに配信される動画が映し出されているので、ネットにつながりさえすればラジコンが世界中のどこにあっても、また操作する側も世界中のどこにいても可能なのです。(理論的には、という話ですが。。。)


ラジコンのスピードに比べて、オンボードカメラから映し出される動画から感じられる体感速度が超高速に感じられ、テンションがあがります。


速く数台を表で走らせ、競争したい!


詳しい情報は、以下のリンク先にあります。


» Joker Racer - remote drive our real racing car


» iPhone からラジコンを操作してみる : a++ My RSS 管理人ブログ


長野新幹線に乗っている間に Rails プラグインを作ってみる

東京 - 長野間は約1時間40分。その間に Rails プラグインを作り、公開して、ブログまで書けるかやってみました。


作るプラグインはとても簡単。


帳票などの機能を作っていると、日付や時刻を年度で考えなければならない、ってときがあります。

そこで、DateやTimeクラスを拡張し、fiscal_yearというメソッドを追加して、



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

=> 2008

>> Date.new(2009, 4, 1).fiscal_year

=> 2009


のように年度を返すようなことをやっていたのですが、これをプラグイン化してみました。


13:24 東京駅出発。


パソコンをリュックから取り出し、準備万端。


上野駅到着。


script/generate plugin fiscal_year


でプラグインのひな形を作成。


う、emobile つながらない。ま、いいや。とりあえずすでに config/initializers 以下に置いて利用していたコードをコピーします。


ほとんどコピペですむので早くもプラグイン完成。



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

NoMethodError: undefined method `fiscal_year' for Tue, 31 Mar 2009:Date

from (irb):1


ありゃ NoMethodError。


init.rb に



require 'fiscal_year'


と書き忘れてました。



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

=> 2008

>> Date.new(2009, 4, 1).fiscal_year

=> 2009


OK。ほぼ完成。


README を書く。


大宮駅でやっと emobile つながった。


github にレポジトリを作り、表示された以下の指示の通りに実行。



mkdir fiscal_year

cd fiscal_year

git init

touch README

git add README

git commit -m 'first commit'

git remote add origin git@github.com:champierre/fiscal_year.git

git push origin master


git push origin master で、公開準備も整った。


写真をぱしゃり。


20090403135648.jpg


サンプルアプリから、githubに置いたプラグインをインストールして実行してみる。



script/plugin install git://github.com/champierre/fiscal_year.git


テストを書き足す。


» The Complete Guide to Rails Plugins: Part II | Ruby on Rails for Newbies


を参考に。


A surprisingly large number of plugins have no tests at all.


と揶揄されている。僕は書くぞー。


なんの進展もないまま高崎に着いちゃった。


山がみえてきた。トンネルも多いし、これはやばい。emobile 切れそう。


軽井沢につくころ、ようやくテストが通った。


テストの冒頭に書く



require 'test/unit'

require 'test/test_helper'

require File.dirname(__FILE__) + '/../lib/fiscal_year'


あたりでつまづいていた。


レポジトリに再度プッシュ、サンプルアプリからもう一回プラグインをインストールして、テストまで通るか試す。



% script/plugin install git://github.com/champierre/fiscal_year.git

Initialized empty Git repository in /Users/ishihara/rails/sample/vendor/plugins/fiscal_year/.git/

remote: Counting objects: 19, done.

remote: Compressing objects: 100% (15/15), done.

remote: Total 19 (delta 1), reused 0 (delta 0)

Unpacking objects: 100% (19/19), done.

From git://github.com/champierre/fiscal_year

* branch HEAD -> FETCH_HEAD

% cd vendor/plugins/fiscal_year

% rake test

(in /Users/ishihara/rails/sample/vendor/plugins/fiscal_year)

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:lib:test "/Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/fiscal_year_test.rb"

Loaded suite /Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader

Started

..

Finished in 0.00118 seconds.


2 tests, 2 assertions, 0 failures, 0 errors


ok。完成。


残り時間は急いで、このエントリーの下書きを書く。酔いそう。


エントリーも完成。


15:04 長野駅到着。


FiscalYear プラグインは以下で公開しています。


» champierre's fiscal_year at master - GitHub


「かなぶん」iPhone 版クローズドベータのご案内

「かなぶん」というゲームを作りました。いまから3年前です。


» かなぶん(α版) - 僕は発展途上技術者 2.0


残念ながら、ウノウ退社とともにサイトはクローズしたのですが、昨年 id:Kanta さんに全面的に協力いただいて、Ruby on Rails 版で復活しました。


» かなぶん。


» かなぶん。公開中。 - KCLAB


そして、今、同じ id:Kanta さんに iPhone 版を開発いただいており、クローズドベータテストを開始しました。


僕を個人的に知っている方に限らせていただくのですが、iPhone または iPod Touch を持っていて、試してもいいよ、という方がいましたら、僕宛に UDID を送ってください。


UDID の調べ方については


» iPhone/iPod Touch の UDID(Unique Device Identifier) の調べ方 : 僕は発展途上技術者


を参考にしてください。


photo.jpg


日付のカレンダー入力を可能にする calendar_date_select プラグイン

日付の入力は、プルダウンよりもカレンダーから入力したほうが楽です。特に日付に加えて時刻まで入力する場合にはなおさらです。


calendar_date_select はそのカレンダー入力を可能にする Rails プラグイン。prototype.js ベース、Javascript で書かれたカレンダーピッカーと連動します。


» calendardateselect - Google Code


ただ、日本語環境で使用するには多少手を入れることが必要です。その手順も含め、Rails 2.3 での導入方法を記しておきます。


追記

calendar_date_select プラグインを fork し、以下延々と書き記した追加点を含めておきました。せっかちな方は、



% script/plugin install git://github.com/champierre/calendar_date_select.git


で calendar_date_select + Japanese support プラグインをインストールし、README_JA の指示に従ってください。


» champierre's calendar_date_select at master - GitHub


インストール


まず本家ページの説明どおり、gem でのインストールを試みて使用してみようとしたところ、



undefined method `calendar_date_select_tag' for #


というエラーがでます。検索して調べてみたところ、同様の問題に対する解決方法として、プラグインでのインストールが推奨されていたので、



% script/plugin install git://github.com/timcharper/calendar_date_select.git


でインストールします。


layout ファイルに、



<%= javascript_include_tag :defaults %>

<%= calendar_date_select_includes "red" %>


カレンダーを表示したい部分には、



<% form_for(@model) do |f| %>


で囲っている場合には



<%= f.calendar_date_select "date_and_time", :time => true, :popup => :force %>


そうでない場合には、



<%= calendar_date_select_tag "model[date_and_time]", Time.now, :time => true, :popup => :force %>


といったように記述することで、以下のようなカレンダー入力が可能となります。


calendar.png


カレンダーアイコンをクリックすればカレンダーがテキストフィールドの下に開きます。


calendar2.png


各オプションの役割を知るには、CalendarDateSelect Demoを参考にするとよいでしょう。テキストフィールド内の自由入力を許してしまうと、日付フォーマットのチェックが必要になってしまうので、これを禁止してしまう :popup => :force をつけるのがおすすめです。


さて、これでひとまず動作はするのですが、このままだと日付のフォーマットやインターフェースが英語のままで具合が悪いです。順に日本語化していきます。


表示の日本語化


public/javascripts/calendar_date_select/locale 以下に ja.js というファイルを新規作成し、以下をそのままコピー & ペーストします。



次に、layout ファイル内の記述を



<%= javascript_include_tag :defaults %>

<%= calendar_date_select_includes "red", :locale => 'ja' %>


のように変更、:locale => 'ja' を付け足しています。


これで曜日などの表示が日本語化されるはずです。


日付フォーマットの日本語化


2009/01/31 13:30 のような YYYY/mm/dd HH:MM というフォーマットを日本式とみなします。


別の形式を使いたい場合には、以下の説明を適当に読み替えてください。


public/javascripts/calendar_date_select 以下に format_japanese.js というファイルを新規作成し、以下をそのままコピー & ペーストします。



次に、config/environments.rb に以下を追記します。



以上で日付のフォーマットも変更できました。


微調整をいくつか


カレンダー内の時刻のプルダウンとそれに続く 現在 | OK | 閉じる のメニューの一行が長くなってしまって、レイアウトが乱れてしまいます。


そこでこれを修正するため、public/javascripts/calendar_date_select/calendar_date_select.js の 220 行目に br タグを挿入する処理を追加します。



次に、細かい話なのですが、IE などのブラウザでカレンダーアイコンにカーソルをあてると、「Calendar」とツールチップに表示されます。これを「カレンダーから入力」という日本語表示に変更します。


vendor/plugins/calendar_date_select/lib/calendar_date_select/form_helpers.rb の 202 行目に alt 属性を追加します。



以上、日本語化した結果は以下の通り。


calendar3.png


DateHelperJa プラグインを Rails 2.3.2 上で動作確認

date_select/datetime_select を日本語表示させる Rails プラグイン DateHelperJa が Rails 2.3.2 でも動作することを確認しました。


Rails のバージョンがあがるたびにテストアプリケーションを作って、DateHelperJa プラグインをインストールして、date_select を使うようなモデルを作成して、といったルーチンワークをいちいちおこなうのは面倒です。


そこで、Rails 2.3 より使用可能になったアプリケーションテンプレート機能を使い、以下のコマンドを実行することで即座にサンプルアプリを作成できるようにしておきました。



% rails sample -m http://github.com/elm200/date_helper_ja/raw/master/templates/date_helper_ja.rb


参考:

» DateHelperJa プラグインで date_select/datetime_select を和暦に対応させる : 僕は発展途上技術者


iPhone/iPod Touch の UDID(Unique Device Identifier) の調べ方

iPhone アプリの adhoc 版を配布するにあたり、配布先 iPhone/iPod Touch の UDID(Unique Device Identifier)が必要になります。


その UDID の調べ方。


1) iPhone または iPod Touch を Mac に接続する。

2) iTunes を起動(または自動起動)し、左メニューのデバイスの箇所に現れる iPhone/iPod Touch アイコンをクリック。

3) 概要タブの「シリアル番号:」の部分(番号ではなく太字の部分)をクリックすると、「識別子:」に変わります。afc5fb... といったやや長い文字列が UDID です。

4) この文字列の上にカーソルをあわせたまま、Mac なら Command + c、Windows なら Ctrl + c でコピー。

5) メールなどに Command + v (Mac)または Ctrl + v (Windows)でペーストします。


3) の部分がややわかりにくいので、動画キャプチャを載せておきます。



プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ