Date:  Wed, 25 Aug 2010 18:13:19 +0900
Subject:  【オブジェクト倶楽部: 2010-33号】
X-Mail-Count: 00351

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.341 2010/08/25

■ I N D E X
┃
┣【プログラミング】気軽に始めるiPhoneプログラミング [3]
┣【PF】たまには仕事に役立つコミュニケーションのヒント [36]
┃      〜他部門とのコミュニケーション〜
┗ 編集後記

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┗【プログラミング】気軽に始めるiPhoneプログラミング [3]

こんにちは。オブジェクト倶楽部のdotです。
少しずつiPhoneのアプリ開発に慣れてきたところで、今回はテーブルビュー
(UITableView)を使っていかにもiPhoneっぽい感じのUIを作ってみましょう。

前回同様にXCodeで"View BasedApplication"を選び新規プロジェクトを作成し
ます。プロジェクト名は取りあえず"oblove2"とするものとします。もし違う名
前を付けるのであれば、以降プロジェクト名と"oblove2"を置き換えて読んでく
ださい。

プロジェクトが開いたら、まず、ViewControllerクラスにUITableViewDataSource
プロトコルを継承させます。
これはテーブルビューを使うための前準備で、テーブルビューに表示するデー
タを管理するクラスがoblove2ViewControllerであることを明示的にする目的が
あります。

[oblove2ViewController.h]
@interface oblove2ViewController : UIViewController<UITableViewDataSource> {
}

ここでCmd+Bでビルドするとoblove2ViewController.mにワーニングがでます。
これはUITableViewDataSourceプロトコルを継承するクラスは以下のメソッドを
定義する必要があるというワーニングで、XCodeのデベロッパドキュメントで
UITableViewDataSourceを引くと、

- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section

の2つのAPIがrequiredとなっています。中身は後で実装するとして、ガワだけ
定義してしまいましょう。

[oblove2ViewController.m]
@implementation oblove2ViewController
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   return nil;
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
   return 0;
}

これでワーニングは消えます。次に左ペインのNIBファイルフォルダから、
"oblove2ViewController.xib"をクリックしてインタフェースビルダを開きます。
インターフェイスビルダではLibraryウィンドウの中からUITableViewをビュー
にドラッグ&ドロップします。多少紛らわしいのですがUITableViewCellという
のもあるので間違えないようにしましょう。

テーブルビューの配置が終わったら、次にテーブルビューのアウトレットを設
定します。テーブルビューを右クリックして表示されたウィンドウからdataSource
を選び、そこからoblove2ViewControllerまで線引っ張ります。

この一連の操作でテーブルビューのデータを管理するクラスとして
oblove2ViewControllerクラスを利用する準備が整いました。
この時点でコンパイルしてiPhoneシミュレータで起動することもできますが、
何も表示されていなくてグリッドだけで寂しいので、試しに何か情報を表示し
てみましょう。

テーブルビューにデータを表示するには先ほど定義したUITableViewDataSource
の2つのAPIを使います。が、その前に表示するデータを考えておきましょう。
インスタンス変数としてNSArrayを定義して、viewDidLoadメソッドでビューの
ロード時に初期化して、deallocで解放します。

[oblove2ViewController.h]
@interface oblove2ViewController : UIViewController<UITableViewDataSource> {
   NSArray* data;
}
[oblove2ViewController.m]
- (void)viewDidLoad {
   [super viewDidLoad];
   data = [[NSArray alloc]initWithObjects:@"西脇綾香", @"樫野有香", @"大本彩乃", nil];
}
- (void)dealloc {
   [super dealloc];
   [data release], data = nil;
}

NSArrayは必ずnilで終了する必要があるので憶えておいて下さい
次にこのデータを表示します。

[oblove2ViewController.m]
static NSString *_cellId = @"mycellid";
- (UITableViewCell *)tableView:(UITableView *)tableView
        cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:_cellId];
   if (cell == nil) {
       cell = [[[UITableViewCell alloc]
                initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:_cellId] autorelease];
   }

   cell.textLabel.text = [data objectAtIndex:indexPath.row];
   return cell;
}
- (NSInteger)tableView:(UITableView *)tableView
 numberOfRowsInSection:(NSInteger)section {
   return [data count];
}

