2013年6月2日日曜日

「合宿」 - Bluetooth Low Energy + iPhone ハンズオン ワークショップに参加

おつかれさまです。ZuQ9->Nnです

2013年6月1日(土)
「合宿」 - Bluetooth Low Energy + iPhone ハンズオン ワークショップ
が開催されたので参加しました。

場所は、原宿ニューロイヤルマンション 403
403_Forbidden、15人、ハンズオンのある少人数性の勉強会。

11時に集合、まずは、講師の上原さんからご挨拶、
つづいて食事をしながら自己紹介やアイスブレイク。

12時から上原さんの講義が、
最初はBluetooth Low Energyについて、今までのBluetoothとは扱いが違うとのこと。
まずは、歴史をひもといたり、Bluetooth SMART/SMART READYのロゴについて
iOSのBluetooth4対応についてなどなど。。

説明も、ほどほどにSensorTagで遊んでみようってことで
TiのSensorTagとiOS用のアプリを用いて実際の機器とアプリの連携を体感!!
温度、気圧、加速度などなど、値がリアルタイムでアプリに表示される!!

すこし休憩の後、Kickstarterというサイトの動画をみながら
Bluetoothの機器、iOSのアプリの事例をいくつか見ました。
動画をみている最中も、「いきなり、冒頭おっさんが。。」
と突っ込みまくりの講師、上原さん。。

ハードウェア関連のお話が、あったあと、いよいよ、CoreBluetoothの
プログラムハンズオン、Bluetoothキーホルダーをつなげるプログラムをもとに
Bluetooth Low Energyの通信の仕組みを詳しく、
かなりのハードウェアよりのディープな話。
大学の通信工学などで行なわれる話のようで、ぶっちゃけついて行けませんでした。

もう少し、手を動かすかと思ったのですが、ソースコードを見る事の方が多かったです。
途中から、僕は、もはや置いてけぼりでした。

ただ、書籍で見たり、ブログ記事、技術系のサイトを皆がらよりも
何倍もわかった感は強いように感じました。

ハードウェアなんて、今まで興味を持つ事はありませんでした。
でも、なんか、最近センサーとサービスを組み合わせるのは
むしろ、普通になってきているような気がします。

実は、iPhone、iOSはWebのサービスを表示するようなものより
カメラ、GPS、加速度センサーなどのセンサー類を
使うプログラムの方が面白いなぁと感じてました。

Bluetoothも、もちろん興味ありまくりでした。
なんか、敷居が高い印象もあり、なかなか気になりながらも
スルーしていた分野ですが、これで一気にテンションあげあげです。
多分、なにか、Storeにアップできるレベルのものは
かなり先になりそうですが、本当にいいきっかけになりました。

2013年5月27日月曜日

第4回 iphone_dev_jp 東京iPhone/Mac勉強会に参加

お疲れさまです。ZuQ9->Nnです。

2013年5月25日(土)
第4回 iphone_dev_jp 東京iPhone/Mac勉強会」が開催されましたので参加しました。

場所は渋谷の株式会社VOYAGE GROUPさん。
登録人数100人を超える、iOS系の勉強会ではかなり大きめの勉強会。

EasyStyeGK さん Objective-c atomicity

あのproertyとかによく書く、nonatomicっておまじない?コードについての説明
原始性を保つ、スレッドセーフといことについて、
ぶっちゃけ、まったく意識せず、ほんとに、おまじないで書いてますた。
すいません。。って感じです。

_ishkawa さん iOS5で動くUIRefreshControlの作り方

iOS6から採用された、公式のPull to Refreshの機能、
UIをiOS5でも動くように自作。KVOとか初めて聞きました。
最後の方は、Objective-cのダイナミックな機能など話がついて行けなかった感じ
このへん以前、参加したconferencewithdevelopers でもあったんだけどなぁ

cocopon フラットデザインについて

iOS7で採用が噂されているフラットデザインについて
ご自身の作成されたLIumino の実例とともに、デザインの基本で戦う
  • 目立たせる
  • まとめる
  • 流れをつくる
