エアサスツーリング車の携帯ポンプ選び

自転車、カメラ(≠写真)、自作PCの3つを共通の趣味にしてる人って何気に多い気がします。

・切った貼ったができなくてもハードウェアのアセンブルが簡単でたのしい
・楽器のように習熟が困難でない(楽器はそれ以外にも読譜スキルとか練習環境の壁がある)
・車やバイクに比べたら知識もお金もいらない趣味である
・チームスポーツと違ってぼっちでも遊べる

友達もお金もセンスもない人でも遊べるね!
というような共通点があると思われ。
もちろんそれが悪いこととは思わないし、僕もそんな貧乏趣味を生活の糧にしているわけです。

              • -

■今回は自転車の話題。
僕はタイヤが6インチとか8インチとかの極小径自転車というのをメインに使っているんですが、長距離自走用に新しい自転車を買うことにしました。初のリカンベント、現在納車待ち。夏前には地元で行われる自転車イベントへ出場ついでに、実家に帰省しよかなと計画中。

長距離の遠征計画ということで
・荷物はできるだけ減らしたい
・しかしトラブルに対処できるだけの装備は必要
そんな二律背反の落としどころを探る楽しい妄想を日夜繰り広げているところです。


■自転車でトラブルといえばまずパンクです。
トラブルといってもパンクは異常事態でもなんでもなく普通に起こりえることなので、遠出はパンクする前提で装備を見積もります。

具体的に何を持ってくかというと
・タイヤレバー(ホイールからタイヤを外す工具)
・替えチューブ
・空気入れ
の3つが必要になります。

穴が開いた場所をゴムパッチで塞いで修理するやり方も一般的なんですが、
・出先では「チューブを水に沈めて穴の開いた場所を探す」作業が困難
・小さい穴なら補修可能だが、バルブ付け根の損傷やチューブが大きく裂けたようなパンクには対処できない
・素人がやってもうまく修理できてないことがある
・成功してもパッチの分だけホイールの重量が増加、重心も変わる

というようなデメリットがあるので、僕はチューブごと交換する派です。リカンベントは前後のホイールが異径のものも多いんですが、替えチューブを二種類持ち歩かなくてはいけないので遠征に向いていないと思い、新車は前後同径のものを選んで買いました。
同行者と部品の規格を合わせとけば補修部品が使いまわせるので、さらに荷物を減らせますね。


■次。自転車用の空気入れにもいろいろあります。
ざっくり、フロアポンプ、携帯ポンプ、Co2ボンベの三種類です。
フロアポンプは普通の空気入れですね、重くて大きいので遠征装備にはなりません。
Co2ボンベはレース用の機材です。一回使ったら再充填できないので失敗できないです。こんなの不安で使えないですね。

それで携帯ポンプです。しかしこれほとんどが応急用なので空気を入れるのが大変です。なんていうかマッチ無しで火を起こすのに似ている。自転車のタイヤってけっこう高圧なんですが、並の携帯ポンプでは規定の圧力まで空気を入れるのは難しく、圧力計もついてないので空気圧管理がいい加減になります。

補給所や自転車屋までとりあえず走れればいいというのならそれで構わないのですが、補給なしで長距離を走るからこそしっかりした空気圧、ベストな状態にして再スタートしないと途中で疲れてしまいます。

・フロアポンプ並とはいかなくとも高圧を楽に入れられる性能
・圧力計できちんと空気圧管理
・軽さ小ささはこの際二の次

ということでフロアポンプに近い携帯ポンプを選定してみました。
TOPEAK ターボモーフG
http://www.topeak.jp/pump/ppf02100.html


■第4のポンプ、サスポンプ。
さて、さっき自転車用のエアポンプは3種類と書きましたが、もうひとつサスポンプというのがあります。自転車のサスペンションには金属バネや樹脂のほかにエアサスというのがありまして、これは空気圧を調整して硬さを変えられる仕組みになっています。今度の新車にはこれがついてまして、ここも出先での調整用にポンプを持ってく必要があります。

実はエアサス付きの自転車は初めてではないのでサスポンプは持っているのです。
TOPEAK ポケット ショック DXG
http://www.topeak.jp/pump/ppm04700.html

