2011年10月29日土曜日

GTUG Boot Camp 2011に参加してきた

GTUG Boot Camp 2011

Fragmentを使ってみよう
ハンドセット向けのレイアウトとロジックを流用したり
Fragmentを使うと動的にActivityを追加削除入れ替えできる
つまりFragment使うと部品として再利用しやすくなる

ハンドセット向けでFragmentを使う意味はある?
ある。
各コンポーネントをFragment化することで、それぞれ使いまわせる
Activityのコードがすっきりする
例:iosched

縦横でレイアウトを変える場合にもつかえる。

同じActivityでレイアウトを変える場合(例:chrome to phone)
setCOntentViewだと前のViewの状態を保存されない
→Fragmentを使って置き換えて、Fragmentをバックスタックに保存すればいい

TabHostは3.2以降でduplicateになったのでFragmentにせざるを得ない

・Fragmentのいまいちなところ
完全修飾名でレイアウトXMLファイルに書かないといけない
グラフィカルエディタで表示できなかったり
Typoミスが発生する

・Fragment、View、Activityの使い分け
View カスタムView
描画とそのための最低限のロジック

Fragment 
View+そのViewに関連するロジック(Viewの操作やViewに表示するデータの処理)

Activity
それ以外。ActivityとFragment間のデータの受け渡しなど

Handson WebView

HoneyCombのシミュレータは重くて使い物にはならんがICS(IceCreamSandwitch)はまだ使える。。

・ICS
ハードキー(メニューキーがきえた)がなくなった。
アプリのターゲットSDKが10以下だと、右のほうにソフトキーでメニューキーが増える。
HoneyComb以降はアクションバーのメニューを使う
GPUをつかってかなりなめらかな動きになっている
ホーム画面が使いやすくなった。(アプリをフォルダにまとめたりできる)
デバイスデフォルトのテーマを使って開発すべき。

API Demos(デフォルトでシミュレータにはいってるやつ)ででもが見れる

・WebView
標準ブラウザのソースオードを見ると参考になる

JavaとJavascriptを連携させるようなアプリだとICSで動かなくなる可能性がある。

・Handson 資料
https://docs.google.com/document/pub?id=1_T9PiCJCgMs1QdXPpdYcp7orOnRr1UU6qA5do_zsR2A

ノートPCをちゃんとセットアップしてなかったので、普通にeclipseのAndroidのビルドではまってしまって、ハンズオンどころではなかったりして、感想もくそもないのですが。
準備はちゃんとやっとけってことです。

はまったところ:eclipseのコンパイラの設定を1.5にする

Google+ APIの体験とHangoutsの紹介

説明資料
https://docs.google.com/presentation/d/1oDkvwodZmkBMeeInhkzDYbHKj7Ss2CoXvnU6OwpzcMQ/edit#slide=id.p

以下のAPIの仕様のリンクを見れば簡単にできそう。
https://developers.google.com/+/api/

一般公開されているのだけAPIで取得することができる。(取得のみ。postできない)

APIを使うにはまず登録が必要
https://code.google.com/apis/console/

Oauthの設定で気をつけるところ
Create an Oauth でunexpected error が出た場合はリロードすると治るっぽい。
2個ClientIDが作成された場合は長い方を必ず使う。

つかいやすいAPIでしたが、問題はやはり「取得」しかできす、しかも「一般公開」しているものというのが大きなネックです。

・Hangout

HangoutはGoogle+のビデオチャットの拡張ができるAPIで
今回のHandsonではあらかじめ用意されたアプリと連携させるというもので
ビデオにドロイド君の絵がオーバーレイされて、
自分がしゃべるとドロイド君の口がパクパクするというもので、
他にもいろいろ使えそうな感じがしました。
ただまだ開発者のみしか使えないもので、2人以上いないと動かなかったり
設定が面倒だったりとまだまだといったところもあり

2011年10月23日日曜日

Scientific Linux 6.1でgit serverを立てる

CentOSのアップデートが最近遅いので
ScientificLinux6.1を使ってGit Serverを立ててみた。(UbuntuでもOKでした)