という内容について。おすすめの本に


 を紹介されていました。何と、人生を変えた3つの本に入るほどだとか
コード的にはUIAppearanceについて、そちらは

 に詳しく書いてあるよ。。とのこと。
ここらへん、まだまだ追えてませんね。orz..

novi_ クライアント系iOSアプリの作り方

基本的なMVCパターン、デザインパターン、開発プロセスなどなど。
2-3人で、新規でiOSの開発を素早く、安全につくるためのノウハウをお話されました。
個人的には概要が多く、具体的にはわかりづらいとの印象がつよかったです。

Jackolicious スペシャルセッション Evernoteのユーザエクスペリエンスアプローチ

EvernoteのMac版のリデザインについて下記のステップ順に説明
かなり最初のジョークなんかもイケテました
  • Step 1 : GOAL
  • Step 2 : CONCEPTES
  • Step 3 : DESIGN
  • Step 4 : INTERACTION
  • Step 5 : BUILD
  • Step 6 : ANNOUNCE
  • Step 7 : LAUNCH
  • Step 8 : ITERATE
個人的にはユーザーにサプライズを与えてはならないとの
発言に意外な印象を受けました。

こういう人気のサービスのリニューアルって難しいんですよね。
日本でも何度も、失敗?例というか、前の方が良かった
戻してほしいなんてレビュー欄に書かれるものも多いんですよねぇ。

そのあと、少し、Evernoteの開発イベントの告知
じゃんけん大会でTシャツの争奪などがあり続いて

ninjinkun NJKWebViewProgressについて

なんと前のセッションが質問だけで30分オーバー、押し、押しで
疲れも垣間見えながら、作成、公開されたプロダクトについて説明。
なんとgithubのlikeが300以上とか。。
proxydelegateなど知らないことも多々あり、
ついていけない箇所も何個かありました。

kishikawa katsumi Mac/iOSのリッチテキスト表示について

最後のトリは、主催の岸川さん、やはりご自身が開発、公開されている
画像編集とテキスト表示のプロダクトについての説明、
iPhone、iPad、Macにまで対応しているものは、存在していないとのこと。

実は、ぱっと見て。。え?こんなの標準で無いの?
普通にStoreにリリースされてるアプリでやってるやん?
って感じのものが無かったり、しかも作るとなると
結構、ハマりどころがあったりするんですよねぇ。
公開してくれてありがとうって感じです。

そのあと、その場で懇親会があり、21時ごろまで、ぐだぐだとしておりました。
講義形式の勉強会は、やはり、自分の普段、全く
興味の無い部分でも話を聞いているうちに、世界が広がる感じがします。

あと、モチベーションというか、もくもくしているだけだと
悶々として、限界が出てくる時があるので、なるべく参加していきたいです。


2013年5月4日土曜日

はじめてのgit勉強会&もくもく会に参加

お疲れさまです。ZuQ9->Nnです

2013年5月3日(金・祝)「はじめてのgit勉強会&もくもく会」が
開催されましたので参加しました。

お昼の13時から
場所は茅場町のコワーキングスペースCo-Edo
20人くらいの小規模な勉強会。

まず、主催者の@mon_satからバージョン管理ツールについての解説。
最低限覚えて欲しい言葉として

  • リポジトリ : ファイルのが実際にある場所
  • コミット    : ファイルの変更記録の単位
そして、GitHubの解説。GitHubは Code × SNS
GitとGitHubの違い。混同しないようにとのこと。
説明が一通り終了し、いよいよハンズオン。

まずはsshで秘密鍵、公開鍵を作成。
GitHubに公開鍵を登録し、通信確認。

そのあとはCode SchoolのTry Gitを用いてコマンドの練習。
使ったコマンドはgit init、git add、git commit、git status、git log、
その後GitHubにtry_gitを連携し、
git remote add、git push、git pull、git diff、
git reset、git checkout、git branch、git rm