サスペンション用のポンプは大きさが携帯ポンプと同等、重さはそれ以上、バルブは米式(=シュレーダー)の一種類のみという仕様です。
米式バルブは自動車や原付のタイヤに使われているもので、自転車用の米式チューブももちろんあり、サスポンプをこれらに接続することもできるのですが、タイヤ用ポンプに比べて一回のストロークで注入できる空気の量がものすごく少ないので、パンク修理に使ったら日が暮れてしまいます。

うちの自転車のタイヤは皆米式バルブで統一してあります。
ご覧のとおり圧力計はサスポンプに付いているので圧調整時にはこっちを繋げば、携帯ポンプに圧力計は要らないかなと思いつつ、あったほうが便利かなとも思ったりして。

相変わらず纏まらない文章ですが、「買うまでが楽しい」を満喫しているこの頃です。

ステディカム自作 その1(?)

しばらくぶりのブログ。

ステディカムという機材があります。
カメラを持って走ってもクレーンで吊ったようなぶれのない滑らかな映像が撮れる。カメラの水平を保つジンバルと、サスペンションアームを組み合わせた構造のもの。(ステディカムは商標なので本当はカメラスタビライザと呼ぶらしい。)
http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%83%87%E3%82%A3%E3%82%AB%E3%83%A0

最近は小型デジカメ用に8k円くらいの簡易版が売られてて、面白そうだなーと思ったのだけど評価を見ると過度の期待は禁物っぽい。同じ8k円かけるなら自作するほうが良いものができるのでは、とむくむくと思ったのでした。

              • -

自作している人はけっこういるようなんだけど、本家に迫るクオリティに達しているものは殆どないみたいです。

それであちこち作例を見ていて疑問だったのが、本家大型カメラ向けのものと小型カメラ向けの簡易版とではそもそも設計思想が違うっぽいことと、両者のウェイトバランスがどうなってるのかわかんないなってことです。

ビデオスタビライザに求められる機能はたぶん3つ。
1.支持点が傾いてもカメラを水平に保つ
2.支持点を移動(加減速)させてもカメラを水平に保つ
3.歩行の上下動を吸収する

1に対してはカメラをジンバルの上に載せ、支点より下にバラスト(錘)を配置することでやじろべえ状にすれば、自動的に水平を保てます。バラストを重くするほど水平を保とうとする力は強く働くはずだけど、それは静止している時の話。
重心が支点上になく、バラスト寄りにあるってことは2の状況、支点を前後左右に動かした場合にバラストは遅れてついて来るのでジンバルは傾いてしまい、しかもそれから振り子のように揺れ続けてしまいます。
これを防ぐには両端の重さを揃えて支点上に重心を重ねてしまえばいいのですが、重量がつり合ってしまうと、今度は風などの少しの力で自由に回転してしまい水平が保てません。

たぶんどんなにうまくウェイトバランスを調整しても、1と2への対策は相反してしまうんじゃないだろか・・・、というのが始めに感じた疑問です。
小型カメラ向けのスタビは1を重視してるように見えます。対して大型カメラ向けのステディカムは重心が支点寄りにありそう。うーん・・・眺めててもわからん。

それで、もっと根本的に解決する方法がないっかなと素人(高校物理は2でした)なりに考えた結果がこれだよ。
A.ジャイロ搭載案
B.リンク搭載案

たぶん誰もやってないよね。

ジャイロはうちに余ってるジャンクのHDDがぴったり合いそうだなーとか思ってます。大質量のプラッタが低振動低騒音で高速回転、しかも12Vや5Vで動くからバッテリ駆動もカンタン。

通電したHDDを手で持って回してみるとかなりのジャイロ効果が体感できます。
http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AD%E5%8A%B9%E6%9E%9C

              • -

ちなみに3の揺れは、本家ステディカムではサスペンションとカメラマンの筋力が担当している機能ですが、もひとつ重要なのがシステム全体の質量じゃないかなと思います。軽いカメラだとふらふら揺れてしまうので、ある程度の重さがあれば低減できる見積もりです。

金属バネやエア、または永久磁石の斥力を利用したサスペンションや、輪ゴムでショックマウントを自作というのも考えましたが、ダンパーのない単純構造ではいつまでも揺れ続けるばね運動になってしまいそう(運動を熱に変えていかないと駄目ですよね)なのと、カメラの重さが変わったときに調整がやり直しになるので却下です。
気分だけのサスペンションはノーセンキューで。

シャットダウンタイマー

