2014年3月27日木曜日

Commons Imagingちゃん口説き落とした: Exif情報のコピー

こんに・・・ち・・・は・・・。
コメダなうです。コメダ最高。最高。最高。

今週はずっとExif情報と格闘しているわけです。
あまりにもざっくりとした大雑把?なAndroid ExifInterfaceに見切りをつけて、ネットで出会ったCommons Imagingちゃんを攻略していました。

ある画像から別の画像へ、Exif情報をコピーしたいだけなんですが、なかなかどうしてうまく行かない。
もちろん、Javaを初めて二か月も経っていないワタシのスキル不足、ということはあるにしても、
・・・。

サンプルとか少なすぎるやろ (*´Д`)

Apacheのウェブサイトにはもちろんサンプルがいくつかあるんですが、他の情報が少なすぎる。
ワタシが慣れていないせいかもしれないけど、ドキュメントには最低限の情報しか書いていない気がする。
情報の9割が英語なのはまあいいとしても、Method Detailとかあるんだったら、すこぉしは説明欲しい気がするんだよなー・・・。メソッド名見れば分かるよね?ってことですね、うん、ごめんね・・・。

それでも、なんとか検索しまくって、参考になりそうなサンプルを発見。
Copying EXIF metadata using Sanselan

まあこのサンプルではSanselanを使うことを前提にして書いているので、Commons Imaging用に書き換えましたけど。

↓コレを
IImageMetadata metadata = Sanselan.getMetadata(jpegImageFile);


↓こんな感じに。
IImageMetadata metadata = Imaging.getMetadata(jpegImageFile);

なんとかうごいたー。
なんとか夕方までにめどがついてよかった。これで今晩もぐっすりさ。
もう一度言うけど、コメダ最高。ゆっくり集中できたおかげで解決した。

2014年3月26日水曜日

オープンソースカンファレンス Hamanako 2014にいってまいりました

こんばんわー。

先週の土曜日、オープンソースカンファレンス 2014 Hamanakoにちょっとだけいってまいりました。

用事があったので、一部の講演だけ聞いてきました。


セミナー会場。


日本Androidの会浜松支部のブース。
昨日のABC 2014 Spring 新Moverioアプリコンテストで最優秀賞をとった「土下座道」。
もうポスター作ってある!仕事早いなー。


で、浜松支部の発表。「土下座道」アプリのデモ。土下座してます(笑)。


さくらインターネットさんのブース。
「さくらのクラウド」が興味深い。無料券いただいちゃいました。


本日の戦利品。


本日聞いたお話はこんな感じ。



  • 日本Androidの会浜松支部の活動内容紹介 ~わいがや愉しw~
    土下座道のデモ楽しかったw
  • 自由な地図 OpenStreetMapの紹介と事例
    OpenStreetMap、興味あったんだけど調べてなかった。
    災害時に活躍する「クライシスマッピング」など、ユーザーが自由に地図を作れるのは魅力的ですね。
    マッピングパーティー楽しそう。GPSロガーじゃなくてスマホでも十分だとか。
  • さくらの所長が15分で伝授!「さくらのクラウド」の使い方
    『「さくらのVPS」をかんたんにスケールできる』サービスなんだとか。
    きめ細かな料金表があってびっくりしました。あと、ブラウザの管理画面?からなら、仮想サーバ自体にネットワーク接続がなくても、コンソール画面からサーバに接続できるとか。ほう。
    ブラウザ上でネットワーク構成を視覚的に触れるのもかっこよかった。
  • DDNSを利用したオープンハード・オープンソースでの自宅遠隔操作の紹介
    MyDNSの中の人のお話・・・。
あとはブースでいろいろ見てまわりました。
組み込み系のデモも面白かった。正直、組み込み系ってさっぱりでしたが(今もよく分からない)、楽しそうだなーと思いました。
Raspberry Piとか、経験がない人でも触れるのかしら?

時間がなくてゆっくりできなかったのが残念。
また機会があったら行きたいです。




ExifInterfaceよさようなら、Commons Imagingよこんにちは

こんにちはこんにちは。ひゃっほい。外は雨ですけどウキウキです。

以前からAndroid SDKのExifInterfaceを使って、画像にEXIF情報を設定しようとしていたのですが。

う ま く い か な い

色々調べても、利用できるExifタグに制限があったり、設定しても他のタグ情報を壊してしまったりで、さんざ苦しめられていました。

どっかのサイトには「ExifInterface is buggy」とか書いてあったりして。

で、しょうがないから代替案を探していたのですが・・・

どうやらApacheの「Commons Imaging」というライブラリが良さげ、という情報を見つけましたので、早速試してみました。

「Commons Imaging」
http://commons.apache.org/proper/commons-imaging/

こちらに*.jarファイルが公開されていたので、さくっとダウンロードして、Eclipseに配置、ビルドパスを登録。

で、こちらにサンプルソースがあったので、パチパチと眺めながら組み込んでみますと・・・

やった うごいた うごいたよ!

サンプルどおりにニューヨークのGPSデータをセットしてみたら、問題なく写真がニューヨークで撮った写真になりました(笑)。

案外簡単にできてよかった・・・と安心してると、また壁にぶち当たるな、きっと。
自戒自戒。

あとは、他のタグ情報も設定してみまーす。






2014年3月24日月曜日

イベント!イベント!イベント!!:ABC 2014 Springに行ってまいりましたよ

みなさんこんにちは。週があけました。いい天気です。

皆さんは3連休、いかがお過ごしでしたか?
ワタシはIT関連のイベントに行ってまいりました。

3/21(金)にはAndroidの祭典「ABC 2014 Spring」、22日はオープンソース関連の「オープンソースカンファレンスHamanako 2014」です。

まずは「ABC 2014 Spring」の方から。

+++

会場は東京、秋葉原UDX。
秋葉原なんてひさしぶりだー。



ちょっと早く着いたので、アトレのスタバで休憩。無線も電源もあって、オアシスですよここは。


基調講演はじまりました。ダイビル2F。
午前中はずーっと講演聞いてました。



こんな感じで。
  • 開会 Android REBORN ~次の5年へのクロスポイント
    いま、Androidが熱い。そうですとも。
  • グローバル・ネットワークの成立と新しい技術革新の展望
    「日本の技術者は、もっと自信を持っていい」とのお言葉。胸が熱くなりますね。
  • ビッグデータ時代のサイバーセキュリティ戦略
    セキュリティリスクのグローバル化に関して、「真っ暗な中でイスに座っていて、どこから殴られるか分からない」とのお言葉が印象的でした。こ、こわい。
  • Update on Google Play and Android
    ・・・1000年前の英仏戦争のお話からはじまりました。
    昔は『ゲーム』をしようと思ったら、一国の王でなければならなかった。今は、高性能のスマホがあればいい。うんうん、なるほど。
Chris Yergaさんのこの言葉、ワタシにはとても印象的でした。
「Information that moves with you.」




・・・で、めしー。
あれこれ探している時間がなかったので、すぐ近くのつけ麺屋で・・・



午後もだいたい講演を聞いてました。


失敗を避けて Google Play で成功していただくための高品質 Android アプリ開発 Tips

こんなアプリを作らないように気をつけましょう、ってなポイントをご教授いただきました。・・・動作が遅い、電池やネットワークを使いすぎる、RAMを使いすぎる、プラットフォーム標準のUIやUXから外れている、タブレットユーザをがっかりさせる、古いプラットフォームに最適化してしまう、不審なパーミッションを要求する、などなど・・・
ちなみにTwitterの公式アプリは、やってることの割には電池食わないように工夫してあるんだそうで。へー。
ちょこちょこ通信を起こすのが電池を食うんだそうで。いっきにどーん、とやれと。ふむふむ。

アプリ x アプリ, アプリ x サービスによるアプリ付加価値の向上

なんだろうと思ってたら、Windows Azureのご紹介がメイン。
実は、Windows Azureって名前しかしらなかった。でも、3分かからずに目の前でほいほいっとLinuxの仮想マシンを作ってしまってたのにはびっくり。お金があれば是非触ってみたい。・・・お金が、あれ、ば・・・ orz



途中でスマホのバッテリーが2つとも切れそうになるという緊急事態に。
仕方がないので、ノートPCをモバブ代わりに。
もっともらしい顔して画面にらんでましたが、やってることは充電でした(笑)。

アンケートに答えてクラウディアさんのクリアシートげっとしました。うふ。


激論・未来とコンピューティングを換骨奪胎せよ! 遠藤諭×AR三兄弟川田十夢×UEI清水亮社長

AR三兄弟なんて初めて聞きましたが、とても面白そうなお兄さんでした。
あ、あとNUI(Natural User Interface)なんてあるんですね。不勉強なわたくしですみません。
で、これからはMUI(Magical User Interface)だぜ!とかなんとか言ってらしたような。・・・面白いセッションだったんですけど、結局なんだったのか。


セキュアなAndroidアプリは簡単に作れるんです! 実演します♪

これは是非聞いておきたかった。
案の定、ちょうまんいん。立ち見になるところでしたが、会場スタッフさんの機転で、なんとか座ることができました。


セキュリティをなんとかせねばなー、とは思ってましたが、自分が今作ってるアプリは別に通信とかしないしなー、とか半分対岸の火事的な・・・。

他のアプリから、例えば画像を扱うアクティビティを呼び出されて、勝手に画像をツイートされることもあるとか・・・。とたんに青ざめました・・・。
やっぱりきちんと勉強しとこー。

とりあえずJSSECセキュアコーディングガイド読んどこうか・・・。


バザール会場

講演ばかり聞いてたら疲れてしまったので、隣の秋葉原UDXで行われていたバザール会場もみてみました。

い、痛車!?最初、何の会場かと思いましたよ・・・


さすが秋葉原。いいね、いいね、かわいいね!(理性がちょっとどっかいった)


名刺もらっちゃった・・・

写真も撮っちゃった・・・

お、モベリオだ!


ライブコーディング中の、進撃のお兄さん。こわいよ。画面の方に目がいかないよ。

モベリオを使ったアプリコンテスト。
普段お世話になっている浜松支部のアプリ「土下座道」が独走!
(結局優勝しました)



懇親会

夜は懇親会へ。会場はパセラリゾーツ 秋葉原電気街店。


うわー!結構みなさんいらっしゃるー!


mogmog

じゃんけん大会でゲット。携帯電話スタンド。これ結構便利。



懇親会ではプロの方、学生さん、新社会人の方、その他いろいろな方とお話させていただきました。
めっさ楽しかったです。ありがとうございました!

また次回も行きたいなあ・・・

オープンソースカンファレンス浜名湖の模様は、また次回。


2014年3月20日木曜日

一筋縄ではいかぬExif:もちょっとがんばれExifInterface

こんにちは。今日も雨ですねー。しとしとしと。

今日もExif情報に振り回されていましたよ。

先日、Android SDKのExifInterfaceを使って、Exif情報の取得や書き込みに成功していたのですが。
ボスより呼び出し。「Exif情報ないんだけど」

・・・え?
あれ?手元のソフト(IrfanView)で見る限りはきちんと保存されてるのになー。

で、確認しましたら。確かにボスが使っているソフトで確認すると、必要なExif情報が表示されない。
あれー?

いろいろ調べてみると、Android SDKのExifInterfaceで定義されてるConstantsだけじゃ、ボスのソフトでは表示されないExif情報があるみたい。

さらにMIT?のこのサイトで調べてみると・・・「Exif SubIFD」というエリア?に属するタグが、ボスソフトに表示されるらしい・・・。

ExifInterfaceのsetAttribute()では、書き込むタグをStringで指定すれば書き込めるみたい。
さっそく試してみると、・・・ほぅ。無事書き込めました。

ただ、ここで一つ問題が。

ExifInterfaceのsetAttribute()は、タグ名とその値にString型をとるんです。
DateTimeOriginalとかは、Exifのデータ型も「ascii string」となっており、素直に設定されてくれるんですが・・・。

ExifImageWidthやExifImageHeightとかは、Exifのデータ型が「ascii string」じゃない・・・。こういうのを無理やりString型で突っ込んでも設定されないどころか、「Exif SubIFD」エリアのタグが全部設定されなくなってしまう。

どないすりゃええねん・・・。

そしてぼくーはー とほうーにー くれるー



2014年3月17日月曜日

Windows 8.1ちゃん身持ちが固すぎるの巻(セキュアブート無効化したいのよう)

おはようございます。体調悪いです。眠いです。ねむいでs

と言っても頑張ってお仕事してますよ。
今日はAndroidのアプリの検証でございます。

アプリが落ちるんだけどー。と言われて実機を拝見したのですが、見ただけじゃ、なんで異常終了するのかさっぱりわからない。
仕方がないので実機を開発用のPCに繋いで、ログを見ようとしたんですが・・・

そうか、ドライバ入れなあかん

ということで、メーカーのサイトからドライバダウンロードしたんですが。
・・・どうも署名の無いドライバは、そのままじゃインストールできないらしい・・・。

いや、ま、そこまではね、分かってましたよ。
一応、自分の開発用実機(Xperia GX)は繋げてましたし。
セキュアブートとやらを解除すればいいんですよね、はいはい。
もー、Windows 8.1ちゃんったらオカタイんだからー。

・・・。あれ。
「PCの起動をカスタマイズする」から再起動しても・・・「オプションの選択」とかでないんですけど・・・。

どうゆうことなの・・・。

あ、セキュアブートの解除方法は、以下の記事を参考にさせていただきました。
http://blog.livedoor.jp/frbsd/archives/25566476.html

Windows 8.1版の記事はこちら。「ファッ!?」に吹いた。うんうん、あるある。
http://blog.livedoor.jp/frbsd/archives/34124504.html

・・・もういいや。また後で試そう。飯くうぞメシー。

・・・酒飲みながら追記ー。

結局あのあと、色々とググるも解決法はなく。
再起動時に「LogonUI.exe」ってのがランタイムエラーで落ちるのが怪しいんじゃないかと踏むも、解決策はなく・・・。

なんとかして、Windowsのブートオプションの画面を出せばなんとかなるんじゃないかとあがき・・・。
Microsoftのサイトに助けを求めるも、「そのIDのWindowsはウチじゃ面倒みられませんことよ、ヲホホ」とすげなく返され・・・。

結局Lenovoのサポートに電話しました。
Lenovoのサポートのお兄さん、口調は丁寧だし、優しいし、こちらの意図も汲んでくれるしすごく助かった。でもやっぱりWindows 8を再インストールしたらいかが、的な流れになる(笑)。

購入時にはWindows 8だったのだけれど、途中で自分でWindows 8.1にしちゃったのよねー。そしたら動作保障外だと・・・。

でも、アドバイスを頂いたので、さっそく試す。
BIOS設定メニューを出すタイミングで、F11キーを押せば、ブートオプションのメニューがでるらしい。
で、ブートオプションはでたんだけど、目的の『スタートアップ設定』が出ないのよね・・・。
ここでドライバの署名を強制するってのを解除したかったんだが・・・。













2014年3月11日火曜日

煮詰まりログ:タッチしてフォーカス

おはようございます。

最近さむいですねー。いまだにファンヒーター絶賛稼働中です。

さて、最近はAndroidのカメラ周りの処理について調べているのです。

スマホとかコンデジで、ひょいひょいっと気軽に写真を撮るのは好きなのですが、どうも絞りとかシャッタースピードとか、そういう写真撮影の基本はまるで知らないワタシ。
おかげで分からないことだらけですわー。大丈夫なのか。

昨日から「Androidの画面をタッチしたら、そこにマニュアルフォーカスして、よろしく社員を撮る」機能を実装しようとしているのですが。
・・・タッチイベントでCamera.autoFocus()を呼んで、そこで力尽きました。

あーあ、もっとさくさくっと実装できると思ったのになー。(甘い)

今日はその続き。

とりあえずgetFocusAreasの説明を読む。・・・。
http://developer.android.com/reference/android/hardware/Camera.Parameters.html#getFocusAreas()

えーと、こういうことですかねー・・・


真ん中を起点にして計算するのかな?

あと、Weightについても何か書いてあるけど、・・・ちょっと良く分かr

・・・。
と、とりあえずやってみよう!
ということで、こちらのブログ様を参考にやってみる。

えーと、なになに・・・まずタッチイベントからとった座標を、プレビューの座標に変換・・・

orz

わかんにゃい。自分が情けない。
と、とりあえず、getMaxNumFocusAreas()で機能の有無はとった。
MotionEventのgetX()とgetY()で座標はとれた。

あとは変換かー・・・。こういうことなのかなー?





たたかいはつづく










2014年3月4日火曜日

【解決】 煮詰まりログ: DenyHostsいれたいんじゃー。

・・・。
おはようございます。
・・・・・・。つまった。

今日は朝からおうちで仕事。
予定していた作業をするまえに、ちょっとサーバのログでも見ようかな、ふんふふん、とログを見ましたら。

あ。
DenyHosts入れるの忘れた。


まあどうせ、yumあたりでさくっとインストール&設定できるだろー、と思いましたが・・・。パッケージ見つからない orz

・・・。
仕方ないからサードパーティーのレポジトリを設定
⇒yumでDenyHostsをinstallしようとする
⇒Pythonのバージョンが高すぎると怒られる(要求:2.4、インストール済み:2.6)
⇒あああもおおお!!

・・・。
コンパイルして入れるしかないの・・・か・・・?

(追記)

と、思ったらできた。
やーもー、しょうがねーなー、とか思って、ほうじ茶ずずー、ってすすって、
「もしかしたら」という思いを込めてもう一度「yum install denyhosts」実行したら・・・

で け た

なんでやねん・・・DenyHosts requires Houji-chaなんかい・・・。

2014年3月1日土曜日

本日のドヤリング: 知久屋浜松グラウンド前店(EXIFくださいってば)

こんにちはこんにちは。

本日はお休みですが、午前中に中国武術の稽古に行った後、お昼を食べに知久屋にきています。
ここ好き。かつ丼、やすくてうまい。しかも落ち着ける。
まあ、さっきまでパワフルなおばちゃんたちが大声でご歓談なさってたけど。まあこれも情緒よね。

さて、一息ついたところで、ドヤリングです。


・・・今週は、メールサーバ構築もひと段落して、Androidアプリ作成を再開しました。
で、JPEGデータにEXIF情報を埋め込む機能を作ろうと思ってたんですけど。

AndroidでExif扱うには、ExifInterface使えばいいのね。ふむふむ。



・・・でも、え?確かに扱える情報、多いけどさ、Exif情報って・・・もっとあるよね?
UserCommentとかあるじゃん?あれはどうなの??

と、ここまで考えて、そもそもExifってなんだろうって思った。
Wikipediaとかでさらーっと調べて、ふんふんなるほど写真のメタデータか、よっしゃ分かった!
て、それくらいの理解で・・・。

もう少し調べると・・・え?メーカー独自のタグとかあんの?あれ?
こりゃー、簡単にはいかないかなー。

ここにJavaのライブラリがあるみたいだけど、なんか「get」はあるけど、「set」が見当たらない。
探し方が悪いのかにゃー。

とりあえず、Android SDKで使えるExifタグの取得と設定はできたので、まあ、ぼちぼちやりましょうか。

(その前に、今日は午後から指導なのだった。ねーむーいー。)

+++
本日のお店はこちら。

大きな地図で見る