ざっと調べたところ gitosisとgitoliteというのが2つあったが、前者のほうは開発が止まっているようだったのでgitoliteを使うことにした。

必要な環境
・クライアント(MacかLinuxが楽。Windowsのやり方はここでは紹介していません)
・サーバー(Linux系だったらだいたいOKだと思います)

事前準備
・クライアント、サーバー共にgitをインストールしておく

以下手順サーバー側とクライアント側の作業があるので気をつけてください

サーバー


まず gitolite という名前でユーザを作成。GUI(system->administration->Users and Groups)を使って
やると簡単にできます。
コマンドでやる場合は,
> useradd gitolite
> passwd gitolite


あとsshのキー保存用のディレクトリを作っておきます
> su gitolite
> mkdir ~/.ssh

クライアント


> ssh-keygen -t rsa
でsshのキーを作成します。
保存場所や名前はデフォルトでよいです。パスワードは任意。


この結果 ~/.ssh/以下に id_rsa, id_rsa.pubが生成されます。
前者が秘密鍵で後者が共通鍵です。
ここで名前を変えておきます。 {user_name}は自由に決めてください。
> mv id_rsa {user_name}
> mv id_rsa.pub {user_name}.pub


次に共通鍵をサーバーに保存します。{server_name}はサーバーのホスト名かipアドレス。
> scp ~/.ssh/{user_name}.pub gitolite@{server_name}:/home/gitolite/.ssh


(connection refused ではじかれた場合はサーバー側のsshdが動いていないか設定がおかしいかなのでなおす)


sshでログインできるか確認
> ssh gitolite@{server_name}
ここで特に
The authenticity of host can't be established ...などと出なければOKです。

サーバー


> su gitolite
> cp ~/.ssh/{user_name}.pub /tmp
> cd ~
> git clone git://github.com/sitaramc/gitolite
> cd gitolite
> src/gl-system-install
> vi ~/.bashrc
PATH="$PATH":/home/gitolite/bin
を追加
> source ~/.bashrc
> gl-setup /tmp/{user_name}.pub
hit-enterでENTERキーを押すとviが起動するので:qでぬける。

クライアント


> cd ~/.ssh
> touch config
> vi config
以下の内容をconfigファイルに記載{server_name},{user_name}は前記と同じにする。
host gitolite
       user gitolite
       hostname {server_name}
       port 22
       identityfile ~/.ssh/{user_name}


gitolite-adminの設定用のディレクトリを保存するディレクトリ(任意)に移動します。


> cd ~/{WORK_DIR}
> git clone gitolite:gitolite-admin


これで何事も無くダウンロードできたらほぼ問題ないと思います。
ちなみに、私はここで以下のエラーでかなり手こずりましたが、この手順でやれば出ませんでした。
fatal:gitolite-admin.git does not appear to be a git repository


git clone gitolite@{server_name}:repositories/gitolite-adminとやると一見うまくいったように見えますが、pushができなくなるので無駄です。


上記エラーではまった場合のチェックポイント
・サーバー:/home/gitolite/.ssh/authorized_keysの中身を確認。
 ⇒command="/home/gitolite/bin/gl-auth-command {user_name} ではじまってるか?なかったら最初からやりなおしてみる。。他に変なのがまじってたら消す。
・サーバー:/home/gitolite/.gitolite/keydirに{user_name}.pubがはいってるか?


一応pushできるか確認


> cd gitolite-admin
> touch README
> git add .
> git commit -m "add README file"
> git push

以上で最初の設定は完了です。

2011年10月22日土曜日

Scrum Gathering Tokyo2011に参加してきた

Scrum Gathering Tokyo2011(Day2)に参加してきました。

といっても丸一日ScrumBootCampに参加したので他のセッションは全然見れませんでしたが。

Scrum Boot Camp

丸一日かけてScrumとはなんぞやという座学と実際にワークショップを体験して学ぶといったものでした。
4人〜5人のチームにわかれてワークショップは行いました。

・スプリント体験(チーム)
 まず午前の部では トランプを使ったもので、ものすごく短いスプリントを繰り返してゴールを達成する過程を体験するといったもので、これをやることにより気づいたことは非常に多く、今回やった中で一番よかったです。
