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

40
アプリだけじゃない!チームも一緒 に成長させる開発 2016/01/17 CANDLE INC. YUICHIRO TAKAHASHI

Upload: yuichiro-takahashi

Post on 08-Feb-2017

106 views

Category:

Engineering


2 download

TRANSCRIPT

アプリだけじゃない!チームも一緒に成長させる開発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ではエンジニアを募集しています!!

• 圧倒的に成長したい!という方

• 事業の成長を間近で感じたい、自分で成長させたいという方

• 活気ある職場で働きたい方!!