クロージャを引数としたメソッド記法の整理
UIAlertActionをインスタンス化するサンプルコードが、定義されているコンストラクタ
public convenience init(title: String?, style: UIAlertActionStyle, handler: ((UIAlertAction) -> Void)?)
と違って引数のhandlerが括弧の外に書くようになっていたので気になって、クロージャを引数に取るメソッドの書き方調べた。
この書き方を、詳解Swiftでは「末尾クロージャ」とという項に書いてあり、
AppleのSwiftのlanguage guide では「Trailing Closures」に記されている
注意
- 勉強中なので情報は間違っている可能性があります
- 動作確認: Swift2.0
func function1(handler: ()->Void) { handler() print("this is function1!!!") } // クロージャを引数として渡す let closure = { print("this is closure!!!") } function1(closure) //=> this is closure!!! // this is function2!!! func function2(){ print("this is function2!!!") } function2() // => this is function1!!! // メソッドとクロージャの引数として渡せる function1(function2) //=> this is function1!!! // this is function2!!! // クロージャを直接引数として渡す function1({ print("inside") }) //=> inside // this is function2!!! // クロージャを直接引数とする場合は括弧()の外でOK // クロージャの引数が一番最後の時のみ function1(){ print("outside") } //=> outside // this is function2!!! // つまり // この最後がクロージャが引数の場合はOKで // 末尾クロージャ/Trailing Closuresの書き方がこれ func function3(arg1: String, handler: ()->Void) { handler() print("this is \(arg1)!!!") } function3("arg1 string"){ print("arg1 handler")} // こちらの第二引数がクロージャの場合にはエラーになる func function4(arg1: String, handler: ()->Void, arg2: String) { handler() print("this is \(arg1), \(arg2)!!!") } function4("arg1", handler: { print("arg1 handler")},arg2: "arg2 string") //=> arg1 handler // this is arg1, arg2 string!!! // よってこう書くとエラーになる //function4("aaa", arg2: "arg2 string"){ print("arg1 handler")}
オススメSwift技術書
- 作者: 荻原剛志
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/12/25
- メディア: 単行本
- この商品を含むブログを見る
本気ではじめるiPhoneアプリ作り Xcode 7.x+Swift 2.x対応 黒帯エンジニアがしっかり教える基本テクニック (ヤフー黒帯シリーズ)
- 作者: 西磨翁
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/02/27
- メディア: 単行本
- この商品を含むブログを見る
- 作者: WINGSプロジェクト,片渕彼富,山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2016/03/04
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
分報をタイムライン表示して、もれなくチームの流れを把握しよう
Slackに書き込んだ分報をタイムライン表示しよう
対象のhubotのscriptだけさくっと知りたい人はこちらを参照すると良い slackで分報をタイムライン表示して一覧性を手に入れろ - Qiita
分報とは
課題解決へのアクションが遅れてしまうという日報の弱点を克服するために、僕のチームでは「分報」という独自の取り組みをしている。分報ではSlackなどの社内チャットツールを使い、「今やっていること」や「困っていること」をつぶやく。課題をリアルタイムに共有できるのが特徴だ。日報が社内mixi日記だとすると、分報は社内Twitterにあたる。
端的に言うと、slsckに各エンジニアの部屋を作り、作業ログを書き込んでいくというものだ。 また各人の部屋を覗いて、困っていることに素早く気づいて開発の効率化を図ることができる。
いままでの自社での分報的な取り組み「dev/null」で共用作業ログを書く
自社でもすでに思考を吐き出すような感じで「dev/null」と言う共用の作業ログを書く部屋を作っていた。
Twitterでツイートしてもよいが、社内のプロテクトしておくべきことを迂闊に野に放つリスクよりは、クローズドな領域を設けたほうが、これは外に出して大丈夫かな?と考える必要がなく楽で良い。
2,3人なら良いがそれ以上に人数が増えた際に、個々のエンジニアの部屋を見に行くのが億劫ではないと思い、 分報よりも、こちらの方が一覧性があってすぐれいるのでは考えていた
実際に聞いてみた
@kon_yu 僕は自分も分報を書いているので、書き込みのタイミングで同僚のもちらっと見てます。人数が多い場合は、自分がバディーを組んでる相手やケアが必要な新人のチャネルをスターして、優先度を調整するのはいかがでしょうか!
— 野澤 秀仁 (@suin) 2016年2月17日
@suin 返信有り難うございます。なるほど、意識的にチェックする人の優先度をつけるのは良いですね。
— コンユウ (@kon_yu) 2016年2月17日
うちの場合も開発者が数人なので、dev/nullという流れてもいいことを書くチャンネルを用意してます。はまってることや、Webページを紹介したりする分報みたいな感じです。
このような回答を得た。なるほど、よく見るべき人に注力しながら確認すると良いと
それでも全員分のデータが見たいな、オレにはショートカットを駆使してもslackの部屋移動が面倒だ タイムライン的に見られたらチーム全体の雰囲気の一体感が出るのではなかろうかか?
やっぱ、共用の部屋を作った方がいいんじゃないかな?
リモートワークを推進されている会社ソニックガーデンの社長である倉貫さんに聞いてみた
先日ソニックガーデンバーというイベントで、ソニックガーデンの社員さんとお話するチャンス得た sonicgardenbar1.peatix.com
ソニックガーデンではRemottyと言う自社ツールを使ってチャットコミュニケーションをとっている。
また分報と言う概念の前から、Remottyでは各エンジニアの部屋を作って作業ログを書く言う方式を実践されていた。
※「dev/null」の共用部屋を作ったのも過去にRemottyを使ってみて、各人の部屋に書かれると一覧性がないので作ったという経緯もある
リモートワークを推進されている会社ソニックガーデンの社長である倉貫さんなら、
分報はいいと思うんだけど、一覧性がないのが不便だと思う、共用の部屋のほうがいいと思うんだがどうお考えになりますか?
という問題の答えが出せるのではないかと聞いてみた。
頂いた答え(意訳)
- 共用の部屋だと、自己所有感が無いので気軽に書き込みにくい
- 共用の部屋で複数のトピックが走っている場合、ログを追いにくい
- 現在のRemottyにはタイムライン機能が画面右にあるので、一覧性がないと言う問題を克服している
そうRmottyで実は同じようなことが出来るのだ!
タイムラインの特定の書き込みをクリックすると、その書き込みのある部屋に行くことが出来て、前後の書き込みを様子を見たり、アドバイスをしたりできる
Remotty自分の部屋 画面右に自分の部屋の書き込みが表示される
Remotty グループの部屋 画面右に複数人のグループの書き込みも表示される
じゃあRemottyを使えばいいじゃないというところだが、ところがどっこい我々はSlackにどっぷりハマっているのだ
それでもSlackを使いたい
以下のことをSlackで通知を受け取っているので、今更Slackから抜け出せない。分報だけ別ツールにはしたくないのだ。
- デプロイした結果
- CIを実行した結果
- エラー発生の通知
- 異常検知のログ
- チケットのアサインや通知
というわけで分報やり方を踏襲しつつ、各エンジニアの部屋での書き込みを一纏めに表示するタイムラインの部屋を作るツールが欲しい
HubotでSlackに分報をタイムライン表示する
各エンジニアの部屋での書き込みを一纏めに表示するタイムラインの部屋を作るツールがほしい が無かったので自分で作った
hubotで各エンジニアの部屋をチェックし、発言があればタイムライン用の部屋にリンクを書き込む スクリプト
hubotで各エンジニアの部屋をチェックし、発言があればタイムライン用の部屋にリンクを書き込むことができるようにする
このスクリプトでは以下のことを実施する
- times_ユーザ名 という部屋で発言をチェックする
- 発言のオブジェクトから、その発言のパーマネントリンクを作成
- timelineの部屋に発言のパーマネントリンクを投稿する
hubotのscriptディレクトリにこのようなファイルを作成する script/hunhou2timeline.coffee
# 自分のslackのURL slack_url = "https://your_tame_name.slack.com" module.exports = (robot) -> # どんな文字列があっても拾う robot.hear /.+/, (msg) -> room = msg.envelope.room # idにドットがあるとURLを展開してくれないので取り除く id = msg.message.id.replace(".","") # ユーザ名_channelの部屋だけウォッチ対象 if room.match(/^times_.+/) # 展開可能なURLを作成し、タイムライン表示用の部屋に投稿する # roomの指定で、 投稿するchannelを指定 # 第二引数でslackのパーマネントURLを構築 robot.send {room: "#timeline"}, "#{slack_url}/archives/#{room}/p#{id}"
※ チャンネルに追加しないと、hubotが部屋をウォッチしない(入力内容に対してリアクションをしない)のでtimes_ユーザ名のチャンネルにhubotを追加する
- 個別のチャンネルにhubotが追加された状態
自分のチャンネルに投稿すると
タイムライン用のチャンネルに投稿されれる
Team Geek ―Googleのギークたちはいかにしてチームを作るのか
- 作者: Brian W. Fitzpatrick,Ben Collins-Sussman,及川卓也,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/07/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (20件) を見る
小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則
- 作者: ジェイソン・フリード,デイヴィッド・ハイネマイヤー・ハンソン,黒沢 健二,松永 肇一,美谷 広海,祐佳 ヤング
- 出版社/メーカー: 早川書房
- 発売日: 2012/01/11
- メディア: 単行本
- 購入: 21人 クリック: 325回
- この商品を含むブログ (36件) を見る
iOS(iPhone, iPad)アプリ開発 買うべき書籍まとめ(2016年3月版)
はじめに
現役バリバリのiOSエンジニアの方に、iPhoneのアプリ開発で良い本無いかと聞いて教えてもらったり 実際に書店で手にとったり自分で買った本の中で良かった本をまとめておく 初心者向けのiOS開発の本ってけっこうアプリで必ず使うデータの保存や通信、UITableViewについて取り扱ってないのがあり、ちゃんと調べないとお金をドブに捨てることになる
またUIやデザインについても知識が無いと、開発者が個人でアプリを作る場合どうしようもなくダサイものが出来がちなので、 UIデザインや、UXについての書籍も記載する
デザインの本は、すでにiOSエンジニアとして仕事をしている人にも役に立つはず
対象の読者
Swiftは書いたことがないけど、他のプログラミング言語はある程度触ったことがある人
初心者から中級者
YahooのWebAPI使った実践的なサンプルを作れる 図解が超丁寧
本気ではじめるiPhoneアプリ作り Xcode 7.x+Swift 2.x対応 黒帯エンジニアがしっかり教える基本テクニック (ヤフー黒帯シリーズ)
本気ではじめるiPhoneアプリ作り Xcode 7.x+Swift 2.x対応 黒帯エンジニアがしっかり教える基本テクニック (ヤフー黒帯シリーズ)
- 作者: 西磨翁
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/02/27
- メディア: 単行本
- この商品を含むブログを見る
こちらの方がKindle形式になっているので検索しやすい Swift 2標準ガイドブック 【Swift 2.1対応版】
Swift 2標準ガイドブック 【Swift 2.1対応版】
- 作者: 渡辺龍司,富家将己,鈴木晃,加藤寛人
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/10/23
- メディア: Kindle版
- この商品を含むブログを見る
中級者から上級者
iOSというよりガチンコのSwift言語を学びたくなったら 詳解 Swift 改訂版
- 作者: 荻原剛志
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/12/25
- メディア: 単行本
- この商品を含むブログを見る
スマフォのユーザインタフェースを学ぶなら
UI GRAPHICS ―世界の成功事例から学ぶ、スマホ以降のインターフェイスデザイン
UI GRAPHICS ―世界の成功事例から学ぶ、スマホ以降のインターフェイスデザイン
- 作者: 水野勝仁,深津貴之,渡邊恵太,菅俊一,緒方壽人,iA,鹿野護,森田考陽,庄野祐輔,塚田有那
- 出版社/メーカー: ビー・エヌ・エヌ新社
- 発売日: 2015/12/17
- メディア: 単行本
- この商品を含むブログを見る
モバイルデザインパターン 第2版 ―ユーザーインタフェースのためのパターン集
モバイルデザインパターン 第2版 ―ユーザーインタフェースのためのパターン集
- 作者: Theresa Neil,深津貴之,牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/02/12
- メディア: 大型本
- この商品を含むブログ (3件) を見る
iOSに特化してユーザーインターフェースについてもっと学びたい時
SwiftではじめるUI設計&プログラミング 「操作性」と「デザイン性」を兼ね備えたアプリの開発手法
SwiftではじめるUI設計&プログラミング 「操作性」と「デザイン性」を兼ね備えたアプリの開発手法
- 作者: 柴田文彦
- 出版社/メーカー: 翔泳社
- 発売日: 2015/02/20
- メディア: Kindle版
- この商品を含むブログを見る
デザイナと共通言語で話せるために
- 作者: Robin Williams,吉川典秀
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/11/19
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 1,019回
- この商品を含むブログ (107件) を見る
- 作者: 筒井美希
- 出版社/メーカー: エムディエヌコーポレーション(MdN)
- 発売日: 2015/07/31
- メディア: Kindle版
- この商品を含むブログを見る
UXとはなんぞやということを学びたくなったら
- 作者: 渡邊恵太
- 出版社/メーカー: ビー・エヌ・エヌ新社
- 発売日: 2015/02/18
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
誰のためのデザイン? 増補・改訂版 ―認知科学者のデザイン原論
誰のためのデザイン? 増補・改訂版 ―認知科学者のデザイン原論
- 作者: D. A.ノーマン,岡本明,安村通晃,伊賀聡一郎,野島久雄
- 出版社/メーカー: 新曜社
- 発売日: 2015/04/23
- メディア: 単行本
- この商品を含むブログ (3件) を見る