2017/07/31

ヨコザワテッパン

最近、ちまたのごく一部で「アツイ」と評判のヨコザワテッパンを入手。
一見すると単なる鉄板なのだが…その実は単なる鉄板だった。
縁の処理もされていない単なる1枚の鉄板なのだが、この鉄板を使って肉を焼くととても美味しく焼けるらしい。

Image: 20170727_124336384_iOS.jpg

ヨコザワテッパン一式
収納用の布袋、アルミ製のヤットコ、そして焦げ落としのためのヘラが同梱されている。

純粋な鉄製品なので使う前にシーズニングという儀式が必要。
から焼きして油を引いて更に焼いてを数回繰り返すだけなのだが、 台所にある今時のコンロだと安全装置が働いてしまって鉄板から煙が出るほどは過熱できないので、 暑い中 Coleman のホワイトガソリンストーブを引っ張り出して外で作業する事にした。

Image: 20170729_045428813_iOS.jpg

Coleman Apex II を利用してシーズニング中

通常の一体型ストーブに鉄板を直接乗せて過熱した場合、タンクが熱くなりすぎて危ないかなと思ったので、 タンクが別体式の Coleman Apex II を利用した。
無事にシーズニングを終えて中々良い感じに黒光りする様になったので、早く肉の塊を焼きたい。

2017/07/14

オートキャンプ銀河

海の日を含めた3連休なら海に行くしか無い!
…という強い思いで海にほど近いキャンプ場を物色した所、西伊豆の高原(というか山の中)に良さそうなキャンプ場を発見。 3連休なので今回も2泊の日程でオートキャンプ銀河に行って来た。

Image: img_20170715_013450182_iOS.jpg

オートキャンプ銀河

今回は海と山を目一杯満喫しようという企画だったのでまずは海水浴。
西伊豆の海はどこも透明度が高く澄んでいて気持ちが良いのだが、一日目はキャンプ場に近い「浮島(ふとう)」で今年の泳ぎ初め。 砂浜ではなく岩場だったので水が濁らずにとても綺麗な海を満喫できた。

Image: img_20170715_002824472_iOS.jpg

浮島海水浴場

右奥に見える岩のトンネルは泳いでくぐる事ができる。
青い色をした小さい魚、キビナゴ、なまこ、そしてウツボなどを見る事ができて大満足。

お昼頃まで海を堪能したら次は山!
海沿いの国道から山に向かって狭く曲がりくねった道を 20 分以上登ってやっと辿り着くキャンプ場は標高 400m との事で夜は半袖だと肌寒い感じ。 今回は(今回も)遅めの予約だったせいか割り当てられたサイトは若干狭め。 車を停めてテントとタープを拡げると微妙に足りない感じだったので、久々の小川張りでテントとタープを設営。

Image: img_20170715_073410131_iOS.jpg

小川張りで設営

1日目の夜は例によって焚き火台を利用した慎ましやかな BBQ を美味しくいただきました。
ちなみに食材は地元の フードストアあおき 西伊豆店 で調達したのだが、肉類、魚介類、野菜など全ての食材が美味しかったのでお勧め。

二日目は「田子」のシーファン でシーカヤックを体験。 人生で初めてのカヤック体験だったのだが、思っていた以上に簡単で公園のボートに比べても軽い力で進む事ができてとても楽しかった。

Image: img_20170716_7161243.jpg

一人乗り
Image: img_20170716_7161242.jpg

二人乗り

全行程は大体 3 時間程度。コースは湾内から岩のトンネルをくぐり抜け、ちょっとだけ外海に出た後は船でしかアクセスできないビーチで休憩。 このビーチではシュノーケリングを楽しめるのだが、人が少ないので魚も多くとっても気持ち良かった。

Image: img_20170716_7161238.jpg

プライベートビーチでシュノーケリング

防波堤からはずれるとそれなりに波があり娘は少し船酔い気味だったけど、とても楽しい時間を過ごす事ができた。 ちなみにスタッフのお兄さんはとても面白く優しくて良い人でした。機会があれば是非また行きたい。

2日目の夜は手軽に済ます。前日の BBQ で使う予定だったキャベツが大量に余っていたので豚バラ肉と回鍋肉に。
食後は焚き火をしながらデザートにブドウなど食べながら満ち足りた時間を家族で堪能。

