2013年8月27日火曜日

シンプルとは何なのか【開発日誌8月26日分】

長期の合宿で間が開いていたので、久しぶりの開発になりました。

合宿の内容は、組み込み開発の基礎を学んで、実際に開発を行ってみるというもので、kobukiというrumbaから掃除機能を抜いたロボットを使って、障害物を避けながらゴールを目指す、というコンテストに参加しました。



そこで、MDD(モデル駆動開発)での組み込みを体験しましたが、UMLモデルを普段書かないこともあって、なかなか苦戦しました…。
あまりいいタイムは残せなかったのですが、ベストモデラー賞をいただくことができたので、結果的には良かったです。




合宿の話はここらへんにしておいて、開発の内容に移ります。


今回まず行ったことは、Appleさんが復活していたので、前々からやろうと思っていたiOS Developer Programの登録を行いました。

予想通り過ぎるのですが、今回もまた問題が発生しました。


こんなエラーが出るんですね。
調べてみたとこ、もうApple Supportに連絡するのが一番早いということだったので、連絡してみたところ、AppleIDの名前と住所をローマ字表記にすればいいとのことでした。
変更してApple Supportの方に連絡はしたので、あとは返信を待つだけです。


次に、進めているプロジェクトのUIを考えます。
わかりやすくて、重要な情報をすぐに知ることができるというUIを考えていたのですが…。

難しいです、自分にデザインの才能が皆無なのは22年前くらいからわかっていたことなのですが、全く思いつきません。絶望しました。

シンプルに、わかりやすく、というのが大事なことはわかるのですが、考えれば考える程、シンプルというのは何なのかがわからなくなってきました。
オブジェクトが少なければシンプルなのか?機能を少なくすればシンプルなのか?

さっぱりわかりません。

出来る人は直感的に出来るものなんですね。
結局、チームの一番デザインに長けている人が活躍して大体決まりました。
絵とか書ける人、いいですよね…。


次に、サーバーとの通信で得た時間のデータを、自然な表記に直す、というプログラミングを行いました。
これはNSDateFormatterを使用して実装しました。


