Olympus Camera Kitで遊ぶ #2

頑張っております。

…が。ライブラリのAPIが多すぎますって。そしてカメラプロパティとやらも含めたらば、今の時点でインターフェース(プログラミング言語的な意味ではなくてカメラを操作する的な)が160〜170ぐらいはあるでしょうか。もう2ヶ月もかかりっきりだけど(コードが1万行を超えたぞ…)、それぞれ呼び出して良いタイミングの制約があったりして、それも試してみようとかしたら終わりが全然見えません。←全部を叩こうとしている人が頭おかしい

img20150519_opcplay1 img20150519_opcplay2 img20150519_opcplay3 img20150519_opcplay5 img20150519_opcplay4 img20150519_opcplay6

カメラの保守管理系が操作できないのを諦めれれば、APIの品揃えとか接続が確立している時のファーム動作についてはそんなに不自由しない&ちゃんと動いている感じです。最大の難点は、無線での通信が不安定になると挙動がとたんに怪しくなること、この一点のみでしょうか。カメラが長時間スリープに入っていたとかバッテリー残量が少なくなってくるとさらに拍車をかけるようです。(カメラ本体だけで何万円もしますし、カメラという製品としてはどうかという気もしますが、まぁ、ギークの趣味用オモチャということであれば… )

さて。追加分の開発メモです。ちなみに、いくつかはOPCサポートへ報告済みです。次のバージョンとかに反映されるのを夢見て、床につきます。

2015-05-30 開発メモは別の記事へまとめました。

Olympus Camera Kitで遊ぶ #1

OLYMPUS AIR A01用のアプリを作るためのSDK「Olympus Camera Kit for Developers」がOPC Hack & Make Projectというサイトで公開されています。

カメラ買っちゃった勢いでSDKもダウンロードし、「SDKドキュメントに載っているAPIを全て操作できるアプリを作ってみよう!」という無謀な野望のもと、平日は夜な夜な、休日は返上で作り始めてはや1ヶ月。

img20150428_snapshot1 img20150428_snapshot2

一向に完成しない(進捗率は30%ぐらいですかね…。サラリーマンの余暇の範囲ではスピードに限界が…。)し、書き留めた開発メモも結構な量になったので、役に立つかどうかはわかりませんが途中経過として晒しておこうかと思います。それが仕様なのかたまたま弱点なのかバグなのかはあまり深入りせずに。

2015-05-30 開発メモは別の記事へまとめました。

UINavigationViewControllerの入れ子

UINavigationViewControllerを入れ子にするとどうなるのか実験してみました。

Storyboardのスクリーンショット

結果としては Container View を一枚噛ませると概ねうまくいっているようです。逆に Container View を一枚噛ませないと、元の画面から引き継いでしまうらしくイマイチな動作になるようです。

実験結果のソースコードをGithubに置いておきました。

OLYMPUS AIRを試す

普通っぽくないデジタルカメラ、OLYMPUS AIR A01を買いました。

OLYMPUS AIR A01

レンズやアクセサリーを除いた本体はとても小さくてドアノブぐらいの大きさでしょうか。撮れる写真は、スマホ内蔵カメラとはレベルが違う、高級デジタル一眼クオリティです。ちなみに、マイクロSDカードとポケット三脚は用意しておいた方が幸せになれます。

さて、発売とほぼ同時に公開されたSDKを使って、普通のカメラ使用感レポートにはない、マニア臭のする変に細かいところを見ていきたいと思います。

“OLYMPUS AIRを試す” の続きを読む

Auto Layoutで縦と横の画面切り替え #4

前回からの続きです。今回が最終回です。

レイアウトエラーがなくなった状態で、編集画面の下に表示されているサイズクラスを「Any Width  Any Height」と「Any Width Compact Height」の間で切り替えると、片方のサイズクラスにしか有効にならない制約がわかります。

img20150314_autolayout_30 img20150314_autolayout_31