Try Gitのサンプルは、最後、ブランチをきって
最後、全部のファイルを削除とかイマイ意味不明な作業をさせて。
ブランチのところに曖昧さが残った感じでした。
このへんはやはり、どんどん使って
量を増やして慣れていかないと。。ですね

以前の勉強会に比べて、本当に初心者向きで
普段、Gitを使っておらず、コマンドもあいまいな
僕にはちょうどピッタリでした。


2013年4月21日日曜日

Git天空闘技場に参加

おつかれさまです。ZuQ9->Nnです。

4月20日(土)Git天空闘技場が開催されたので参加しました。
場所は、大田区の男女平等推進センター エセナおおた、
午後13時開始の10名の少数勉強会です。

最初、神速さんから「バージョン管理とgitの基礎」のセッションがありました。
Gitの勉強会なのに、いきなりpullは使わない方がいいなどと
よくあるGitの勉強会とは少し違ったおもむき

最初はsvnなど中央集中型バーション管理全体の説明、
svnの特徴などの説明があり、
次にGit等の分散型のバーション管理の説明、比較など
ここらへんはベタですね。。

Gitの特徴として
  • ローカルの操作が速い
  • ローカルの変更は他のユーザーに影響しない
  • 可用性が高い
  • マージが安全
  • 変更履歴の編集が可能
次にGitのオブジェクトの説明として
  • blob : ファイルの中身を表すオブジェクト
  • tree : ディレクトリの中身と各blobとの対応を表すオブジェクト
  • commit : 履歴に対応するオブジェクト
  • tag : タグを対応するオブジェクト
そのあとは各オブジェクトに対して詳しい説明がありました。

次に、Gitの内部構想。
  • .git/HEAD
  • .git/config
  • .git/index
  • objects/
  • hooks/
  • refs/
今回関係あるもののみを抜粋されて説明

次に、ステージングエリアの説明、
なぜ、ステージングエリアがあるのか?とうことに対して
 一般的なDVCS
       ファイル単位で変更をコミット
git
      1ファイルの1部分のみをコミット可能
    ・バグ修正、リファクタリングを別でコミット
    ・ファイルを一部だけ元の状態に戻す
→意味のある変更単位でコミットできる
とのこと。。

ちなみに、勉強会のタイトルになっている「天空競技場」というのは
HUNTER × HUNTERという漫画のネタで
スライドにも階数が出てきてここらへん元ネタがわかるかも
試されていたようです。。

ここでいったん休憩となりその後はハンズオン。

ハンズオンのルールとして
  • コミットのタイミングでオブジェクトの図をノートに書く
  • リポジトリの内部を見る
基本はコマンドラインで行ないました。
最初はREDMEファイルを作成。
git initして、REDMEをgit add、REDMEをgit commit

.git/の中身を確認してobjects/はinfoとpackだけ
HEADの中身がmasterになっている、refsの中身が空でした。

別のファイル(僕はTESTファイルを作成)を作って、
add & commitしてみる
cat-fileを作ってノートに図を書く、
2回くらいcommitしてみる。

最初にcommitしたREADMEにcheckoutで戻り
READMEファイルのみがあるのを確認し。
ここで再び休憩。休憩中、スゥーツが振る舞われました。


休憩後は無名ブランチを作る。git merge --no-ff マージコミットを行い
fast-fowardの箇所は神速さんのプログ を各自で読みながら学習。
ブランチを手作り、タグなんかも手作りしてみました。

そのあとgit cherry-pickの説明があり
最後はgithubのリポジトリを持ってきてgit remote addなどを行いました

途中、作業を間違えてしまうなど、ところどころ
やっている内容が??ってなる時もありましたが
なんとかついていくことが出来ました。

ハンズオンだったので座学よりは理解度が高いのですが
ただ、きっちりと理解できたか?と言われると。。
まだ、なんとなーくといった感覚がつよかったです。

個人的なKPTとして
Keep
  gitの学習をつづける