NSDateFormatter *inputDateFormatter = [NSDateFormatter new];
[inputDateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]];
[inputDateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ssZZZZ"];
NSDate *timeDate = [inputDateFormatter dateFromString:rawDateString];
return timeDate;

こんな感じで書いたんですが、このコードのsetDateFormatの部分を変えるだけで、色々な形式に対応できると思います。
表記方法としては、データと関係ない『-』や『:』は『'』で囲むというのが正しい表記みたいです。


今回はここで時間がきました。
次回はコードレビューが中心なので、中々開発は進まないと思います。

2013年8月7日水曜日

地獄のマージ地獄【開発日誌 6日目】

やっぱりタイトルつけないと寂しいのでタイトルつけました。
と言っても、適当に思いついたものを書いてるだけですけど。

開発 6日目の目標
  • Storyboardの完成
というわけで、アプリの画面遷移をまず完成させてしまおうということで、Storyboardをあちゃこちゃいじってました。
まず躓いたのが、Storyboardを分岐させる方法です。


これは完成した後のStoryboardですが、こんな感じで、Viewが分岐しておるのです。
ボタンを押下した時にViewの遷移をするようにすると、Viewへの紐付けが一つまでしかできません。
今回は、前回に通ったViewの種類を判別して、次に遷移するViewを選択するようにしたいのでボタンから紐付ける方法ではできませんでした。(どうにかしたらできるかもですが、未熟なので許してください)
そこで調べてみたところ、ViewからViewへの紐付けなら複数でき、そこからsegueにidentifierを付けてやることによって、簡単に分岐できるとありました。
その通りでした、こんなことを知らなかったのが恥ずかしくなるくらいその通りでした。

[self performSegueWithIdentifier:@"segue identifier" sender:self];

これだけで、指定したSegueを呼び出して画面遷移を行なってくれる、超便利。

あと、NavigationControllerの便利です。
Viewをスタックしてくれるので、戻る処理などがすごく簡単に実装できます。

Storyboard周りをもっとくわしく知ることが出来たら、開発も少しは楽になりそうな気がしました。
といっても、全体的に技術力が足りてないので頑張って勉強します。


今回でStoryboardは結構できたので、次はサーバー通信のほうを実装してみようかと思います。

2013年8月6日火曜日

開発日誌【5日目】

開発日誌の5日目、今日の目標は

  • コードレビューを行い、他のチームメンバーが書いたコードを理解する
  • Storyboardをあらかた完成させる

この2つです。
喪に服していた自分としては、コードレビューは非常に重要です。人のコードを理解する、ということは、自分が得るものも非常に大きいと思っています。

コードレビューで重要だと思ったこと
  • delegateの明確な意味
  • メソッドオブジェクトパターン
  • Storyboard周りの画面遷移
  • サーバーとの通信方法

結構わからないことが多くて大変でした…
細かい内容は、調査してからまたブログに書こうかと思っています。

今回はコードレビューでかなり時間をとったので、開発の時間はあまりありませんでした。
次回もStoryboardの作成を続けたいと思っているので、NavgationControllerの使い方をよく理解しなければ…

あ、Developerはまだできません、早く治らないものか…

2013年8月2日金曜日

開発日記 【1~4日目】

やっと授業が終了したので、長期休みを使って本格的に開発をして行きたいと思ってます。
夏休みが終わるまでは

■月~金
   共同研究のプロジェクトを10:00~19:00
■土、日
   自作iPhoneアプリ作成(気が向いたら)

こんな感じで行きたいと思ってます。
そんなに内容を詳しく書くつもりもありませんが。ドキュメント作る時間がもったいないと感じてしまうのはまだまだ未熟だからなのでしょうか…


開発【1日目】
目的 : iPhoneでQRコードを読み込む機能と、3軸加速度を測定する機能を実装する。

まず最初に、QRコードを読み取る機能を実装する。QRコードを読み込むライブラリはデフォルトでは用意されていないので、外から取ってくる必要がある。
今回はZXingObjC.frameworkを導入した。

早速シミュレーターで実行!!…できませんでした。

シミュレーターにはカメラがついてないのであたりまえでした。
私はまだiOS Developer Programに登録していないので、実機でプロジェクトを走らせられないんです。
そこで、この機会に登録してしまうことにしました、どうせ後でするつもりでしたし。


しかし…


iOS Developer Programがメンテナンス中でいつまで経っても登録できず、結局あきらめました…


気を取り直して加速度を測定する機能をやることにします。
加速度を取得するために、CoreMotion.frameworksを導入します。
これはデフォルトで用意してあるので、ライブラリをインポートするだけでオッケーです。
その後コードを書いて、いざ実行しようとしました。


しかし…


実機じゃないと加速度もクソもないです。そして登録してないので実機で実行できないです(絶望)

Developer登録してないと何もできない、そう実感した一日でした。【一日目終了】

【2日目】
喪に服してました

【3日目】
喪に服してました。

【4日目】
目的 : QRコードを読み込む機能と、加速度を測定する機能を完成させる。

しばらく喪に服してたので久々の開発です、やる気満々です。


しかし…


チームメンバーが優秀過ぎて、私がいない間にQRコードを読み込む機能は終わってました。他のプロジェクトも同時並行で開発してるのに…どういうことなの…

気を取り直して、加速度を測定する機能をやります。
まず、前回できなかったDeveloper登録を…


【メンテナンス中】


あまりにも長すぎるでしょう?
これじゃあまた実機で実行できないじゃないですか…

しょうがなく、他のプロジェクトの開発をしてる、Developer登録をしているチームメンバーに、頼んで実行。

上手く行きませんでした…
原因はよくわかりませんでした…


4日目は、他のプロジェクトに首突っ込んだり、進んだ分の情報を共有したりしてたら終わってました。
あまり書くこともないので終了。【4日目終了】


2013年5月30日木曜日

新しいAndroid端末で最初にすること

ブログを全く更新していませんでした。
私です。

最近、忙しいようで忙しくないので、中々更新するタイミングが無く、放置気味でした、という言い訳。
流石に2日坊主で終わらせるわけにはいかないのです、ブログのネタ的にも開発頻度を上げなければ…


そんなこんなで、タイトルを見て分かる通り、今回はAndroidのことについて書きたいと思います。

理由は簡単、私が新しいAndroid端末、Xperia Zを購入したからなのです。

先代のgalaxy SⅡの動作が不安定だったので、そろそろ2年経つし買い換えたいと思っていた矢先に、このXperia Zが出ていたわけですが…

衝動買いしました。


裏面までガラス張りの美しいフォルム!!
これはきましたわ!
と、思って思い立った当日に予約しにいきました。

同時期に出たAQUOS PHONE ZETAと結構迷ったりしたのですが、デザイン性、評判からXperia Zを選ぶに至りました。

IGZOもすごく魅力的なんですけどね…



前置きはさて置き、そろそろ本題に入りたいと思います。
新しいAndroid端末を手にして最初にすべきことって何でしょうか?

ケースを装着する?保護シートを貼る?アプリをダウンロードする?

どれも大切なことですが、まずは初期設定でしょ!
ってことで、自分は環境構築は大好きなので、Androidをいじりました。

何のためにいじるのか、それはずばり

バッテリー消費を抑える

という理由です。

当たり前のことですが、どちらも大切なことです。
スマホはバッテリー持ちが悪くて皆さんも苦しんでいるんじゃないでしょうか?

そこで、Androidを少しいじるだけでバッテリー持ちがよくなる、自分も実際にやっている方法を紹介したいと思います。
何番煎じだよってツッコミは無しで、皆さんにスマホの便利さを伝えるためにやっていることなので許してください(適当)


まず一つ目!必要ない機能は無効化する!

Android4.0から機能を無効化する、ということができるようになりました。
これでいらない機能を無効化しまくってしまえばいいのです。裏で悪さしているアプリなども全て無効化すればバッテリー持ちも良くなるという寸法です。

無効化の仕方は

端末設定→アプリ→すべて→無効化したいアプリを選択


ここで『無効にする』を選択すれば文字通り無効化することができます。

何を無効化すればいいかは自分の契約してるキャリアや、機種のメーカーによって違うと思うので、そこは調べてみればいいと思います。

これだけであら不思議、結構バッテリー消費を抑えることができたりするんです。
無効化して不具合が出る場合もあるのでそこは自己責任でお願いします。


一例として、自分が無効化しているアプリを紹介します。
※飽くまで自分のXperia Zの設定です


正直に言って、キャリアやメーカーが勝手に入れているアプリやソフトはゴミ同然なものばかりなので、無効化しまくってしまっていいです。
何か問題が起これば無効化を解除すればいいだけですしね。

特に、docomoユーザーの方は
  • 電話帳サービス
  • iコンシェル関連
これを真っ先に無効化するべきです。
裏で勝手に暴走して勝手にバッテリー食ってます。


まだやるべきことは色々あるんですが、量が多くなってきたので今回はこの辺で。

2013年4月27日土曜日

せんちょ君とセント君の血縁関係は無い、などと意味不明な供述をしており

おはようございます。

昨日は多忙でブログを書く暇が全く無かったので朝から更新していこうと思って筆を執った次第でございます。

もう昼だけどね(絶望)

今日は朝からiPhoneアプリのチーム開発する予定だっただけど、見事に寝坊してしまった。えぇ、クソかと思いました。自分が。
なので猛省しながらブログ書いてます。精一杯の謝罪の意をこめてブログを殴り書きしてます。開発メンバー揃ったら本気出す。


そんなこんなで今開発してるのは、以前に作成した金銭管理アプリケーション『CEMPEI式貯金』略して『せんちょ』の改良バージョンです。

『CEMPEI』っていうのは、開発チームの名前です。せんべいっぽいですが、無関係です。以前血縁関係あったわけでもないです。

さて、このせんちょ君なんですが、何故改良が必要なのか?というと


びっくりするほど使いにくい

この一言に尽きます、ええ。

初めての開発だとか、開発時間がカツカツだったとか、言い訳はたくさんありますが、それにしても使いにくいです。

ユーザーレビュー☆2くらうレベルです。
レビューが出会い系の広告で埋まるレベルです。


これではいかんと、多少の経験値を積んでレベルアップした私達が改良に乗り出したわけですね。
自分のレベル3くらいですけどね、おおきづち辺りはちょっときついレベルですね。
でも大丈夫、うちのパーティーにはレベル30の勇者と、チート使用の遊び人がいるので安心。

主な改善点として、コードの品質向上、ユーザビリティの改善が主に挙げられます。
研究室の先輩にユーザビリティテストを行なっていただいたのですが、その結果がもう、ひどいってもんじゃなかったんです。
結果を聞くときの開発チームの顔と言ったらもう…


あ、そろそろ開発を始めないと。
ノリが軽すぎてせんちょのことを全く紹介できていないので、後々書いていこうと思っています。


それでは、状況開始!

2013年4月25日木曜日

脅迫から始まるブログもある

研究室の友人からブログを書けと脅迫されたので、ブログを作成してみた。
命の水である、いろはすみかんをもの質に取られるともう従うしか無い、まっくす怖い。


ブログは自分がやってきたことを記録として残せるので気になっていたのでちょうどよかったのかもしれない。
日々の出来事を、暇を持て余した主婦のように書いていきたいと思ってます。
三日坊主にはならないように頑張りたい、なる可能性のほうが高いけど。

ブログを書いて記録に残しておくと、就活の時にも役立つと偉い人が言ってた。
どう役に立つかはそのうち考えよう。
偉い人が誰なのかもその内思い出す。


そんなこんなで初回はいろはすみかんのステマをして終わり。