これをシミュレーターで動かして画面を回転させるとそれぞれの配置で表示できているのが確認できると思います。

よく見ると実際のところ、デバイスの回転に合わせて部品が回転しながら配置されるのではなく、画面全体のサイズが変わってそれに合うように移動しているように、トランジションアニメーションしています。

デバイスが回転することとデバイスの表示サイズが変わことは別のことであって、Auto Layoutでは表示サイズの変更をサポートします、と主張しているように思えますね。Interface Builderだけでビューの座標変換行列も指定できるようになると色々と楽しそうですが、さすがにそれはまだ先でしょうか。

以上でした。

Auto Layoutで縦と横の画面切り替え #3

前回からの続きです。

縦置き用の制約と横置き用の制約が衝突しているので、それらを修正します。

ビュー階層が表示されている右上に赤いアイコンがあるのでそれをクリックすると、レイアウトエラーになった制約の一覧が表示されます。

img20150314_autolayout_21

AボタンのとCボタンの縦位置が赤いビューの中央に沿うのは、横置きでは不要なので、それぞれ実行されないようにします。(wAny hC を追加してInstalledのチェックを外します)

img20150314_autolayout_22 img20150314_autolayout_23

AボタンのとCボタンの横位置が赤いビューの左端と右端を基準にしているのは、横置きでは不要なので、それぞれ実行されないようにします。

img20150314_autolayout_24 img20150314_autolayout_25

赤いビューの高さ固定は、横置きでは不要なので、実行されないようにします。

img20150314_autolayout_26

青いビューの右端が親のビューに張り付くのは、横置きでは不要なので、実行されないようにします。

img20150314_autolayout_27

赤いビューの左端が親のビューに張り付くのは、横置きでは不要なので、実行されないようにします。

img20150314_autolayout_28

赤いビューの上端が青いビューに張り付くのは、横置きでは不要なので、実行されないようにします。

img20150314_autolayout_29

これで、すべての制約の衝突が解消され、レイアウトエラーがなくなりました。

最終回に続きます。

Auto Layoutで縦と横の画面切り替え #2

前回からの続きです。

次に、横置き用の画面を作ります。編集画面の下に表示されているサイズクラスが Any Width と Compact Height の組み合わせになるように選択しておきます。

画面の大部分を占める青い色のビューと小脇にある帯状の赤いビューを横置き用に再配置します。それぞれの大きさは、青いビューを520×400で、赤いビューを80×400にしました。

img20150314_autolayout_11 img20150314_autolayout_12

3つのボタンも横置き用に再配置します。Aボタンは下端、Bボタンは中央、Cボタンは上端です。ボタンの大きさは縦置きのままです。

img20150314_autolayout_13 img20150314_autolayout_14 img20150314_autolayout_15

次に、横置きの時にだけ使われる配置の制約を設定します。

青いビューは上端・下端・左端が親のビューに張り付きます。右端は赤のビューに張り付きます。縦置きの時と違うのは下端と右端の設定なので、その2つだけ制約を追加します。

img20150314_autolayout_16

赤いビューは上端・下端・右端が親のビューに張り付きます。幅はデバイスの画面サイズに関わらず固定です。縦置きの時と違うのは上端と幅の設定なので、その2つだけ制約を追加します。

img20150314_autolayout_17

ボタンは、横方向の位置は赤いビューの真ん中に揃えます。縦方向の位置は3つとも異なり、Aボタンは赤いビューの下端を基準、Bボタンは赤いビューの中央、Cボタンは赤いビューの上端を基準にします。いずれも、縦置きの時と違うところを制約として追加します。

img20150314_autolayout_18 img20150314_autolayout_19 img20150314_autolayout_20

横置き画面についてはここまでです。

この時点で、縦置き用の制約と横置き用の制約が衝突しているのでレイアウトエラーになっていると思います。

次回に続きます。