2011年7月27日水曜日

WindowsPhone 日本で発売開始

au、国内初のWindows Phone 7.5スマートフォン
http://av.watch.impress.co.jp/docs/news/20110727_463225.html

ようやく日本でも秋から発売になります。
Androidは比較的消去法的に選ばれているのではないかと思っていますが、
WindowsPhoneはもっと積極的な理由で使われそうな、とてもかっこよく、つかいやすそうで、iPhoneのあからさまなパクりでもなく、MSが満を持して出してきたよくできたスマートフォンだと思います。
私も含めWindowsという名をきいただけで、うっと拒否反応を示す人もいるかもしれませんが、見ればわかりますが、デザインなど一新されているので期待がもてそうです。

WindowsPhoneではAndroidで問題だったマーケットの問題や、デバイスの規格がバラバラでアプリが動かなかったり見た目が崩れたりする問題などにうまく対処されており、アプリの数さえそろってくれば、正直Androidはかなりやばいのではないかと思います。

あとはデバイスのメーカーがどれだけWindowsPhoneを載せるかにかかっているのではないでしょうか。

結構Androidはオープンソースそのままだとほぼ使い物にならず、各メーカーが独自に手を加える必要があり、製品としてよいものをだそうとするとかなりの力が必要となります。
その点WindowsPhoneがどうなのかはわからないですが、たぶんAndroidに比べると断然楽だと思うのでメーカーもさっさと手のかかるAndroidから手をひいてWindowsPhoneにいくという決断を下すということも十分考えられそうな気が。

Androidは開発者のおもちゃとしては最高ですが、残念ながら今がピークなのではと個人的に思ってたりします。そのうちPCのOSと同様にMS対Appleの構造になるのではないかな。

2011年7月23日土曜日

ABC2011Summer レポ

ABC2011Summerに参加してきました。

Android Bazaar and Conference 2011 Summer
http://www.android-group.jp/abc2011s/

感想

回を重ねるごとに熱が帯びてきている感じのABC。
午前の基調講演は見に行かず、ちょっと遅めに行ってバザールを見て、午後からカンファレンスに参加してきました。

前回は、基調講演⇒カンファレンスという流れでフルでカンファレンスに参加していたら、全然バザールが見れなかった反省を踏まえてちょっと変えてみましたが、結構空いててよかったです。
また、カンファレンスも前回の時点で結構立ち見も多かったので、今回はデザインセッションに絞ってずっと居座る作戦で成功しました。が、他のも見たかったな・・

あと懇親会にも参加して、他のエンジニアの皆様と交流することができ、色々と情報を収集することができ有意義な時間でした。当方人見知りなので結構疲れますが、頑張って出るべきですね。話のネタとして名刺と自作アプリとかは必要だなと思いました。

以下デザインセッションのメモ。

メモ

・Google I/O 2010で紹介されたデザインパターンを参考にするとよい