帰りは仁科峠から西伊豆スカイライン、伊豆スカイライン経由で芦ノ湖に出てランチ。
東名高速が事故などで大渋滞していた様なので箱根新道、西湘バイパスを通って江ノ島、鎌倉を経由し横浜横須賀道路から帰宅。
総走行距離は 400km 程度。お疲れ様でした。

2017/06/12

オイル交換

前回のオイル交換から 4,000Km 走行したのでオイルとエレメントを交換。 前回の交換時に NUTEC に問い合わせた所、粘度 5W-30 の NC-40 と粘度 10W-50 の NC-41 を 1 対 1 の割合でブレンドすると良いと教えて頂いたので、今回も同様のブレンドで交換作業を実施した。

ちなみに NUTEC は問い合わせると車種に応じた最適なオイルやブレンド方法を教えてくれるという信じられない程丁寧な対応をしてくれる。

今回はオイルエレメントの交換も行ったので必要なオイル量は 2.2L となる。 この 0.2L 分は同じく NUTEC のエンジンオイル添加剤 NC-82 を添加する事にした。 NC-82 の適正使用量はエンジンオイル量の 10% との事なので最適な量を添加する事ができる。

オイルエレメントは PC-Racing の FLO なども興味があったのだが、非常に高価なので今回は K&N の一般的なエレメントを使った。 ただし K&N のオイルエレメントはエレメントのトップに 17mm のボルトが装着されているので、特別な工具が必要なく一般的なレンチで交換作業ができ、トルクレンチで締め付けトルクも管理しやすいのがお勧め。
ドレンボルトは 南海部品のマグネット式ボルト DB-1414 に既に交換しているので、ドレンボルトパッキンも南海部品の DW-014 を利用する。ドレンボルトパッキンはケチらずに交換毎に新品を利用する。

ドレーンボルトを緩めて古いオイルを排出したらオイルエレメントを外して新しいエレメントを装着。 この時新しいエレメントのゴムパッキンにエンジンオイルを少量塗布すると良いらしい。
エレメントとドレンボルトを規定のトルクで締めたら新しいエンジンオイルを入れてフィラーキャップをしっかり閉める。 エンジンをかけて暫く放置した後エンジンを停止し、オイル点検窓のオイル量ゲージの範囲なら作業は全て終了。

作業終了後は試運転をかねて一般道から高速道路まで走行したのだが高回転までスムーズにストレスなく回ってとても気持ちが良い。 オイル交換前とは同じエンジンとは思えない程に吹け上がりやパワーの出方が違って思えるのはプラシーボ効果だけではないと思う。

2017/06/06

オートバイで出かける時に携行しているコンパクトなクッカー一式

オートバイで出かけた時に出先でお湯を沸かして珈琲を飲んだりできる様に、小型のストーブとクッカーをシートバックに放り込んで出かけている。
元々収納力の少ないオートバイなので軽量でコンパクトな道具を厳選して搭載している。

ストーブ
Trangia TR-B25
言わずと知れたスウェーデン製トランギアの定番アルコールストーブ。
コンパクトなボディながら必要十分なパワーなので珈琲用のお湯ならものの数分で沸騰させる事ができる。
Image: 20170605_140057571_iOS.jpg

Trangia TR-B25
グリッド
Trangia トライアングルグリッド2型 TRP302
こちらもトランギア製で TR-B25 専用の組み立て式グリッド。
3枚のプレートを差し込んで組み立てて使用する。コンパクトに収納できて構造的に丈夫なのでそれなりに重いコッヘルなど乗せても平気。
Image: 20170605_140314747_iOS.jpg

Trangia TRP302
マグカップ
Snowpeak チタンシングルマグ 450 + TOAKS チタニウムリッド LID-D80
スノーピークで定番のチタンシングルマグ。
シングルタイプは直接火にかける事ができるので、マグとしてだけではなく簡易的なクッカーとしても利用できるので重宝している。 リッドは付属していないのでこちらも定番のトークスチタン製の蓋を流用。
Image: 20170605_140354038_iOS.jpg

Snowpeak 450 & TOAKS LID-D80
ウィンドスクリーン
VARGO アルミニューム ウィンドスクリーン T-420
アルコールバーナーは風に弱いので風よけを常備している。 5枚のうち2枚を重ねて四角形にするとグリッドにもなるので便利。
Image: 20170605_140152159_iOS.jpg