Problem
  コマンドを間違えて作業に手間取り
  自分が何をやっているのか??と
  なってしまうことが多かった
Try
  gitのコマンドをきっちりと覚える
  gitコマンドのチートシートなどを覚える


2013年3月20日水曜日

横浜道場 特別編「Domain-Specific Language としての魔法少女まどか☆マギカ入門」に参加

おつかれさまです。ZuQ9->Nnです。

2013年2月19日(火)
横浜道場 特別編「Domain-Specific Language としての魔法少女まどか☆マギカ入門」
が開催されましたので参加しました。

場所は、横浜の株式会社アットウェアさん。

平日の夜から、しかも横浜での開催とかなり厳しかったのですが
タイトルに釣られてしまい、思い切って参加しました。
@hageyahhooさんが講師で下記の内容をお話されました

円環の理:まどマギ概論

要件定義は、なんだか良さそうだったのに、実際は。。
といったシステム開発のプロジェクトにありがちな内容を
まどマギを通じて。。わかりやすく?、グダグダながらも進めていき。
ユーザーストーリー。ドメイン言語などを説明。
ほんとんどの参加者がストーリーを知っていたため
すっとばし気味でした。

魔法少女になるって、そういうことよ:まどマギ実践

いきなり、実践編に入り、まど・マギに出てくる
「大人がお酒を飲んでいい理由」という台詞をもとに
システム開発を例えてました。あとは特定ドメイン言語の
事例などの紹介。。グローバルコミニュケーションもはかれ
メリットも多いとのこと。。

砲火後ティータイム:ワークショップ

解説もそこそこに、いよいよワークショップに! ルールとして
  1. 付箋に書き出そう。自分がどのきゃらに似ているか?どういう状況にあるか?
  2. KJ法で整理しよう。
  3. 一番ソールジェムが濁っているチームを発表してみんなで助けよう
自己紹介と、少しのディスカッションを終え
各チーム発表。なかなかアニメの内容をとらえて面白い発表でした。

なんと最後は時間を余らせて終了。
みんなで振り返り。その場で懇親会がありました。

いや、本当、「もう訳が分からないよう
その一言につきますよ。今回は。。


2013年3月18日月曜日

TDD Boot Camp Tokyo 2013-03に参加

おつかれさまです。ZuQ9->Nnです。

2013年3月16日(土) TDD Boot Camp Tokyo 2013-03
開催されたので参加しました。

今回は、参加にかなり迷いました。おそらくこれで5〜6回目
人気のイベントなので、他の人に譲ろうと考えておりました。

ところが、前日に確認したら、まだ定員に満たない。。
こりゃもったいないと思いで急遽参加を決めました。

場所は 株式会社VOYAGE GROUP 8F 社内バー AJITOです

最初にTDDの伝道師。t_wadaさんからのオープニングセッションがありました。

まずは、ソフトウェアの三本柱として
  • バーション管理
  • テスティング
  • 自動化
の説明、次に「テスト」という言葉の定義について、
今回取り扱うのは、Developer Testingで、Developer Testingとは、
  • プログラマの
  • プログラマによる
  • プログラマのための
  • ブログラムとしてテストを書きながら開発を行って行く方法
と定義をされました。次にTDDのサイクル
  1. つぎの目標を考える
  2. その目標を示すテストを書く
  3. そのテストを実行して失敗させる
  4. 目的のコードをかく
  5. 1で書いたテストを成功させる
  6. テストが通るまでリファクタリングを行う。
  7. 1〜6を繰り返す
との説明があり、次に、TDDの心として
  • 一つずつ、少しずつ
  • ひとりずつ対処する
  • すばやくまわす
  • 自分が最初のユーザー
  • 不安をテストに
  • 祈るのでは駄目
  • 命綱を編む
という内容の説明があり、TDDの真の目的は、「健康」とのこと
変化に対応するのは健康体のコードであり健康体のチームだけだそうです。