会社でもすぐにできそうなので是非やってみたいエクササイズでした。

・プロダクトバックログの作成(個人)
家の掃除を題材にプロダクトバックログをつくるエクササイズ。
順序付けとどこまで必須なのかよく理解できました。

・見積もり(個人)
紙飛行機の作成、こよりの作成、トランプの並び替えの時間を見積もって、そして実際やってみるというエクササイズ。
全然見積とはあいません。

・見積もり(チーム)
今度は似たようなことをチームで見積もり。
個人でやるよりも安心感や確かさがあがる気がしました。

・見積もり(チーム)
今度はポイントを使って相対的な見積もりをするといったエクササイズ。
こちらは実際にせーのでポイントを各自がカードで出すことで楽しく見積もりができるだけでなく、ポイントが違った場合に、なぜそう見積もったのかということをチーム全体で共有することができ、これまでの見積もりよりも、より全員がゴールのための品質や手順などの共通認識がとれたように思えました。これもかなりよかった。

・スプリントの過ごし方(チーム)
ひらがなの表を手書きでメンバーの数×2個作成するという協業作業のエクササイズで、数名利き手と逆の手で書くという制約があり、余裕のあるメンバーが手助けしてこなすといった内容でした。

どれも座学だけでなく、実際にやってみることで気づいたり、納得したりすることが多く、やっぱり何事もやってみることが重要だと感じました。
アジャイルで開発を始める前に是非やっておくべき内容だと思います。

以下当日のスライド
Summary of Scrum Guide

2011年10月15日土曜日

第四回 Jenkins勉強会に参加してきた

第四回Jenkins勉強会に参加してきました。
今回はC++,C#ということで自分も使っていることもありかなりタイムリーネタでした。

マルチ構成プロジェクト

クロスコンパイルなどを使って複数の環境向けにデプロイする場合に使える
失敗したときに全部やり直すとものすごい時間がかかるので、MatrixReloadedプラグインを使うと失敗したものだけ再実行することができる。

Jenkins+αで開発環境がみるみるよくなる Visual C++ 編
・MSBuild
MSBuildを使う場合は、MSBuild自体は.NET frameworkないに入っているのでビルドマシンにVisual Studioをインストールする必要はない。

・WarningPlugin
WarningPluginは結構便利。途中から始める場合はすべての警告に対応するというよりも新たに発生したものを潰すために使ったほうがいいかも。設定もいろいろできる。

・UIの自動テスト
起動〜終了だけでもやると効果がある
UI操作自動化ツールとしては、AutoItやSikuliというのがある

・静的解析
Cppcheck Pluginくらい。C++だと無料なのはあまりいいのはない

・実装漏れ検知
Task Scanner Plugin。ソースコード内のto do などの文字列を発見してくれる。

・コーディングルールチェック
cpplint。google C++ Guidelineに沿ったチェックをしてくれる
violations PluginでJenkinsで実行できる。

・メトリクス
CCCC。使ってみたけどあまり使いものにはならなかった(誰も見ない)
Sonar。(C,C#はPluginで対応している)

・ドキュメント
Doxgen

・コラボレーションツール
Jenkinsからチケットを発行
コミット→条件判定(Python)→チケット発行 というようにしてやってる

輪るビングドラム.NET
・Role Strategy Plugin

・すべてのビルドをひとつのビルドマシンでやるのはよくない
・何も無いところ(クリーンな環境)からビルドすべき。でも毎回は時間かかりすぎてできないのでデイリービルドのみでやるとかする
・TFSよりJenkinsのほうが設定は楽。全部VisualStudioで完結させたいならTFS

Jenkins実装入門目次チラ見せしちゃいます
・おすすめのPlugin = Job Config History Plugin
だれがいつ設定をいじったのかHistoryでわかる

Jenkinsの使い方だけでなくtips的なものも載っているようで
初心者からよく使っている人まで使えそうな本みたいです。

参考資料
CI超入門:Jenkinsのすすめ

Video streaming by Ustream


C# 大阪Jenkins勉強会のC#の資料
Jenkins The Definitive Guide
http://www.wakaleo.com/download-jenkins-the-definitive-guide