MonoTouchのデザイン自動反映
MACのiPhone開発で、MonoTouchというのがある。
C#で書けるのもいいのだが、それより、IB(インターフェイスビルダー)でデザインしたものを自動的にコード生成する機能がある。
MonoTouchは
・Monoフレームワーク(無料)
・MonoDevelop(無料)
・MonoTouch=iPhone用の開発エクステンション?(無料の評価版あり)
がある。
先の2つは、オープンソース。下の開発はノベル。
好き好きもあるかもしれないが、RADというかデザインして必要分だけコードを書いて走るのなら、余分なことは考えなくてよくて楽だ。
iPhoneというかXCodeそのものが、MVCに忠実で、こういうお手軽にはなっていない。
いきなり包丁を持っても料理できないのと同じということかもしれないが、お湯をかけるだけで出来るのもあるので、一概に正しいともいえない。
MVCでは、デザインにコードを埋めるような手法は、思想に反する。(TT)
実際はフォームの定義と、実行コードは違うのだが、使いまわしからいけば難しいということだろう。
まあ、ちゃんとやるならともかく、お手軽に遊ぶにはいいと思う。
料理だっていろいろあるわけだし。
正式には3.5万ほどかかるが、評価版でシミュレータで遊ぶのなら無料でできる。
そこまではいいのだが、何度やってもデザインが自動反映しない。(TT)
C#はどうでもよくて、ここに魅力があったのだが...。
別々に3つも入れるのでVerとかあるのかとあきらめつつあった。
・最初で日本語が化ける
・テキストBoxに日本語が入らない(とあったが...):
後者は誤解でMonoエディタではないのかな?テキストフィールドもビューもちゃんと(シミュレータでは)日本語入力はできた。
エディタはFontを設定すれば表示はされるが直接入力できないのでコピペになる。
など今も問題はあるが、遊べると思ったのだが...。
FAQやフォーラムでも該当の話題があまりない。
あっても違う話題だったりするし、巷でも、皆さん簡単にできている。(TT)
かなりあきらめつつあった時...
ここから(うまく行っている人の)サンプルをDLした。
そんなに期待したわけではない。
gitなので、そのままDLってわけではなく、コマンドラインをたたく。
git clone http://github.com/chrisntr/Monotouch-Examples.git
みたいなものでとれるので面倒でもない。
で、もって期待もせずにやってみると...なんと自動反映する。びっくり!!
不思議に思って調べると
MainWindow.xib
と生成された
MainWindow.xib.designer.cs
の位置関係が自分のと違う。MainWindow.xib.designer.csはxibの子になっている。
自分の場合、MonoTouchが最初に作る
MainWindow.xib.designer.csはxibと同列になって出力される。
もしや...と思って
1)MainWindow.xib.designer.csをプロジェクトから一旦外す
ファイルを削除するのではなくプロジェクトから削除を選ぶ。ファイルは消えない。
2)プロジェクトにMainWindow.xib.designer.csを追加する
元に戻しているようだが、実際は元には戻らず、ちゃんと正規の位置になる。
3)右クリックで最新の情報に更新する
これで自動反映されるようになる。
どうも、これはMonoDeveropのBugらしい。
(後でDelphiPrismを入れると、こちらはちゃんと反映されたがこれはMonoDevelopが古いためらしい。)
そもそもなんでこんな位置にできるのか不思議だ。
自分だけなのだろうか?
何度もインストールしてみたりGTKを入れてみたり...。
これで2日も悩んでしまった。(TT)
結果ようやくまともに自動反映するようになった。(^^)
コード補完もあるので、コマンドも覚えなくていい...わけでもないが、タイプミスは減る。
PhoneGapも悪くないが、やはりネイティブアプリに近いのがいいのでこういうのはいいのかも。
ただ書籍が日本では出ない。海外ではあるようだ。そもそも日本語がおかしいので、それ以前なのかもしれない。
価格は高いが、評価版があるしXCode+IBよりお手軽だと思う。
といっても、ボタンとラベルのチュートリアルを作ったぐらいだけど。(^^!
ただ欠点というか日本語ではエディタに入らない。不便なのは...
・MonoDeveropでの日本語入力ができない
Fontを変えれば表示はできる。入力できないので他のエディタで書いてコピペする。
例えばラベルに「日本語」と表示したい場合などに困る。
これはまだ我慢の部類かもしれない。
このメモが、同じように困った人のためになるといいのだが。
追記)と思ったら、2010.06の日付で新しいMonoDeveropのUpDateが出ており、入れたら正常になった。
今までのは何だったんだろう。(TT)ま、いいか。
結局
・起動時の日本語化け:これは対応策がある
・エディタで日本語が入らない:コピペなら入る
ぐらいになった。
追記)
同社のサンプルで
mtouch failed with no output
が出るものがある。パスにスペースを含むとそうなるとあるが、同社のサンプルだし、それはない。
SDK3.0のものを3.2でやっているせいかもしれないが、それなら別のエラーになりそうだ。
コンパイルは通っているっぽいが、出力されない。
同社のサンプルでも2つほどそうなった。他は正常に出力された。
考えると原因不明なのでこれもちょっと欠点に思う。
>このメモが、同じように困った人のためになるといいのだが。
とても助かりましたぁ。