tableView:numberOfRowsInSection:
メソッドは指定されたセクションに何行のセルを表示するかを決めるメソッド
です。今回はセクションは無く、dataにある3要素なのでそのままdataが持つ要
素数を返します。
tableView:cellForRowAtIndexPath:
メソッドは、指定されたセクション、行で表示するセルインスタンスを返すメ
ソッドです。テーブルビューは画面に収まらない行のデータも表示することが
ある都合上メモリを有効活用する目的でセルのインスタンスは使い回すことに
なっています。そこで、同じ種類のセルの場合はインスタンスを使い回せるよ
うに予めidを決めておいて、同じidのセルインスタンスがある場合はテーブル
ビューのdequeueReusableCellWithIdentifierメソッドを使いインスタンスを使
い回しています。データ自体は行数に応じてセルの中のテキストラベルに対し
て書き込んだ上でセルインスタンスを返します。

これでiPhoneシミュレータを起動するとどうでしょうか?めでたくデータが表
示されてることと思います。
今回はこれぐらいで、次回にもう少し深くテーブルビューの使い方を説明しま
す。

最後にAppleのサンプルコードをご紹介します。Appleが提供しているサンプル
コードの中には"UICatalog"というUIコンポーネントの使い方をまんべんなく紹
介しているサンプルコードがあります。とても参考になるので見たことが無い
という方は、是非一度ダウンロードして見て下さい。

サンプルコードをダウンロードするには、iPhone Dev Centerを開き"Sample Code"
へのリンクをクリックします。
http://developer.apple.com/iphone/index.action

サンプルコードの一覧から、"UICatalog"というサンプルを探します。
http://developer.apple.com/iphone/library/samplecode/UICatalog/Introduction/Intro.html
各サンプルコードページの上部にはダウンロードへのボタンがありますので、
サンプルコードをダウンロードしてXCodeで開いてソースを呼んだり、iPhoneシ
ミュレータで動作を確認してみるとよいと思います。

Appleが提供するサンプルコードはUICatalog以外にもたくさんのサンプルコー
ドがありますので、何かAPIの使い方やアプリケーションのことでわからないこ
とがあったら、参考になるサンプルコードを探してみる癖をつけるとよいと思
います。(dot)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ■━
■
┣【PF】たまには仕事に役立つコミュニケーションのヒント [36]
┗      〜他部門とのコミュニケーション〜

今日は他部門とのコミュニケーションについて考えてみたいと思います。
業務の中で、他部門とのコミュニケーションを取る機会はは多いでしょうか?
開発、品質管理、営業、コンサルティング、あるいは、人事、経理、総務。
どの仕事もそれぞれの役割を持って組織の中にあるわけですから、プロジェク
トという観点からばかりではなく、気がつけば多くの人たちが他部門と連携し
ながら仕事をすることも考えられますよね。

思えば私はいくつものプロジェクトを横断してマネージメントを行う業務を長
く担当していたため、チーム内よりも他チームや他部門とどううまくやるかが
いつも課題だったような気がしています。

● まずは顔を覚えてもらうこと
こういった「横串」の仕事でとても重要なのは、「○○の人」として顔を覚え
てもらうことにあると思います。
以前私が働いていた組織はとても大きな組織でした。そういった仕事環境の中
で仕事をする際にとても困ったことは、なかなか顔を覚えてもらえずにいたこ
とです。自分の仕事であるにもかかわらず、特定の上司やリーダーのところに
情報や仕事が集まってしまっていました。
あとから「上田さんだよね」といった具合にそれが私のもとに回ってくる始末。
単にご迷惑をおかけしてしまうばかりではなく、業務のスピードにも影響が出
てしまうことが日常の問題としてありました。