ここで終了してしまうと、あまりにもスピリチュアルに偏ってしまうので
最後に、数字の事例を上げられていました。だいたい。
実装時間が2割り増えて、バグが6割り減る
といった内容で、オープニングセッション終了。

次にyattomさん、grimroseさんによる、ペアプロのデモ
言語はJava、IDEはEclipse、内容はFizzBuzzでした
最初に、TODOリストなどを制作し、サクサクとメソッド名など
合意をされて、テストコードと実装コードを記述されていました。

個人的に印象的だったのはFizzの場合は、まず、ハードコーディングで
"Fizz"をそのまま返す仮実装を行い、そのあと本実装に移ったのに対して
"Buzz"の方は、一気に明白な実装をされていたことです。

休憩のあと、いよいよ実践練習、最初、個人的にはJava、Eclipseでいくつもりでしたが
ペアが余ったいるとのことで、思い切って hiralinさんと
Objective-c、SenTestingKit(OCUnit)で行なうことにしました。
お題は「LTSV」で、仕様は

ltsv = new LTSV();
ltsv.set("foo", "hoge") #=> null
ltsv.get("foo")             #=> "hoge"
ltsv.dump()                 #=> "foo:hoge\n"

ltsv.set("bar" , "fuga") #=> null
ltsv.dump()                 #=> "foo:hoge\tbar:fuga\n"

ltsv.set("foo", "piyo")  #=> "hoge"
ltsv.dump()                #=> "bar:fuga\tfoo:piyo\n"
となる。。

最初は、どっちがkeyでどっちがvalueみたいたところから勘がいがあったり
仕様もちょっとあやふやだったり、TO DOリストを雑に書いてしまい。
あとで見直しても。。。な状態だったり
(これは僕が悪いんだけど。。ごめんなさい、ごめんなさい)

イマイチ理解ができないまま、とりあえず進める感じで。。
途中、ようやくなんとか形になったところで、前半の演習が終了。
おやつ休憩があり、

その後、再び演習に。。
やはり、一番、頭を悩ましたのが、入れた順番にdumpするって床でした。
なんとか動くけど、同じようなif文の分岐が、何カ所かある。
いかにも不吉な匂いが漂うコードとなって時間が終了。。

その後、各言語のコードレビューがありました。
個人的にはやはり、Rubyとか普段、
ほぼ触ったこと無いコードを見れたのが新鮮だったと同時に
ちんぷんかんぷんな部分もあったり。。

レビュー後に、再び、t_wadaさんのクロージングがあり、
次の日から現場でどうやって戦うかということで
いくつか本を紹介されていました。

テストコードが無いコードがいっぱいある場合は?
→レガシーコード改善ガイド
 データベースを扱う場合は?
→データベースリファクタリング
非同期などのより複雑なシステムを扱う場合は?
→実践テスト駆動開発

最後に、「TDDはスキルです。一人から始められる。才能ではなく、習得可能。量は質に転化します。写経しましょう!!」と閉められました。

そのあと、その場でピザ等が振る舞われる懇親会がありましたので

そのまま参加。懇親会では、時間切れになってレビューできなかった
Scalaのコードレビューやら、ノラLTがありました。
ノラなのになぜか、マサカリが飛んでくる、かなり厳しめの内容だったり。

t_wadaさんが訳されたSQLアンチパターンの本
の争奪、じゃんけん大会等
なんだかんだで、21時くらいまでその場ですごして解散となりました。

今回は、本当に、これで何度目なんだよ。って感じだったのですが、
以前とは違って、ようやく現場でもテストコードを書くようになったりして
自分の状況も変わってきており、新鮮に、また新たな学びがありました。

しかし、それ以上に、疑問、迷いがふつふつとわいてくる悶々とした、
いつもの勉強会で感じる劣等感的なものも多く味わいました。

Act as professional
この言葉に従って行動しているか??
全然、駄目、駄目、果てしなく遠いです。