VARGO T-420

Image: 20170605_135958528_iOS.jpg

コンパクトクッカー一式

トライアングルグリッドはスノーピークのマグにピッタリのサイズで安定感がある。 TOAKS のリッドもそうなのだがスノーピークのシングルチタンマグは色々な意味で本当に丁度良いサイズで使い勝手が良い。

Image: 20170605_135912046_iOS.jpg

利用時

アルコールは Nalgene の広口ボトルに入れて携行。 ナルゲンのボトルは蓋の形状が特殊で雑に扱ってもこぼれないらしいので重宝している。

Image: 20170605_140644459_iOS.jpg

これらを手持ちのポーチに入れて携行している

2017/05/22

Optimus SVEA 123R の収納ケースについて

Optimus SVEA 123R の純正ナイロンケースは純正のケースだけあって綺麗に収納できるし、クッション素材が採用されているので多少乱暴に扱っても本体が傷付いたり凹んだりしないのも魅力だ。 しかしクッション素材が使われているために若干大きめで、Snow peek のチタントレック 900 に収納出来なくなってしまうので残念。
そのまま SVEA 123R を入れてしまっても良いのだが、擦れによる傷はともかくとして、燃料の匂いが移ってしまう事は結構気になっていた。

Image: 20170518_114617667_iOS.jpg

SVEA 123Rの純正ケースは若干大ぶり

ネットを色々と探してみると サルパウチ という所が製造している帆布製の収納袋がサイズ的にも良さそうなので購入してみた。

Image: 20170518_114653917_iOS.jpg

SVEA 123R とサルパウチ製の収納袋

帆布製なので素材としては必要十分な強度で且つそれほどかさばらないのでチタントレック 900 に綺麗に収納できた。 高さ的にチタントレック 900 から SVEA 123R が若干飛び出してしまうがフライパン兼用の蓋はある程度高さがあるので綺麗に収納できる。

Image: 20170518_114921723_iOS.jpg

トレック900に収納

Snow peak のチタントレック 900 は チタントレック 1400 に収納できるので(と言うか元々セットのチタントレックコンボ SCS-010T を購入したので) チタントレック 1400 に収納してから付属のメッシュ袋に入れると持ち運びに便利なクッカーセットの出来上がり。

Image: 20170518_115248019_iOS.jpg

鍋2個と SVEA 123R をコンパクトに収納

先日 SVEA 123R とトレック 900 でお湯を沸かしてコーヒーを喫してきました。

Image: 20170520_012421431_iOS.jpg

湯沸かし中

アウトドアで飲むコーヒーは普段より美味しく感じますね。

Image: 20170520_013011542_iOS.jpg

UNIFLAME のチタン製シエラカップで

2017/05/09

カンパーニャ 嬬恋

奇跡的に(!)ゴールデンウィークに予約できたので、少し遠方だけどカンパーニャ嬬恋に行って来た。

カンパーニャ嬬恋は無印良品が母体のキャンプ施設として有名。 良くも悪くも「無印良品」らしさがそこかしこに漂っている。

ゴールデンウィークで混雑が予想される事と自宅から距離的にも相当離れている事を考えて早朝 5 時に家を出発。
早朝の出発が功を奏してか東名から圏央道経由で関越まで渋滞なし。 途中、白糸の滝や鬼押出し園などの定番スポットをノンビリ観光しても午前中には無事到着。

Image: 20170505_042104300_iOS.jpg

こちらも人気のカンパーニャ嬬恋

割り当てられた区画は A-20 という木立の中のサイトで、区画も広くスペースが贅沢に使われている印象。
隣との距離も十分にあってプライバシーもちゃんと確保できており、ここら辺の造りはとても素晴らしく利用者の立場で良く考えられている。 さらに各サイトに焚き火台が常備されているので準備なしで焚き火もできる。
焚き火用の薪はセンターハウスで販売しているが、サイトの周りに枯れ枝が沢山落ちているので拾い集めればそれだけで焚き火が出来るかな。 今回初めて知ったのだが松ぼっくりは非常に良く燃えるので着火剤としてとても優れている。 今回のサイトは松林の中にあるので着火剤が無尽蔵に落ちている感じで便利だった。

Image: 20170505_070829188_iOS.jpg

今回もテントとタープをメインにシンプルな構成