・AndroidとiPhoneでは全然UIが違う。iPhoneは左上に閉じるボタンがあったりと作法が違う
・Android UI Designe Patternは以下のようなものがある
詳細はこちらを参照(http://dl.google.com/googleio/2010/android-android-ui-design-patterns.pdf)

  1. dash board
  2. action bar
  3. search bar
  4. quick action
  5. companion widget

・Googleが作っただけあってこれらのデザインはwebの設計思想に近い
・HoneyCombではaction barをフレームワークでサポートするなど組み込まれてきている
・日本と欧米では操作の仕方が結構違う(日本では片手が多いが海外は両手だったり)

・スマートフォンを自分以外の人がどのように使っているのか考える必要がある
・単に画面を小さくしたのではだめ
・スマートフォンらしさ:コンテンツに集中。 iPhoneらしさ:迷わず使える
・コンテンツとコンテキストを再整理する。
・プロトタイプをつくるには、ステンシルやcacuuなどのツールを使うのもよい
・keynotopia(http://keynotopia.com/)というツールも便利

・横スクロースしない、横幅にフィット
・Landscapeだと見やすくなるが情報量が減る
・LandscapeとPortraitでレイアウトを変える。
・ひとつのソースでレイアウトを手間がかかる。
・ボタンは44pixel以上必要
・今後はレスポンシブWebデザインで1ソースでマルチデバイス対応が多くなりそう
・現状のサイトをスマートフォン対応するよりも最初からスマートフォンを意識したデザインにしておくとよい

・Androidの解像度は大きく分けて4種類ある
・ボタンなどは9patchを使うことで解像度の変化に対応できる
・draw 9patchとうツールがSDKに入っている(ただし使いにくい)

リンク

丸山先生の基調講演資料

2011年7月21日木曜日

Mac OS X 10.7 Lionインストール

Mac OS X 10.7 Lionがついにリリースされたので早速入れてみました。

Mac App StoreからLionはダウンロード。
かなり大きいファイルなので一晩寝かして起きたらダウンロード完了していました。

インストールは約30分程度であっさりOSのアップデートできました。

大きく影響があったのはやはりマウスのスクロールの前後が逆になったことで
マジックマウスだと微妙なのでシステム環境設定で「スクロールの方向」のチェックボックスをOFFにして解除しました。
Lionでは色々とマルチタッチ操作が追加されているようなのでマジックトラックパッドを注文しました。

あとはExposeがMissionControlに置き換わった感じで、ちょっと慣れるのに時間がかかりそう。

またXcodeを使っている方が気をつけなければならないのは、Xcode4.1にアップデートしないとXcodeが立ち上がりすらしないという点です。
たぶんLionにしてからでないと4.1はダウンロードできないので、ダウンロード時間を考慮してかなり時間に余裕を持ってやらないと、Xcodeが使えずに困ってしまうという事態が起こってしまいますので要注意です。

私の場合は特にトラブルは発生せずにXcodeのアップデートはできましたが、たまにitunesを立ち上げてもいないのに、itunesを落とせとか言われる方もいるようで、そう言った方はアクティビティモニタを起動して、itunes Helperのプロセスを終了させればいいみたいです。

2011年7月13日水曜日

2011年 目標の中間経過

今年の目標としてこんなのを立てていました。
http://yanayblog.blogspot.com/2011/01/2011.html


早くも半年経過したところで振り返ってみます。

  1. 読んだ本の感想を書く
    • △:半分くらいは書いたかなぁ・・というところです。。技術書メインにしていたのでちょっと書き難かったのもありますが、反省して後半は書いていこうと思います。
  2. ソフトウェアの名著を月一冊読む
    • ☓:優先度を下げて実用的なのを読んでいたので1冊しか読めてません!これも反省。。
  3. Python+JavaScriptで実用的なプログラムを作る
    • △:正直Webプログラミングは全然やってません。その代わりにiPhoneアプリを一個作って現在自分でテスト中です。
  4. TOEIC700以上
    • ◯:695点だったのでクリアできそうな予感
  5. セミナー、勉強会に10回以上参加
    • ◯:8回
読書がちょっと放置気味だったので後半は少し巻き返せたらと思います。
3の目標はiOSアプリをAppStoreにリリースするに変更ということで頑張りたいです。

2011年6月29日水曜日

Googleからどどーん

Google+
http://gplusproject.appspot.com/static/ja.html
Googleの新たなSNSって感じで結構満を持して出したって感じがします。
Facebookとの違いはFacebookは友達にはすべて平等に公開ですが、
Google+では「サークル」という概念がありその中でのコミュニケーションといった感じでしょうか。
GoogleのSNSはダメというジンクスと、Facebookの牙城を切り崩せるのかというところがポイントですね。

Swiffy
http://googlecode.blogspot.com/2011/06/swiffy-convert-swf-files-to-html5.html
FlashをHTML5に変換するサービスです。
どこまで完成度が高いのかはGoogle labなのでよくわかりませんが、
Flashの終焉も刻々と近付いている感じがします。

Google Developer Day 2011 Japan
http://googledevjp.blogspot.com/2011/06/google-developer-day-2011-japan.html
GDD2011が11月1日@パシフィコ横浜で開催されます。
今年も参加するにはクイズに正解しないといけないみたいなのでがんばらないとです。

2011年6月19日日曜日

Objective-Cで気をつけるべき点

C++やJavaからObjective-Cを使うにあたって間違いやすい点や異なる点です。

同じオブジェクト指向言語といっても、言語によって慣習や考え方はかなり異なることがあります。
他の言語の慣習や考え方を持ち込むのは可読性を損ねるだけでなく、一貫性も損ねることとなるので言語の考え方や慣習はきちんと学ぶべきだと思います。


インスタンス変数はデフォルトはprotected
@privateを使うことでprivateにすることができます。publicも同様にできますが、カプセル化を阻害するのでもちろん推奨されていません。


メソッドはすべてpublic
ヘッダーファイルでプロトタイプ宣言してなくても、メッセージを送ると呼び出せますので、.mファイル側にだけ宣言していたとしてもprivateになったわけではありません。
Objective-C 2.0(iOS)であればクラスエクステンションを使うことで、ヘッダーファイルのほうにプロトタイプ宣言をしなくて済むのとクラスエクステンションを見るとどれがprivateメソッドなのか判定することができます。
privateメソッドに接頭語を付けて見分けるというのも合わせて使ったほうがいいかもしれません。
Extensions(The Objective-C Programming Language)

propertyのデフォルトはatomic
propertyはデフォルトはatomicになっているので無駄に排他制御がかかり性能に影響します。排他不要の場合はnonatomicを必ず書きましょう。

initでインスタンス変数はすべて0で初期化される
Javaと同様に初期化が自動でされるので、C++のようにコンストラクタで0で初期化する必要はありません。
Allocating and Initializing Objects(The Objective-C Programming Language)

nilのオブジェクトにメッセージを送っても無視されるだけでクラッシュはしない
C++のようにクラッシュ回避という意味でのnilチェックは不要です。nilチェックは通常ケースのハンドリングで使います。
Sending message to nil(The Objective-C Programming Language)

BOOLのYESは1とは限らないので、if文内での判定には使わないようにする。
BOOLはunsigned charと同じなので1以外の数が返ってくる恐れもあります。 == YES は避けたほうがよいです。

NSString,NSColor,NSURLはretainではなくcopyを使う
NSStringなどといった value objectsとよばれるオブジェクトにはcopyをつかったほうがよいそうです。
copyとして保持したり返したりするので不変であることが保証できるからのようです。
Value Objects and Copying(Memory Management Programming Guide)

string = value;
と
self.string = value;
は別物
全者は単なる代入ですが、後者はpropertyによって作られたアクセッサを使っています。後者だとpropertyの宣言によってただの代入だったりretainやcopyされたり排他がかかったりと動作が異なります。

delegateはretainしない
巡回参照による無限ループにはまらないようにdelegateはretainせず、参照だけを保持する。
Weak References to Objects(Memory Management Programming Guide)

メソッド名に接頭語は使わない。
doやdoesをつけるのも意味的な問題で推奨されていません。getも付けないのが慣習です。
General Rules(Coding Guidelines for Cocoa)

引数にキーワードをつける。
キーワードなしでもメソッドの宣言はできますが、キーワードをつける。
General Rules(Coding Guidelines for Cocoa)

プライベートメソッドは独自の接頭語をつけたほうがよい
知らないうちにオーバーライドしてしまうことを防ぐためと、プライベートメソッドを見分けやすくするために、接頭語をつける。ただしアンダーバーはAppleが使っているので独自のものを用意する。例えばBF_addObjectなど
Private Methods(Coding Guidelines for Cocoa)
Typographic Conventions(Coding Guidelines for Cocoa)

#defineは使わずenumもしくはconstを使う
C++と同じで#defineだとプリプロセッサで数値に置き換えられてしまうので、enum,constを使う。
Other types of constants(Coding Guidelines for Cocoa)

通常ケースのハンドリングでは例外は使わない。
JavaではFileNotFoundなど通常のハンドリングにも例外を使いますが、Objective-Cでは、配列外アクセスなどクラッシュするような場合など本当に例外な場合にのみ使います。
そのため、例外はテストなどのデバッグ期間でしか発生しないものでなければなりません。
Exceptions and Errors(Coding Guidelines for Cocoa)

名前空間はない
C++やJavaのように名前空間はありません。NSとか接頭語がついているのもそのためです。

ヘッダーファイルでの2重インクルードの防止は不要
CやC++ではヘッダーファイルの2重インクルードを避けるために#ifdefをヘッダーファイルにつけるのが慣習ですが、Objective-Cでは#importを使えば不要です。


余談ですが、Googleのガイドラインを見るとかなりがっちり決まってたので驚きました。
Objective-Cはフリーダムにかける方だと思うので複数人での開発であれば、Googleのように厳密に決めてやったほうがいいと思います。しかし、性能などとのトレードオフもあるので他のガイドラインをまるパクりではなく、プロジェクトにあったものを選択して採用すべきです。

参考資料
Cording Guidelines for Cocoa
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html

The Objective-C Programming Language
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html

Memory Management Programming Guide


Google Objective-C スタイルガイド(日本語訳)

2011年6月13日月曜日

HPとRIMのタブレット

webOS,BlackBerryと新たなプラットフォームを要したタブレットがいよいよ登場。

HP、PalmのwebOS搭載タブレット「HP TouchPad」を7月に発売http://www.itmedia.co.jp/news/articles/1106/10/news020.html

RIM、タブレット端末「BlackBerry PlayBook」を世界展開、16カ国・地域で発売へhttp://itpro.nikkeibp.co.jp/article/NEWS/20110613/361295/

これでタブレットの役者はほぼ揃いました。
Windowsはかなり遅れをとってますね・・

といってもただ出揃っただけで、やはりどれもiPadを照準としてつくっていたのは明らかで
残念ながらiPad2が出てしまった今では、比較すると見劣り感がいなめなく、かなり不利な状況ではないでしょうか。