遊びで作った簡易タイマーです。今回の例では指定時刻にシャットダウンします。
そのものずばり「指定時刻にコマンドを実行します」という説明のついたatというコマンドもあるものの、あれってタスクにコマンドを登録するだけのものなのでした。

そこでタスクを使わない単純タイマーに何のメリットがあるかというと、証拠が残らない(笑

−−−−−−−−ここから−−−−−−−−
@echo off
setlocal
set /P TIMER="タイマー時刻を入力してください(HH:MM):"

title ShutdownTimer %TIMER%

:LOOP
for /F "tokens=1,2 delims=:" %%i in ("%TIMER%") do set HH=%%i&&set MM=%%j
set /A TIMER=%HH%*60+%MM%
for /F "tokens=1,2 delims=:" %%i in ('time /t') do set HH=%%i&&set MM=%%j
set /A TIME_ABS=%HH%*60+%MM%
if "%TIME_ABS%" GEQ "%TIMER%" goto OVER
set /A WAIT=%TIMER%-%TIME_ABS%
if "%WAIT%" GEQ "2" ping -n 60 localhost>nul
goto LOOP

:OVER
echo タイマー時刻です。
shutdown /S /T 0
−−−−−−−−ここまで−−−−−−−−

■せつめい
・現在時刻≧指定時刻になったらコマンド実行
・そうでない場合はループして再度比較
・頻繁に比較していてもリソースの無駄なのでWAITをつける
・現在時刻と指定時刻の差からポーリング間隔を調整
(・「時:分」形式を分に変換して取り扱う。=60*時間+分)

■制限事項
・午前0時をまたぐ設定は不可。
dateコマンドを併用すれば設定可能。
1日=1*24*60分
1時間=1*60分
という感じで分に直してつかう。

テキストファイル内の重複行を取り除いて別ファイルへ出力する

仕事でcsvファイルの編集することになり作りました。
Oooでマクロ組んでー、と思ったけどちょっと調べたくらいじゃ全然わからないのでいつものようにバッチファイルで。資料作成とか、たまにしかやらないのでなかなか勉強しない。必死に覚えてもバージョンアップで別物になったりするし。

−−−−−−−−ここから−−−−−−−−
@echo off
title テキストファイル内の重複行を取り除いて別ファイルへ出力する
setlocal
cd /D "%~dp0"
set INFILE=%1
set OUTFILE=%INFILE:~0,-4%_%DATE:/=%.csv

if "%INFILE%"=="" goto ERROR
copy nul %OUTFILE%
for /F "tokens=* delims=," %%i in (%INFILE%) do call :SUB "%%~i"
for /F "tokens=3" %%i in ('find /V /C %OUTFILE% "#$%&ありそうない文字列"') do echo 出力行数:%%i
pause
EXIT

:SUB
set LINE=%~1
find %OUTFILE% "%LINE:"=%">nul
if not errorlevel 1 goto :EOF
echo>>%OUTFILE% %LINE:"=%
goto :EOF

:ERROR
echo ファイルが指定されなかったか、無効なファイルです。
echo 使い方:処理したいファイルを本バッチと同じフォルダに置き、本バッチへドロップしてください。
pause
EXIT
−−−−−−−−ここまで−−−−−−−−

■せつめい
・ファイルを一行ずつ読み込んで出力。
・出力ファイルを検索して同じ内容があったら出力しない。
という単純構造。

おまけで、出力したのが何行だったかカウント機能つき。こっちは
http://fpcu.on.coocan.jp/dosvcmd/bbs/log/findfindstrsort/1-0656.html
からの丸写しです。

もっと時間がかかると思いきや、7000行のテキストから1500行取り出すのに数秒程度でした。ダメ文字があること以外は案外実用になるかも。

ドライバやアプリを7zSFX化する汎用バッチファイル

前回紹介したAMD Catalystの統合化と同じ要領で、ほかのドライバファイルやアプリも固めてみます。

ポータブル版のブラウザを固めたりすると面白いです。コマンドを実行後に展開されたファイルは全部消えるので、実行したPC上に痕跡を残さず、毎回新しい状態で使え、コピーして実行して終わったら削除という手間がなくなります。ファイルサイズも小さくなるのでUSBメモリに入れるにもよし。一時ファイルはローカルディスクに展開するので、光学メディアなどのROMストレージや、速度の出ないメディアから直接実行するのにもよし。


■ほかに用意するもの
・7z_Extra
http://sevenzip.sourceforge.jp/download.html
7zipのダウンロードページにある「7z形式のライブラリ、インストーラ用のSFXモジュール、FAR Manager用のプラグイン」と書かれているもの。これを使うと7zip形式の自己解凍(自動実行)書庫をコマンドラインから作ることが出来ます。解凍すると「7z920_extra」というような名前のフォルダが出てくるので、今回作成するバッチファイルと同じフォルダに配置します。

■つかいかた
バッチは使用前に開いて編集。テンプレに従って出力ファイル名、パッケージ化したいファイルのあるフォルダのフルパス、実行したいコマンドを記述して保存、実行します。
ほかに「WAIT=」を設定すると、指定コマンド実行後にウェイトをつけて自己消去する前に少し待つようにできます。10ならping10回分待ちます。


デバイスドライバ
−−−−−−−−ここから−−−−−−−−
@echo off
title MakeSFX_ドライバ用
setlocal
cd /D "%~dp0"
call :CLEANUP

:7Z_SETUP
for /D %%i in ("7z*_extra") do (
copy "%%~i\7z*.*" "*.*"
echo %PROCESSOR_IDENTIFIER%|find "64">nul
if not errorlevel 1 copy "%%~i\x64\7z*.*" "*.*"
)

:SETUP
set FILENAME=ASUS Xoner DG XP 5.12.8.1794
set TARGETDIR=C:\Documents and Settings\Owner\My Documents\ダウンロード\ASUS\Xoner DG\PCI-DG-110512-5.12.8.1794(XP-FR)
set COMMAND=Setup.exe -s
call :COMPRESSION

set FILENAME=ASUS Xoner DG Vista 6.12.8.1794
set TARGETDIR=C:\Documents and Settings\Owner\My Documents\ダウンロード\ASUS\Xoner DG\PCI-DG-110512-6.12.8.1794(Vista-FR)
set COMMAND=Setup.exe -s
call :COMPRESSION

set FILENAME=ASUS Xoner DG Win7 7.12.8.1794
set TARGETDIR=C:\Documents and Settings\Owner\My Documents\ダウンロード\ASUS\Xoner DG\PCI-DG-110512-7.12.8.1794(W7-FR)
set COMMAND=Setup.exe -s
call :COMPRESSION

:OVER
call :CLEANUP
EXIT

:COMPRESSION
del /Q "7z_%FILENAME%.exe" "TEMP.7z" "%TARGETDIR%\*.url" "%TARGETDIR%\*.lnk" "%TARGETDIR%\*.bat"
echo>CONFIG.TXT ;!@Install@!UTF-8!
echo>>CONFIG.TXT ExecuteFile="SETUP.CMD"
echo>>CONFIG.TXT ;!@InstallEnd@!
echo>SETUP.CMD @echo off
echo>>SETUP.CMD echo %FILENAME%をインストール中...
echo>>SETUP.CMD %COMMAND%
if not "%WAIT%"=="" echo>>SETUP.CMD ping -n %WAIT% localhost^>nul
copy /Y "SETUP.CMD" "%TARGETDIR%\SETUP.CMD"
start "" /B /WAIT 7zr a -t7z -mx9 TEMP.7z "%TARGETDIR%\*"
copy /B 7zS.sfx + CONFIG.TXT + TEMP.7z "7z_%FILENAME%.exe"
del /Q "CONFIG.TXT" "SETUP.CMD" "%TARGETDIR%\CONFIG.TXT" "%TARGETDIR%\SETUP.CMD" "TEMP.7z"
set FILENAME=
set TARGETDIR=
set COMMAND=
set WAIT=
goto :EOF

:CLEANUP
del /F /Q "7z*dll" "7z*sfx" "7z.exe" "7zr.exe"
goto :EOF

rem ↓↓テンプレ
set FILENAME=
set TARGETDIR=
set COMMAND=
set WAIT=
call :COMPRESSION
−−−−−−−−ここまで−−−−−−−−


■ポータブル版アプリやベンチマーク
−−−−−−−−ここから−−−−−−−−
@echo off
title MakeSFX_ベンチマーク
setlocal
cd /D "%~dp0"
call :CLEANUP

:7Z_SETUP
for /D %%i in ("7z*_extra") do (
copy "%%~i\7z*.*" "*.*"
echo %PROCESSOR_IDENTIFIER%|find "64">nul
if not errorlevel 1 copy "%%~i\x64\7z*.*" "*.*"
)

:SETUP
set FILENAME=Bench_MHF
set TARGETDIR=C:\Program Files\CAPCOM\Monster Hunter Frontier Benchmark
set COMMAND="Monster Hunter Frontier Benchmark.exe"
call :COMPRESSION

set FILENAME=Bench_MHF
set TARGETDIR=C:\Program Files\CAPCOM\Monster Hunter Frontier Benchmark Rev.1
set COMMAND="Monster Hunter Frontier Benchmark.exe"
call :COMPRESSION

set FILENAME=Bench_MHF大討伐
set TARGETDIR=C:\Program Files\CAPCOM\Monster Hunter Frontier Benchmark Rev.2
set COMMAND="Monster Hunter Frontier Benchmark.exe"
call :COMPRESSION

:OVER
call :CLEANUP
EXIT

:COMPRESSION
del /Q "7z_%FILENAME%.exe" "TEMP.7z" "%TARGETDIR%\*.url" "%TARGETDIR%\*.lnk" "%TARGETDIR%\*.bat"
echo>CONFIG.TXT ;!@Install@!UTF-8!
echo>>CONFIG.TXT ExecuteFile="SETUP.CMD"
echo>>CONFIG.TXT ;!@InstallEnd@!
echo>SETUP.CMD @echo off
echo>>SETUP.CMD title %FILENAME%
echo>>SETUP.CMD echo このウィンドウは閉じないでください。
echo>>SETUP.CMD %COMMAND%
if not "%WAIT%"=="" echo>>SETUP.CMD ping -n %WAIT% localhost^>nul
copy /Y "SETUP.CMD" "%TARGETDIR%\SETUP.CMD"
start "" /B /WAIT 7zr a -t7z -mx9 TEMP.7z "%TARGETDIR%\*"
copy /B 7zS.sfx + CONFIG.TXT + TEMP.7z "7z_%FILENAME%.exe"
del /Q "CONFIG.TXT" "SETUP.CMD" "%TARGETDIR%\CONFIG.TXT" "%TARGETDIR%\SETUP.CMD" "TEMP.7z"
set FILENAME=
set TARGETDIR=
set COMMAND=
set WAIT=
goto :EOF

:CLEANUP
del /F /Q "7z*dll" "7z*sfx" "7z.exe" "7zr.exe"
goto :EOF

rem ↓↓テンプレ
set FILENAME=
set TARGETDIR=
set COMMAND=
call :COMPRESSION
−−−−−−−−ここまで−−−−−−−−

AMD Catalystをひとつに統合する 2/2回 ファイル統合編

前回のつづきです。Catalystのインストールファイルを統合して7zipを使った自己解凍(+自動実行)書庫に仕上げます。インストーラの展開、ファイルの統合、7zipで固めなおしをセミオートで実行できるバッチファイル作って行います。

■ほかに用意するもの
・7z_Extra
http://sevenzip.sourceforge.jp/download.html
7zipのダウンロードページにある「7z形式のライブラリ、インストーラ用のSFXモジュール、FAR Manager用のプラグイン」と書かれているもの。これを使うと7zip形式の自己解凍(自動実行)書庫をコマンドラインから作ることが出来ます。解凍すると「7z920_extra」というような名前のフォルダが出てくるので、今回作成するバッチファイルと同じフォルダに配置します。

■つかいかた
AMD Catalyst統合.bat」「SETUP.CMD」「7z920_extra(フォルダ)」「(Catalystの各インストールファイル)」を同じフォルダ内に置いてバッチを実行。

↑最初の状態

↑前回紹介した自動ダウンローダを実行するとこうなる。一つ一つダウンロードしてきてフォルダに入れてもいい。この状態で統合用バッチを実行する。

■統合用バッチファイル(「AMD Catalyst統合.bat」というような感じで保存する)の中身
−−−−−−−−ここから−−−−−−−−
@echo off
title AMD Catalyst統合
cd /D "%~dp0"
call :CLEANUP
set TARGETDIR=.\TEMP

:FILECHECK
set VER=
for %%i in (*-*_*ocl.exe) do for /F "tokens=1,2 delims=-_" %%x in ("%%i") do set VER=%%x.%%y
cls
if not "%VER%"=="" goto EXTRACT
echo ファイルが見つかりませんでした。
pause
EXIT

:EXTRACT
echo フォルダ内検索結果:Ver=%VER%
echo.
echo ファイル展開ウィザードが順番に開くので、ファイルの展開を行ってください。
echo (ファイルの抽出が完了するとインストールウィザードは自動的にキャンセルされます。)
for %%i in ("*-*_*.exe") do (
"%%~i"
ping -n 5 localhost>nul
taskkill /F /FI "WINDOWTITLE eq Catalyst インストールマネージャー" /T>nul
ping -n 6 localhost>nul
taskkill /F /FI "IMAGENAME eq InstallManagerApp.exe" /T>nul
)

:COPY
echo.
echo ファイルの統合中...
for /D %%i in (
"C:\ATI\Support\*-*_*_raid"
"C:\ATI\Support\*-*_*_ahci"
"C:\ATI\Support\*-*_*_sb"
"C:\ATI\Support\*-*_*_ocl"
"C:\ATI\Support\*-*_*_lang1"
) do xcopy "%%~i\*.*" "%TARGETDIR%\*.*" /E /V /I /Q /H /R /Y
for /D %%i in (%SystemDrive%\AMD\AMD_Catalyst_*_CAP*) do xcopy "%%i" "%TARGETDIR%\Packages\Apps\AppProfiles" /E /V /I /Q /H /R /Y

:DELETE
echo.
echo 不要コンポーネントの削除中...
rd /S /Q "%TARGETDIR%\Packages\Apps\CatalystRegistration"
rd /S /Q "%TARGETDIR%\Packages\Apps\Turbine"

:INSERT
xcopy "Packages" "%TARGETDIR%\Packages" /E /V /I /Q /H /R /Y

:7Z_SETUP
for /D %%i in ("7z*_extra") do (
copy "%%~i\7z*.*" "*.*"
echo %PROCESSOR_IDENTIFIER%|find "64">nul
if not errorlevel 1 copy "%%~i\x64\7z*.*" "*.*"
)

:SETUP
set FILENAME=ATi Catalyst %VER%.exe
call :COMPRESSION

:OVER
call :CLEANUP
EXIT

:COMPRESSION
del /Q "7z_%FILENAME%" "TEMP.7z" "%TARGETDIR%\*.url" "%TARGETDIR%\*.bat" "%TARGETDIR%\*.log"
echo>CONFIG.TXT ;!@Install@!UTF-8!
echo>>CONFIG.TXT ExecuteFile="SETUP.CMD"
echo>>CONFIG.TXT ;!@InstallEnd@!
copy /Y "SETUP.CMD" "%TARGETDIR%\SETUP.CMD"
start "" /B /WAIT 7zr a -t7z -mx9 TEMP.7z "%TARGETDIR%\*"
copy /B 7zS.sfx + CONFIG.TXT + TEMP.7z "7z_%FILENAME%"
del /Q "CONFIG.TXT" "%TARGETDIR%\SETUP.CMD" "%TARGETDIR%\CONFIG.TXT" "TEMP.7z"
set FILENAME=
goto :EOF

:CLEANUP
for /D %%i in (
"C:\ATI"
"C:\AMD"
"%TARGETDIR%"
) do if exist "%%~i\" rd /S /Q "%%~i"
del /F /Q "7z*dll" "7z*sfx" "7z.exe" "7zr.exe"
goto :EOF
−−−−−−−−ここまで−−−−−−−−

■SETUP.CMDの中身
−−−−−−−−ここから−−−−−−−−
@echo off
echo ATi Catalyst Install...
set OSBIT=
echo %PROCESSOR_IDENTIFIER%|find "64">nul
if not errorlevel 1 set OSBIT=64
"Bin%OSBIT%\ATISetup.exe" -Install -Use "Packages"
ping -n 20 localhost>nul
−−−−−−−−ここまで−−−−−−−−

■かいせつ(前置き) - Catalystインストーラのファイル構造
現行のAMDのドライバは展開すると↓のような構造になってます。

・「Bin」と「Bin64」フォルダに32bit用と64bit用の汎用インストーラが入っています。
・Packagesフォルダ内はAppsとDriversフォルダに分かれており、SBパッケージならSBドライバが、AHCIパッケージならAHCIドライバがここに入っています。


■かいせつ - バッチファイルの動作
見やすいように段階毎にラベルを貼ったので順に解説します。

1.「:FILECHECK」
フォルダ内を検索してドライバファイルのバージョンを変数に格納する(出力するファイル名に反映させます)。

2.「:EXTRACT」
指定した構造に該当するファイル名を全て実行(手動でファイル展開)、ファイルの抽出が目的なので実際のインストールはtaskkillで自動中断する。

3.「:COPY」
ファイルの抽出が完了したら1箇所にコピーして統合する。重ねる順番があり、SBやAHCIなどの補助系を先に、その後にディスプレイ+チップセット、最後にlangパッケージをコピーする。こうしないとメニューが半端に日本語化されたり、一部のパッケージがうまくあたらない状態になる。

4.「:DELETE」
現行バージョンには入っていないけれどゲームの体験版が同梱されている場合がある。不要な場合はPackagesフォルダ内の該当のフォルダを消しておけばインストールされない。

5.「:INSERT」
なぜなのかAMDのサイトからDLできるCatalystにはHDMIオーディオのドライバや、A75チップセット用のUSB3.0ドライバが同梱されていない。これらも統合したい場合にはM/Bメーカーの適当なM/Bのダウンロードページから取ってきたCatalystを展開して、Packagesフォルダ内にある必要なドライバのフォルダを統合用のPackagesフォルダへコピーすればOK。CFXプロファイルもPackagesフォルダに入れておけばインストールされる。

6.「:7Z_SETUP」
7z_xxxExtraフォルダのなかから7zのモジュールをとってくる。バッチを走らせてるOSが64bitなら64bit用のモジュールをつかう。

7.「:SETUP」
7zで圧縮、自己解凍書庫化。ただの自己解凍書庫ではなくて「起動すると一次フォルダへ自己解凍⇒指定したコマンドを実行⇒コマンドが終了したら展開したファイルを消去」という動作を盛り込める。今回は「指定したコマンド」はSETUP.CMDなのでその中に書いた内容が実行され、終わると消える。

1-7の動作の前後にそれぞれ、一時ファイルのクリーンアップを行ってます。


■かいせつ - SETUP.CMDの動作
・OSが32bitか64bitかを判定して利用するインストーラを切り替える
・ATISetup.exe" -Install -Use "Packages"とするとpassiveインストールモードになる。Packagesフォルダ内のパッケージがインストールされる。
・SETUP.CMDの窓が閉じるとすぐに一次ファイルが消えてしまうので、裏でインストールプロセスが残ってる場合に備えて念のために終了までに少しウェイトをいれておく。


同じ要領で他のドライバやアプリケーションも自動実行書庫に仕立てることができます。

AMD Catalystをひとつに統合する 1/2回 最新版自動ダウンロード編

仕事柄異なる構成のPCにOSを一括インストールしなければならず、デバイスドライバは新しいものを一通り収集して揃えています。
さて、そんななかでAMDCatalystドライバは「チップセット+グラフィック」、「SB」、「AHCI」、「RAID」、「言語パック」などのコンポーネント別、さらにそれぞれが「XP用」、「Vista用」、「Win7用」、さらにさらに「32bit」と「64bit」といった感じでばらばらに配布されていてインストールがいちいち面倒ですが、じつはこれ、一つに統合することができます。


■今回紹介する方法でファイルを統合するメリットは

チップセット+グラフィック、SB、AHCIRAID、言語パックなどの必要なコンポーネントが一回の実行で全てインストールできる。
・OSの種類に関わらずひとつのファイルでインストール可能。
・ウィザード抑制しているので無人で自動実行が可能。バッチに組み込んで他のドライバなどと一緒に一括インストールといったこともできるようになる。
・ファイルサイズ大幅減。
(現行の11.9で230MBくらいになります。各ファイルを展開するとわかりますがフォルダ構造や汎用インストーラ部分が共通なのでこのダブり部分が要らなくなるのと、7zで圧縮かけるのでだいぶ小さくできます。)


■ちょっと長くなるので二回に分けて紹介していきます。
一回目の今回はAMDの配布しているドライバファイルを自動でダウンロードするバッチファイルを作ってみます。
次回は収集したファイルを統合するやり方を解説する予定です。


■ほかに用意するもの
curl.exe
http://curl.haxx.se/
CUIでhttpアクセスができるフリーソフトです。OS標準コマンドではファイルのダウンロードが難しかった(ブラウザ経由でダイアログポップ→保存先指定というのは出来そうですがそれでは半手動になってしまう。)ので今回はこれ使います。

■つかいかた
curl.exeと↓の内容のバッチファイルを同じフォルダに置き、バッチを実行します。

−−−−−−−−ここから−−−−−−−−
@echo off
title AMD Catalyst最新版ダウンローダ
setlocal
cd /D "%~dp0"

:LIST_MAKE
copy nul DL_LIST.txt
set YY=%DATE:~2,2%
set MONTH=%DATE:~5,2%
if "%MONTH%" LSS "10" set MONTH=%MONTH:0=%
for /F %%z in ('curl.exe -I -e "http://www2.ati.com" "http://www2.ati.com/drivers/%YY%-%MONTH%_xp32_dd_ccc_ocl.exe"^|find /C "ETag:"') do if "%%z"=="1" goto FILE_FOUND
set /A MONTH=%MONTH%-1
for /F %%z in ('curl.exe -I -e "http://www2.ati.com" "http://www2.ati.com/drivers/%YY%-%MONTH%_xp32_dd_ccc_ocl.exe"^|find /C "ETag:"') do if "%%z"=="1" goto FILE_FOUND
cls
echo サーバーにファイルが見つかりませんでした。
pause
EXIT

:FILE_FOUND
echo>>DL_LIST.txt http://www2.ati.com/drivers/hotfix/catalyst_application_profiles/amd_catalyst_%YY%.%MONTH%_cap1.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/hotfix/catalyst_application_profiles/amd_catalyst_%YY%.%MONTH%_cap2.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/hotfix/catalyst_application_profiles/amd_catalyst_%YY%.%MONTH%_cap3.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/hotfix/catalyst_application_profiles/amd_catalyst_%YY%.%MONTH%_cap4.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/hotfix/catalyst_application_profiles/amd_catalyst_%YY%.%MONTH%_cap5.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_vista32_win7_32_dd_ccc_ocl.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_xp32_dd_ccc_ocl.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_vista64_win7_64_dd_ccc_ocl.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_xp64_dd_ccc_ocl.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_vista_win7_32-64_ccc_lang1.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_xp32-64_ccc_lang1.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_vista_win7_32-64_sb.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_win7_32-64_raid.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_win7_32-64_ahci.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_vista32-64_raid.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_vista32-64_ahci.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_xp32-64_sb.exe
echo>>DL_LIST.txt http://www2.ati.com/drivers/%YY%-%MONTH%_xp32-64_raid.exe

:DL_START
cls
echo 【ダウンロードリスト】(最新版検索結果:%YY%.%MONTH%)
type DL_LIST.txt
for /F "tokens=3 delims= " %%a in ('find /C "http://" DL_LIST.txt') do set PAR=%%a
echo 総数:%PAR%
echo.
echo ダウンロードを開始します。
pause
del /F /Q "*-*_*.exe"
for /F "delims=" %%u in (DL_LIST.txt) do call :DL_SUB "%%u"
del DL_LIST.txt
EXIT

:DL_SUB
set /A NUM=%NUM%+1
cls
echo ファイルのダウンロード中 %NUM%/%PAR%
echo %~1
for %%f in (%~1) do curl.exe -# -R -f -e %%f -o "%~dp0\%%~nf%%~xf" -L %%f
goto :EOF
−−−−−−−−ここまで−−−−−−−−

■かいせつ
しくみはいたって簡単というか、けっこう無理やりで・・・
1.現在の日付から現行の配布バージョンを推測
2011年10月ならば11.10(日付と同じバージョン)と11.9(一ヶ月前のバージョン)どちらかのファイルがサーバにあるかを確かめる。
2.ファイルが見つかったらそのファイルバージョンを現行のものとして格納、url決め打ちでダウンロードリストを生成
3.ダウンロードリスト内の各urlに対してダウンロードを実行
という感じです。

リファラはurlと同じものを充ててます。(空白は弾かれます)
・ダウンロードリストを一旦txtで吐き出す作りにしたので、ダウンロード直前でリストを修正したり、少しの改造で汎用ダウンローダも作成できます。
・url構造は決め打ちなので、AMDのサーバーが変わったり、ファイル名のネーミングルールが変わったら手直しが必要です・・・。(さすがにここまで追従するのはバッチファイルじゃ無理)
・cap〜.exeというファイルはCFX用のプロファイルで、ドライバのメジャーアップデートとは別に、月に3〜5回更新されてるみたいです。