1 泊目の夕食はキャンプでは久々のバーベキュー。
とは言っても最近は大きなバーベキューグリルは使わずに、LOGOS のピラミッドグリルでささやかにバーベキューをしている。 元は焚き火台として作られているので多少使い勝手は悪くなるが、荷物も減らせるので最近は専らこちらを愛用している。 (残念ながら食べる事が忙しくて写真はなし←ま、夜だし綺麗には映らないか(笑

噂には聞いていたのだが高地だからか朝晩はとても冷え込む。 寒くて朝 5 時に目が覚めてしまったのでテント内でカセットガス式の簡易ストーブを使用。 さすがに中毒が怖いので一酸化炭素センサーを併用。

Image: 20170505_235431647_iOS.jpg

カセットガス式ストーブと一酸化炭素センサー

テントの外では焚き火メインで暖まるのだが、今回はとても寒かったので PRIMUS のアウトドアヒーター P-951 も併用した。
このヒータは OD缶で利用するセパレートタイプのヒータなのだが、コンパクトな筐体で 1.8kw (1500kcal/h) と意外にも結構な発熱量なので、この時期であれば十分に実用的なヒータと言える。

Image: 20170505_232348295_iOS.jpg

P-951 とヒーターアタッチメントを装着したシングルバーナー
ちなみに奧に見えるのは Coleman の Exponent APEX II という分離タイプのマルチフューエルストーブ。

朝起きたらすぐに焚き火を熾したので朝食は地元のスーパーで購入したソーセージとロールパンを焚き火で調理。 初めて焚き火で調理したのだが簡単でしかも意外と美味しくできたので焚き火の時期は良いかも。

Image: 20170506_220049428_iOS.jpg

焚き火で料理

カンパーニャ嬬恋は敷地面積がとても広く色々なタイプのサイトが混在している。
今回は林間サイトだったが草原サイトは広々とした空間で仕切りもなく眺めも良かった。
吹きさらしなので日差しや風が強い日は若干大変そうだが、とても気持ち良さそうだったので 機会があれば是非利用してみたいと思う。

Image: 20170506_235300028_iOS.jpg

草原サイトからの眺望

予約が必要なのだが、主に子供向けに色々なアクティビティが提供されているのも良いところ。 娘はフェルトのマスコット作りと石窯を使ったベイクドチーズケーキを作っていた。 カナディアンカヌーの教室も有って楽しそうだったのだが娘は年齢的に参加できなかった…残念。
ゴールデンウィークなのでサイトはほぼ埋まっている感じ。でもサイト間が広いのでそれほど煩さは感じない。
スタッフは親切、全体的に綺麗で管理も行き届いていて快適なキャンプ場だと思うのだが、キャンプ場のポリシーなのだろうか炊事場でお湯がでないのは辛かった。 (モノの30秒も触っていると手が痛くなる程の冷たい水(雪解け水なのかな?)
自宅からは若干遠いのだが (全行程で 488Km 走行した) 機会があれば是非また訪れたいと思う。

2017/03/27

有野実苑

今年はキャンプの記録をちゃんと残そうと思う。

軟弱派キャンパーの我が家、キャンプシーズンの開始は基本的に暖かくなってからなのだが、 今年は一念発起して(大げさ)3月からキャンプをしてみた。
予約したのは人気の有野実苑キャンプ場。 暖かい時期の週末になるとなかなか予約が取れない人気のキャンプ場なのだが、 まだ寒い時期だからか予約が取れたので週末に行って来た。

Image: 20170325_024035933_iOS.jpg

人気の有野実苑

割り当てられた区画は B-9 というサイトで結構広め、 更に炊事場とトイレが目の前というとても便利なサイトだった。
サイトの奧に電源があったのでその前にテントとヘキサタープを張って設営。 ここら辺の作業は既に慣れたモノで到着して1時間もかからずテキパキと準備完了。

Image: 20170325_054039139_iOS.jpg

テントとヘキサタープというシンプルな構成

今回はランチは作らずに施設内にある農園リストランテ『Verdure ricco』にて食べたのだが、 新鮮な地元の野菜をメインに使ったとても美味しいイタリアンでした。
食事の後、娘は遊びに行ってしまったのでノンビリ珈琲タイム。 大自然の中で静かな時間が過ごせます。

Image: 20170325_063815293_iOS.jpg

Optimus R8とパーコレータでコーヒー

実は今回は初めての寒い時期という事もあって薪ストーブをレンタルしていたのだが、 このストーブがとても暖かいだけではなく煮込みも出来るという優れもの。 折角なので夕食は煮込み料理にしようとビーフシチューにしてみた。 夕方から薪ストーブの上で長時間コトコト煮込んだビーフシチューは絶品でした。

Image: 20170325_081737115_iOS.jpg

薪ストーブでコトコト煮込み中

キャンプ場のスタッフは皆優しく、気さくに声を掛けてくれるし、 細かい所にまで目が行き届いた素晴らしいキャンプ場だった。
都心から近いという事もあるが予約が取れない程人気があるのは納得できる。
翌朝は残念ながら雨になってしまったが素晴らしキャンプ場だった。

Image: 20170325_041353389_iOS.jpg

場内のいたる所に出没中

2017/01/10

Fドリーム平塚

久々(何と4年ぶり)にFドリーム平塚でカートに乗ってきた。

Image: 20170107_042947465_iOS.jpg

前回は娘はまだ小さくて運転ができなかったのだが、 今回はなんとか自分で運転できる様なので娘のカートデビュー。

Image: 20170107_045031674_iOS.jpg

係員にカートの運転に関するレクチャーと簡単な説明を受けたらいざコースイン。
1周60秒をきるまでは連続で3周しかできないとの事なのでまずは3周から。
初めてのエンジン付きカートの運転なので、最初の3周はパパの後ろについて恐る恐る走っていた。 特に最初の1周は直線でも怖くてなかなかアクセルを開ける事ができていない様で、 1周するのに90秒以上要していたのだが、徐々に直線ではアクセルを開けられる様になってきた所で3周走りきってピットイン。
「怖くてもう乗りたくない」と言うかと思ったら意外にも「もっと乗りたい」と言うので更に3周走る事に。
そこで、 走りながら簡単なライン取りとコース走行の基本となる『アウト・イン・アウト』と『スローイン・ファーストアウト』を 伝えた所みるみるとタイムを縮めていったのには驚いた。

最終的には1周56秒台までタイムを縮めたので次回は連続で5周できる様になったのは大きな成果。
しかも第2コーナでは攻めすぎてスピンまでするというアツイ走りを見せてくれました!

Image: 20170109_152144187_iOS.jpg

ベストラップは56秒718

最後に前回同様2人乗りカートで3周して仕上げ。
1周36秒程度のペースで走行しラインやブレーキングなどを伝えた所、 自分との違いを感覚で理解した様なので次回に期待大。

ちなみにパパは35秒を切れなくて残念。
さらに頑張って20周近く走ったせいで翌日には全身が筋肉痛になってヒィヒィ

今回はバイクに乗るときに使っているヘルメットを持参したので、 インターコムで会話やアドバイスをしながら走る事ができてとても便利。 ピットから走行している娘に無線でアドバイスしていると、 気分だけはF-1の様でなかなか楽しい経験だった。

Image: 20170107_042925925_iOS.jpg

サーキットは独特の雰囲気があって良いね

以下の動画は大体36秒程度での周回を撮影したもの。
既に10周程度走っているので集中力も途切れ途切れであちこちで無駄にスライドさせている


2016/12/02

ブレーキディスク交換

ちょっとハードなブレーキングをするとフロントからジャダーが発生するので、 フロントのブレーキディスクを交換する事にした。
調べてみると純正のパーツもまだ供給されている様なのだが、 折角の機会なので社外品を物色してみる。
最近よく見かける様になったウェーブディスクは見た目は格好良いのだが、 インプレッションなどを見ると信頼性や操作性でラウンドディスクの方が良いという意見が多く見受けられたので、 今回はブレーキディスクを各メーカーに OEM 提供も行っている、 信頼と実績の国内メーカであるサンスターの プレミアムレーシング を装着してみる。

Image: disk1.jpg

EM-102WR-SV

プレミアムレーシングは自分の好みである程度カスタマイズ可能なので、 アウターディスクは見た目重視でホール&スリットタイプ、 インナーディスクは軽量なメッシュタイプ、 ほぼ街乗りなのでセミフローティングタイプでカラーピンはシルバーを選択した。

ブレーキディスクを交換する場合はブレーキパッドも新品と交換するべきである (ブレーキディスクに同梱されている説明書にもそう明記されている)。 現状のブレーキパッドはまだ結構残っているので若干勿体ないのだが Vesrar 社のシンタードタイプのブレーキパッドを装着した。
ブレーキパッドはあらかじめヤスリなどで角の面取りを行っておき、 装着する時はカッパーグリスを裏面や上面に塗布するとブレーキ鳴きがある程度は解消される。

Image: pad.jpg

Vesrah ZV-VD255JL

交換作業は自動車用のパンタグラフジャッキを利用してフロントを浮かせて行った。
フロントホイールの脱着やブレーキディスクの脱着、 ブレーキパッドの交換を含めて作業は大体 1 時間程度で完了するのだが、 ブレーキは重要な保安部品なので経験や自信がない場合はショップにお願いするのが良いと思う。
自分で作業する場合はサービスマニュアルなどを参照して 新品交換が必要な部品や締め付けトルクなどは正しく管理して作業する。
今回はマニュアルに従ってディスクボルトは全て新品に交換した上で、 ネジロックを塗布して規定のトルクで締め付けた。

Image: disk2.jpg

標準的なラウンドディスク

全ての交換作業を終了したら最後にもう一度全てを見直してから試走してみる。
ディスクもパッドも新品なので当たりが出るまではブレーキのききはイマイチなのだが、 それでも従来のディスクに比べると操作性やブレーキのタッチ、そしてブレーキのききも格段に向上しているし、 新品のブレーキディスクなので当然なのだがジャダーも発生する事なくブレーキングが快適になった。
標準的なラウンドタイプのディスクなのでフロント周りはそれほど派手にならず、 インナーロータはホイールの色にピッタリの黒なので足元が引き締まった印象になったかな。

2016/11/21

画像の回転スクリプト

blog などに添付する画像を回転するためのスクリプト。
回転処理は ImageMagickrotate (1) コマンドで行うのだが、 一部のブラウザでは exif 情報に含まれる Orientation の値で画像を回転して表示するので、 回転した後で exif の Orientation の情報を修正している。
exif 情報の取得と設定は Perl モジュール Image-ExifTool を利用している。

getor: exif 情報から Orientation を取得する。

  1#!/usr/bin/perl -w
  2use Image::ExifTool ':Public';
  3my $file = shift or die "Please specify filename";
  4
  5$exifTool = new Image::ExifTool;
  6$exifTool->ExtractInfo($file);
  7
  8print $exifTool->GetValue('Orientation') . "\n";
    

setor: Orientation に水平 Horizontal (normal) を設定する。

  1#!/usr/bin/perl -w
  2use Image::ExifTool ':Public';
  3my $file = shift or die "Please specify filename";
  4
  5$exifTool = new Image::ExifTool;
  6$exifTool->SetNewValue('Orientation', 'Horizontal (normal)');
  7$exifTool->WriteInfo($file);
    

引数で指定されたファイルを回転して Orientation を設定する。

  1#!/bin/sh
  2for i in $*
  3do
  4    n=$(getor $i | awk '/^Rotate/{ print $2 }')
  5    if [ ${n:-0} -gt 0 ]
  6    then
  7        convert -rotate $n $i /tmp/_$$.jpg &&
  8        mv /tmp/_$$.jpg $i
  9        setor $i
 10    fi
 11done
    

2016/11/22 追記

以前作成した Exif 情報から GPS の緯度/経度情報を削除する を元に 全てシェルスクリプトで画像を回転するスクリプトを作ってみた。
dd (1) を利用してバイナリファイルの入出力を行い、 Exif 情報の取得と更新を実施している。
  1#!/bin/sh
  2# 画像を回転し Exif 情報の 'Orientation' を設定する
  3#
  4
  5#
  6# Endian を考慮して 2 バイト数字を取得する
  7#
  8#   $1: ファイル
  9#   $2: オフセット
 10#
 11get2Byte()
 12{
 13
 14    dd ${conv} if="${1}" bs=1 skip=$((${skip} + ${2})) count=2 2> /dev/null | od -d | awk '/^0000000/{ print $2 }'
 15
 16}
 17
 18#
 19# 任意の長さの文字列を取得する
 20#
 21#   $1: ファイル
 22#   $2: オフセット
 23#   $3: 文字列長
 24#
 25getString()
 26{
 27
 28    dd if="${1}" bs=1 skip=$((${skip} + ${2})) count=${3} 2> /dev/null
 29
 30}
 31
 32#
 33# 0th IFD データの解析処理
 34#
 35#   $1: ファイル
 36#   $2: 0th IFD のタグ数
 37#
 38ifd()
 39{
 40
 41    local   i offset
 42
 43    i=0
 44
 45    while [ ${i} -lt ${2} ]
 46    do
 47        # 0th IFD のタグ情報
 48        offset=$((${3} + 22 + (${i} * 12)))
 49        # Orientation の場合はオフセットを表示して終了
 50        if [ $(get2Byte "${1}" ${offset}) -eq 274 ]
 51        then
 52            echo ${offset}
 53            break
 54        fi
 55        i=$((i + 1))
 56    done
 57
 58}
 59
 60#
 61# Orientation 情報の取得
 62#
 63#   $1: ファイル
 64#   $2: Orientation IFD のオフセット
 65#
 66getOrient()
 67{
 68
 69    echo $(get2Byte "${1}" $((${2} + 8)))
 70
 71}
 72
 73#
 74# Orientation 情報のセット
 75#
 76#   $1: ファイル
 77#   $2: Orientation IFD のオフセット
 78#
 79setOrient()
 80{
 81
 82    echo -ne "\00\01" | dd conv=notrunc of="${1}" bs=1 seek=$((${2} + 8 + ${skip})) 2> /dev/null
 83
 84}
 85
 86#
 87# ファイルフォーマットから skip するバイト数を取得
 88#
 89#   $1: ファイル
 90#
 91getSkip()
 92{
 93
 94    if [ "$(getString "${1}" 6 4)" = "Exif" ]
 95    then
 96        # Exif 情報格納
 97        echo 0
 98    elif [ "$(getString "${1}" 24 4)" = "Exif" ]
 99    then
100        # JFIF 情報格納
101        echo 18
102    else
103        # Exif 情報なし
104        echo -1
105    fi
106
107}
108
109#
110# convert(1) のオプション取得
111#
112#   $1: ファイル
113#
114get_conv()
115{
116
117    offset=$(ifd "${1}" $(get2Byte "${1}" 20))
118    if [ ${offset:-0} -gt 0 ]
119    then
120        case $(getOrient "${1}" ${offset}) in
121            2 ) opt="-flip";;                       # 上下反転
122            3 ) opt="-rotate 180";;                 # 180度回転
123            4 ) opt="-flop";;                       # 左右反転
124            5 ) opt="-flop -rotate 90";;            # 上下反転+270度回転
125            6 ) opt="-rotate 270";;                 # 90度回転
126            7 ) opt="-flip rotate 270";;            # 上下反転+90度回転
127            8 ) opt="-rotate 90";;                  # 270度回転
128        esac
129        echo ${opt}
130    fi
131
132}
133
134# メイン処理
135for i in $*
136do
137    skip=$(getSkip "${1}")
138    if [ ${skip} -ge 0 ]
139    then
140        # Endian
141        test $(getString "${1}" 12 2) = "MM" && conv="conv=swab"
142        opt=$(get_conv $i)
143        if [ -n "${opt}" ]
144        then
145            # 画像を回転
146            convert ${opt} "${i}" /tmp/_$$.jpg && mv /tmp/_$$.jpg "${i}"
147            # conviert(1) により TFIF 情報が付加される
148            skip=$(getSkip "${i}")
149            setOrient "${i}" $(ifd "${i}" $(get2Byte "${i}" 20))
150        fi
151    fi
152done
    

2016/11/23 追記

convert (1) だけで出来る事が判明
$ convert -auto-orient 入力ファイル.jpg 出力ファイル.jpg 
    
更に identify (1) を利用すると Exif 情報も取得できるので ImageMagic が導入されている場合は以下のスクリプトで完結する。
  1#!/bin/sh
  2for i in $*
  3do
  4    test "`identify -verbose $i | awk '/exif:Orientation/{ print $2 }'`" != 1 &&
  5        convert -auto-orient $i /tmp/_$$.jpg &&
  6        mv /tmp/_$$.jpg $i
  7done
    


Copyright © Mitzyuki IMAIZUMI 2008,2009. All rights reserved.