SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
アプリだけじゃない!チームも一緒
に成長させる開発
2016/01/17
CANDLE INC.
YUICHIRO TAKAHASHI
struct AboutMe {
public let name = "Yuichiro Takahashi"
public var company = "Candle inc."
public var roll = "iOS Lead Engineer"
public var job = [
"develop mimi app",
"support team member about iOS"
]
public var icons = ["yadon", "nyanko-sensei"]
public let isLoveFPL = true
private var hobby = [
"programming": [
"languages": ["Swift", "JavaScript", "Rust", "Scala"],
"frameworks": ["Vapor", "Electron", "BotKit"],
"libraries": ["React", "riot", "ReSwift"]
],
"others": [
"game",
"drive",
"karaoke",
"watch a movie with my wife",
"play with my baby"
]
]
}
こんなサービスを作っています!
手前味 ですが本を出しました!
今日話すこと
• どんな技術を使っているのか
• プログラミング未経験者が多い中でどのように技術
力を上げて、実際の開発に入ってもらうか
• 開発に入ってもらった後に足りない部分をどうサポー
トしていくか
クライアント側
• Carthage, CocoaPodsの併用
• アーキテクチャはMVCベース
• 共通化は基本的にprotocolを使って行う
• 特定のライブラリに依存しないiOS クリーンアーキテ
クチャか全体の見通しが良くなるReduxを導入した
いが・・・
クライアント側で使っているライブ
ラリたち
• APIKit
• BrightFutures
• SnapKit
• Realm
• Ji
• ReactiveKit
• SDWebImage (Kingfisherに置き換え予定)
• Reachability
• TabPageViewController
• SVProgressHUD
Candleの特徴
Candleのエンジニアチームの特徴
• 基本的にインターンの方が多い
• ポテンシャル採用を行うことも多いのでプログラミ
ング未経験者が入ってくることも多い
• 人の入れ替わりが多い(プロジェクトの配置換えと
か)
流動的かつ真っ白な人が入ってくることが多い!
いかにして真っ白な状態から実際の開発
に参加できるまで育てているのか??
STEP1 研修
APPLEが出してる SWIFT TOURやっておいてね!
頑張って!😆
というわけにはいかないので・・・
🙇
まずは研修
• 社内のエンジニアが作った簡単なCandleのサービスの
コピーを作成してもらいます
• ただ作ってもらうだけでなく当然いくつか意識してい
ただくことがあります
• わからないところ、詰まっている箇所はドキュメント
と自分への質問という形で対応
• Swift tour は研修に追加したいと思ってる
何を意識してもらうか
• Swiftらしさ
• コードをなるたけ綺麗に書く
• コードを書く場所
• git、githubの使い方
SWIFTらしさ
• classの代わりにstruct使ったり
• protocolを使ったり
• ジェネリクスも使ったり
• map, optionalなど関数型由来の機能
• 型の柔軟さ
コードをなるたけ綺麗に書く
• コード規約レベルの話
• 規約を眺めつつまずはスペースを空けてもらったり
インデント整えたり
• 厳密に規約に従ってもらうというよりコードを綺麗
に書くという癖をつけてほしい
コードを書く場所
• さっきの話と関連する
• viewDidLoadに全て詰め込ませない
• 実際にコードをどこにおくのが適切かを考えてもら
うわけではなくそうやってコーディングしていく癖
をつけてもらう
よくある質問
• Futureって何?
• Tって何?
• protocolは何者?
• ? とか ! をつけろって言われるんだけど?
• map { … } <- これ何??
研修をやっていただいて
• 実際のコード読んで尻込みしないように研修のレベルが
高めになってしまっているのかなという感じは否めない
• Futureやジェネリクス、プロトコルは一旦なくしてもう
少しシンプルにした方が良いかも・・・
• 2, 3人同時に相手をすることもあるので自分のリソース
が割と持っていかれる
ここまで終われば実際の開発に入ってもらい、
簡単なタスクからこなしていっていただきます
とはいえまだまだ開発には慣れていないのでしっ
かりとサポートしていきます
STEP2 コードレビュー
まずはコードレビューを根付かせる
所から
• 自分が入った当初はコードレビューの文化がなかった
のでそれを根付かせる必要があった
• 自分が率先してPR作成 -> Review -> Mergeという流
れを作る
• 言い出しっぺの法則に則り自分が全て見ていた (^q^)
• でも回り始めてからは徐々に自分のコストもかからな
くなった
コードレビュー大事
• 新しく入っていただいた方のコードレビューは基本全て自分が
担当(iOSプロジェクト内)
• 実際の開発に入ると規約から外れていたりするので徹底的に
フィードバック
• 主にメソッド名や変数名、大きすぎるメソッドの分割、書くべ
き場所などコメントすることが多い
• 研修からは見えてこなかった部分が見えてきておもしろい(その
人の性格とか)
レビュー時に意識していること
• 言葉遣いは割と注意を払っている。文字だけだと感
情が伝わりにくいので絵文字を多用
• 気をぬくと細かい箇所を見落としていたりするので
普段のレビュー以上にしっかりみる
• タスクとは直接関係なくてもフィードバックできる
箇所があればフィードバックする(こういう方がわか
りやすいよとか)
STEP3 面談
面談
• 週一、月一くらいのペースでその人と面談してどんな
感じかを探る
• どこで詰まっているか?開発をする上での知識はどの
程度ついてきたか困っていることはないかなど確認
• そこで得た情報から少し課題を出してみたりコードレ
ビューの際にどこを見ればいいか絞る
• 割と最近色々やり始めたばかりなのでペースは調整中
STEP4 ドキュメントの充実
ドキュメントの充実
• 開発で使っているツールについて(Carthageとか)
• 自分のマインドセット
• プロジェクトの概要、構成
• コード規約
コード規約
• 基本的には eurekaさんのものを使わせていただい
ています