今後TDDBCとはどのような関わりをすべきかそれも自分にとっての課題の一つです
テスト系、アジャイル系の勉強会はとても好きです
とくに今回のような演習、ハンズオンがあるものは
やはり、フィードバックがあり、直接自分の脳がいろんな化学反応を起こします。

ただ、ここに甘えてはイケない、はやく次のステップへという思いも。。
まずは、先人に少しでも近づくために、写経でもしておくことにします。


2013年3月12日火曜日

Nagoya.Testing in Tokyo 3 -アジャイルなテストの見積りと計画づくり- #NagoyaTestingに参加

おつかれさまです。ZuQ9->Nnです。

 2013年3月10日(日)、「Nagoya.Testing in Tokyo 3 -アジャイルなテストの見積りと計画づくり- #NagoyaTesting」が開催されましたので参加しました。

場所はオラクルの青山で、参加は申し込み時に50名を超えるイベントでした

最初に、アイスブレイクで、あつまった人たちと自己紹介などを行い。
11:30くらいから「アジャイルなテストの見積もりと計画ずくり」との題材で
@kyon_mm さんからの発表がありました。

最初にいろいろと問題定義がなされました。
  • テストの観点ってなに?
  • テストの見積もりが難しい。
  • 品質ってなに?
  • テストはどうやってくぎるの?
  • どこまでテストすればいいの?

そして具体的なテストに対する言葉の説明
とくに誤解しやすく、覚えてほしい内容として
  • テストレベル
  • テスト技法
  • テストタイプ
  • テスト観点
の説明がありました。

次に、アジャイルのはなしがあり。
アジャイルはソフトウェア開発のスタイルであってプロセスでは無い。
方針とフィードバックをどれだけ早く共有するか?などなど。。

あとは、見積もりの経験談のお話があったり。
途中で話が終えなくなりました。。面目ない。

一つ心に遺ったことは
見積もり可能なテストはテスティングを導いてくれる。
見積もれないテストは行き当たりばったりってとこらへんでしょうか
ここらへんは実際のテスト見積もりの経験がすくないと厳しいんでしょうね。。

13時からお昼ご飯を頂き。


14時からは演習。
課題は
  • 今後社内で使うタスク管理のWebアプリをつくってほしい
  • いまはある程度つくりこんでいる状態のアプリが既にある
  • 現状の品質と、これからこのアプリを成長させていくときに必要そうなテストを考えた上で、 テストの計画をたててほしい
とのこと
15時30分までブレストをおこないましたが
感想としては。俺?今までどうやってテストしてたんだっけ?って感じ
何だろう、具体的なテストケースは思い浮かぶんだけど?
それってどういう目的?となると。言葉が出てこない。

15時30分からは休憩としてスゥーツが振る舞われ



休憩の終了時にテスト仕様書の発表・レビューがあり、
16時ごろから、再び見積もり演習の続きを。
結局、所属したチームでは議論が白熱してディベートだけで終了。

その後、ふりかえりなどをへて
18時より、その場で懇親会

懇親会ではノラLTなどもあり
なんだかんだで、21時くらいまですごしておりました。

今回の勉強会の感想ですが、
なかなか、普段曖昧にしているところだと痛感。
すっきりした部分もありましたが、余計に悶々とした部分が残った印象も
やはり、課題ばかりが大きく残りましたね。

実はテストは重要なんだけど、あまり参考書とか
体系だって勉強する機会はあまり無いんですよね。

テストそのものも現場で何となく。これが正しいのかとか
疑問にもつことすらあまり無く、改善ともなるとほぼやらないんですよねぇ。

特にテストの見積もりなんて、大概えいやぁって感じで、やっつける
根拠は。。となるとほぼ、勘でとか日常です。。

テストしないためには、制限をもうける。
そして、その制限の根拠を明らかにする他人を納得させらる
そこがポイントのようです。

今回はスタッフさんがかなりいきとどいてた印象を受けました。
改めてお礼を述べるとともに、
会場を貸していただいたオラクルさんに感謝いたします。