そのときに私が行ったことを思い出すと、とにかく「○○の担当です」と、多
くのところに顔を出したというシンプルな方法しか思い当たりませんが、当時
の自分にもしもアドバイスができるのであれば、「自分たちの業務をよりよく
するための質問をすること」をアドバイスしたいなと思います。

たとえば、私がPMOとして「それぞれのプロジェクトの情報や状況を正しく吸い
上げ、プロジェクトがよりよく進むためのサポートをする。しかし、なかなか
必要な情報が吸いあがらない」とします。
どうせいろいろな人と話すのであれば、日ごろこういうことについて意見を聞
き、自分が困っていることについてのヒントをいただいたり自分の考えを知っ
てもらうということができると思います。
アンテナを立てている人のところに、人や情報が集まります。つまり、顔を覚
えてもらうというのは「考え方を知ってもらう」ということも含まれているか
らです。

● 交渉ごとは落としどころをもって
他部門との交渉が上手にできることは、「横串」の仕事の中でとても大切なこ
とされています。
かつての私はどうしても「顧客の要請」「リリースの時期」「上司が言ってい
る」などとありとあらゆる紋所を大義名分として正面からぶつかり玉砕してい
たものでしたが、多少は知恵がついた今となってはそれがどれだけ幼稚な手段
だったのかと恥ずかしくなります。

他部門との交渉の際には、事前に根回しをすることがいいでしょう。
レビューの場で突然に言い出すと、却下になる可能性は大いにあります。人は
一見無理そうなことを喜んで引き受けるということは無いからです。

レビューの前に「プロジェクトが思うように進んでおらずに申し訳ないが、○
○をお願いしたい」など、交渉したいことをとあらかじめ伝え、そのためには
どのような準備をしたらいいか?ということについて話してみることはいかが
でしょうか?
こうすることで、よほどのことではない限り条件次第では力を貸してくれる可
能性は十分にあります。同じ会社内であれば、同じ目的のために力を合わせる
ことは双方が納得しやすいからです。
もちろん、事後にはお礼も忘れないでくださいね。

● 最後に
今日は「他部門とのコミュニケーション」ということについて考えてみました。
かつての上司に「横串の仕事ができるようになって一人前」と言われたことが
ありますが。日ごろの評判がそのままダイレクトに影響しやすく、社内調整は
外部コミュニケーション以上に奥深く、組織で仕事をするための大切な考え方
です。ぜひ読者のみなさんも実践していただいて、もっと新しい視点があった
らぜひコメントくださいね。(上田雅美@Anegokikaku)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人のナガタユウコです。毎月最終週の編集後記にて、翌月の
オブラブカレンダーを公開&ご紹介しているのですが、みなさまカレンダーを
ご覧くださっていますでしょうか・・・?今号では9月のカレンダーをご紹介し
ているのですが、9月・10月・11月は3ヶ月連続で「スクラム」が題材になって
います。3ヶ月連続で同じ題材というのはオブラブカレンダー初の試みです。ぜ
ひカレンダーをご覧になってみてくださいね☆ (ナガタユウコ)

*** オブラブ2010カレンダー公開 ***
9月「スクラム(Scrum)とは」
/special/#calendar
スクラムはアジャイル手法の一つであり、近年、欧米を中心に広く企業に採用
されています。特色としては、組織への導入のしやすさを考慮されていたり、
認定制度がある等が挙げられらます。日本でも徐々に認知度は上っており、国
内でも認定資格である認定スクラムマスターは150名を越えるまでになりました。
これからスクラムを知りたい、学びたいという人の最初の一歩になればと今回
から3ヶ月連続でスクラムを取り上げてみました。ぜひ御一読下さい。
また、9月9日・10日に認定スクラムマスターの研修が開催されますので、もっ
と深く知りたいという方は参加されてみてはいかがでしょうか?(nawoto)
● 認定スクラムマスター研修
   http://scrumalliance.org/courses/20095185-certified-scrummaster

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒/community/object_ml/help/
〇 免責事項、過去の記事は   ⇒/community/object_ml/
■ 発行:オブジェクト倶楽部 ⇒http://ObjectClub.jp/
Copyright (c)2010 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.