- https://github.com/eure/swift-style-guide/blob/
master/README_jp.md
• それをベースに自分が思う所を変更、追加したもの
をドキュメントとして公開しています
こんな感じです
マインドセットの公開
• 自分の哲学や思考の元になっている記事や本などを
列挙して社内のドキュメントとして公開している
• その中からその人に良さげなものを紹介したり探し
てもらったりしている
• 少し恥ずかしい
こんな感じです
今後やっていきたいこと
• 割とSwiftの言語機能やUIKitについて知らない人が
多いので週一で勉強会をやりたい
• プロジェクトにきちんとしたアーキテクチャを導入
したい
• 自分のリソースを増やすために諸々自動化したい
• テストコード追加したい
まとめ
• 実際の開発に近い研修をやってもらうことで尻込みせずに開発に入っ
てもらう
• わからない部分はどんどん質問してもらい早くキャッチアップでき
るようサポート
• 開発に入ってもらった後もコードレビューや面談など通じて徹底的
にサポート
• コードレビュー大事
• ドキュメントを見てもらうことで自分のリソースが割かれるのを緩
和
最後に
Candleではエンジニアを募集しています!!
• 圧倒的に成長したい!という方
• 事業の成長を間近で感じたい、自分で成長させたい
という方
• 活気ある職場で働きたい方!!

Contenu connexe

Similaire à アプリだけじゃない!チームも一緒に成長させる開発

C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションYoshito Tabuchi
 
モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線アシアル株式会社
 
デモから見るOpenWhisk - Docker Action -
デモから見るOpenWhisk - Docker Action - デモから見るOpenWhisk - Docker Action -
デモから見るOpenWhisk - Docker Action - Hideaki Tokida
 
iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術Tomoki Hasegawa
 
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料Atsushi Tsuchiya
 
Size class 20150521
Size class 20150521Size class 20150521
Size class 20150521Takeshi Sato
 
Device WebAPI 20160407
Device WebAPI 20160407Device WebAPI 20160407
Device WebAPI 20160407陽平 山口
 
C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)Keiji Kamebuchi
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Kanako Kobayashi
 
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Yoshito Tabuchi
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集terurou
 
オープンセミナー2013@広島
オープンセミナー2013@広島オープンセミナー2013@広島
オープンセミナー2013@広島Masahiko Tani
 
アジャイル勉強会 構想発表
アジャイル勉強会 構想発表アジャイル勉強会 構想発表
アジャイル勉強会 構想発表kiwofusi
 
[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティhirotakanosato
 
オープンソースの 地理空間情報ソフトFOSS4GとOSGeo財団の紹介 OSC京都2013年
オープンソースの地理空間情報ソフトFOSS4GとOSGeo財団の紹介 OSC京都2013年オープンソースの地理空間情報ソフトFOSS4GとOSGeo財団の紹介 OSC京都2013年
オープンソースの 地理空間情報ソフトFOSS4GとOSGeo財団の紹介 OSC京都2013年KenichiSAKURAI
 
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜KLab Inc. / Tech
 

Similaire à アプリだけじゃない!チームも一緒に成長させる開発 (20)

C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
 
モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線モバイル用Webフレームワーク最前線
モバイル用Webフレームワーク最前線
 
デモから見るOpenWhisk - Docker Action -
デモから見るOpenWhisk - Docker Action - デモから見るOpenWhisk - Docker Action -
デモから見るOpenWhisk - Docker Action -
 
iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術iOSアプリ制作ツールアプリビルダーを支える技術
iOSアプリ制作ツールアプリビルダーを支える技術
 
Ops meets NoOps
Ops meets NoOpsOps meets NoOps
Ops meets NoOps
 
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
Big Data University Tokyo Meetup #6 (mlwith_spark) 配布資料
 
Size class 20150521
Size class 20150521Size class 20150521
Size class 20150521
 
Device WebAPI 20160407
Device WebAPI 20160407Device WebAPI 20160407
Device WebAPI 20160407
 
C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)C#ユーザー会 //build/ まとめ(サーバー編)
C#ユーザー会 //build/ まとめ(サーバー編)
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2Swiftビギナーズ倶楽部 vol.2
Swiftビギナーズ倶楽部 vol.2
 
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
 
動的なILの生成と編集
動的なILの生成と編集動的なILの生成と編集
動的なILの生成と編集
 
オープンセミナー2013@広島
オープンセミナー2013@広島オープンセミナー2013@広島
オープンセミナー2013@広島
 
アジャイル勉強会 構想発表
アジャイル勉強会 構想発表アジャイル勉強会 構想発表
アジャイル勉強会 構想発表
 
[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ[Scalamatsuri2016]あ、社内コミュニティ
[Scalamatsuri2016]あ、社内コミュニティ
 
ONE-UPの紹介
ONE-UPの紹介ONE-UPの紹介
ONE-UPの紹介
 
2013osckyoto
2013osckyoto2013osckyoto
2013osckyoto
 
オープンソースの 地理空間情報ソフトFOSS4GとOSGeo財団の紹介 OSC京都2013年
オープンソースの地理空間情報ソフトFOSS4GとOSGeo財団の紹介 OSC京都2013年オープンソースの地理空間情報ソフトFOSS4GとOSGeo財団の紹介 OSC京都2013年
オープンソースの 地理空間情報ソフトFOSS4GとOSGeo財団の紹介 OSC京都2013年
 
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
 

アプリだけじゃない!チームも一緒に成長させる開発