良い目標の4つの特徴
- 明確
- 小さく
- 肯定的
- 行動の形
try! Swift Tokyo 2017 day1 参加レポート
先日、上記イベントに参加させて頂きました。その1日目のレポートになります。
各セッションの詳細は後日realmからアップ予定の動画や、niwatakoさんの聞き起こし一覧にお任せして、
本記事では各セッションの内容を簡単に紹介します。
10:00 - Swift開発者が知りたかったけど聞きにくい機械学習のすべて
- niwatakoさんの聞き起こし
- 機械学習の入門的な内容から、iOS開発者から見た機械学習について紹介されていました。
- iOSデバイスは曖昧な世界(現実の世界)からの入力を受け付けています。そういった点で機械学習にはよい環境だそうです。
10:20 - Swift on Android
- niwatakoさんの聞き起こし
- SwiftでAndroid開発をする話でした。
- ほとんどがCとC++の話で詳細は理解できずに、難しいことだけわかりました。
- Android NDKも関係してくるのですが、こいつはお粗末な実装になっていてGoogleのサポートも弱いそうです。
11:40 - SwiftのPointy Bits
- niwatakoさんの聞き起こし
- SwiftのメモリとSwiftでPointerを使う話。
- あまり使う機会がなく詳しくないのですが、非常にわかりやすくま止まっていたと思います。
12:05 - アプリを新次元に導く3D Touch
- niwatakoさんの聞き起こし
- 3D Touchで実現できる事とその実装に関する発表でした。
- 3D Touchはユーザに気が付かれにくく、実装しないことが多いと思いますが、3日目におこなられたハッカソンで優勝したチーム(1人チーム)は3D Touchをフルに使ったアプリを開発していました。
12:30 - Pixcels、プロセスと情熱
- niwatakoさんの聞き起こし
- 情熱を持ってプロダクト開発に取り組むアプリをリリースした話でした。
- 「大変なのは技術ではなく人」というフレーズが印象的でした。
- Swiftと関係ない発表でした。
14:30 - 毎日リアクティブ
- niwatakoさんの聞き起こし
- Swiftでリアクティブの話というよりは、リアクティブの話をSwiftのサンプルコードを使って紹介するという感じでした。
- なので、Swiftではこうやるみたいな話はありませんでした。
- 発表者はUstreamのエンジニアで、リアクティブライブラリは何を使っているかという質問にたいして、自社で開発したライブラリを使っていると言っていました。
14:55 - ⚡️🎤 Unsafe Swiftの安全性
- niwatakoさんの聞き起こし
- hashValueの生成にStringではunsafeを使うというLTでした。
15:05 - クックパッドアプリのテストを味わう
- niwatakoさんの聞き起こし
- クックパッドアプリのテストどのような方針で取り組んでいるか(テスト設計?)という発表でした。
- Swiftと関係ない発表でした。
15:25 - ⚡️🎤 データレイヤを分離する
- niwatakoさんの聞き起こし
- データレイアを分離して、データレイアの複雑性をUIレイアなどに持ち込まいないようにしようというアーキテクチャの話でした。
- Swiftと関係ない発表でした。
15:35 - UIをSwiftyに書く
- niwatakoさんの聞き起こし
- UIの実装に限った話ではなく、WebAPIを叩いて表示するシンプルなアプリをSwiftyに書く発表でした。
- enumやprotocolの強力な面を紹介していました。
16:30 - SwiftのWeb APIとアプリをともに構築する
- niwatakoさんの聞き起こし
- WebAPIの設計と、Server Side Swiftに関する発表でした。
16:50 - ⚡️🎤 楽しく便利なSwiftチャットボット
- niwatakoさんの聞き起こし
- LINEのエンジニアによるチャットボットに関する発表でした。
- UIが改善されればもっと良いものになると言っていました。(今後に期待!?)
- Swiftと関係ない発表でした。
17:05 - Realmを使ってコラボレーションアプリを作る
- niwatakoさんの聞き起こし
- お絵かきアプリ(?)をRealm Mobile Platformを使って実装する発表でした。
- Swiftの発表というよりはRealmの発表でした。
17:30 - 独自のツールを構築する
- niwatakoさんの聞き起こし
- SwiftをやめてReact Nativeでアプリを開発した話でした。
- Swiftのメリット・デメリット程度の話はありましたが、React Nativeメインの発表でした。
18:00 - ⚡️🎤 リアルタイム物体検出アプリでよりよいフィードバックを提供する
- niwatakoさんの聞き起こし
- Wantedly Peopleの複数名詞を読み取る機能を実装した際に得た画像処理に関するナレッジを紹介していたLTでした。
18:10 - ⚡️🎤 UXエンジニアという働き方
- niwatakoさんの聞き起こし
- アプリエンジニアもUXを意識しようといLTでした。
第7回ペパボテックカンファレンス~ minneアプリのミライ~ 整理されていないメモ
こちらの勉強会の整理していないメモです。
網羅性はないし、タイポもたくさんあって、自分にしか理解できない内容になってしまっています。
それではどうぞ。
19:35 TableView, CollectionViewのパフォーマンスチューニング minneで実践したこと minne事業部 プロダクトチーム 菊池 和紀(@kichikuchi)
- CollectionView, CollectionView in TableVIew ネスト
滑らかタイムライン
- 無限スクロールの話
- もともとはFooterView表示されたらAPIリクエスト叩いていた
- 先読みしてreloadDataしたけど、reloadDataで画面が一瞬固まった
- 常にEndrefreshing読んでた。isRefreshingでチェックして必要な場合だけ呼ぶようにした
- cellの高さ計算をキャッシュした
カスタムカメラロール
- デフォルトカメラロールは1つずつしか選択できないので複数選択できるカスタムカメラロールを実装
- 選択時にreloadData読んでいたが古い端末でちらついた
- 対策
- visibleCellsをwillDisplayCellでCell更新するようにした。
19:45 minneとマテリアルデザインコンポーネント〜DesignSupportLibraryを添えて〜 minne事業部 プロダクトチーム 望月 美帆(@mochicon)
- TabLayout
- 最初は独自実装していた
- SupportLibraryが提供されてからはそちらを利用する
- FABとBehavior
- Behaviorで位置0が返ってくる不具合?があり使わなかった
- BottomSheet
- Ripple
- ViewにThemeを設定するだけで実装可能
- v21
19:55 minne Androidアプリにおけるチーム開発 minne事業部 プロダクトチーム チーフテクニカルリード 久田 一輝(@hisaichi5518)
- CTLの人
- CTLは部署内の技術方針と技術者組織をマネジメント
- テックリードの役割も担っていく
- テックリードとしてチームの生産性を上げる。一人では無理。
- テストの日を設定。今はみんな慣れたので廃止した。
- 新しくメンバーが入ってきたらテストの日再開してもいいかも。
- Device Farm導入
- MVPアーキテクチャ採用
- テスト書きづらいとかがあったので
- リリース担当を設置
- 環境づくり
- Androidチームでふりかえり
- Androidチーム夕会
- 実際にアプリを見ながらやる
- かんばん
- アナログなかんばんを導入
20:05 minneのApple Pay開発 minne事業部 プロダクトチーム プリンシパル 中島 大地(@nakajijapan)
- Apple Payを導入した話
- ユーザにとって支払いがかんたん
- TouchIDでSecure
- 開発者にとってカード決済不要
- AppleIDの情報入力が結構ザル
- 配送コストを計算する時に名前は取得できない。
- 必要なものを必要なときにというAppleの仕様
- プロパティ更新しても状態変わらないので更新必要なときは毎回インスタンス化している
- ゲスト向けにContactsUIで住所の自動入力などを実装した
- 下記によくまとまっている。
20:15 トークセッション 《モデレーター》 執行役員CTO 栗林 健太郎(@antipop)
Cookpad TechConf 2017 整理されていないメモ
こちらの勉強会のメモを整理しよう整理しようと思い、数日経ってしまいました。
もう整理することを諦めて貼り付けてしまいます。
網羅性はないし、タイポもたくさんあって、自分にしか理解できない内容になってしまっています。
なお発表資料と動画はこちらにまとまっています。
それではどうぞ。
13:10 - 13:40 成田 一生 Cookpad under a microscope
- 毎日の料理を楽しみにする。つまり、毎日の料理が楽しくない。
- つくれぽは根幹。フィードバックがあることが重要。
- レシピを投稿する人、レシピを探す人、Cookpadの3者で成り立っている。
- レシピを投稿する人:フィードバックが貰える
- レシピを探す人:探せる
- Cookpad:レシピを蓄積できる
- エンジニア90人以上
- エンジニアの行動評価を行っている
- シンプルな設計を出来ているか
- 社内外で情報共有しているか
- エンジニア課題共有階
- Tech Meatingを2週に1回開催
13:40 - 13:55 滝口 健太郎 Go Global
- 海外事業担当。イギリス在住。
- 食品業界は海外進出する時に味付けを変えている
- 宗教もサービス開発に影響を与える
- 性や、グロの基準が違う
- かのうモデル
- 最小限のコストで当たり前品質を満たし、魅力的品質にコストを掛ける
- 当たり前品質は国ごとに番うので分析する
- 属性よりコンテキストでユーザの課題を分析することが大切
- 属性:性別。年齢
- コンテキスト:どういう目的で料理するのかなど
- グローバル化で大切なこと
- 検索
- 翻訳
- チーム
- OKRを採用している
- リリースは8割
13:55 - 14:10 sorah Building infrastructure for our global service
- インフラの話
14:30 - 14:45 若月 啓聡 サービス開発におけるデザインの取り組み方
- 投稿開発部
- デザイナーの仕事≠画面のデザイン
- 実データを使ってプロトタイピング
- デザイナがXcodeを使ってデザイン修正
14:45 - 15:00 加藤 龍 モバイルアプリのABテスト
- Androidエンジニア
- WebとモバイルのABソリューションは事情は異なる
- モバイルは通信環境がひ弱なことも影響する
- ABテストの要望に充実した社内ツールとの連携が多かったので内政することにした
- ABテストで得られた値の有用性が課題
15:00 - 15:15 丸山 亮 チームでプロダクト開発をするための取り組み
- 料理記録のプロダクトマネージャ
- プロダクト、プロジェクト、チームをマネジメント
- 信頼関係、任せる。
- メンバーはどれくらいかかるか、どう作るかを任せられる
- リーダーは何を作るのか、どうまとめるかを担当する。
- OSSでプロダクトの最初から最後までを経験している
- 直ぐに応答留守
- 区切るをつける。メリハリ
- 外部からも新絵アイを得る
- 信頼を得ることを目的にしない
15:35 - 15:50 須藤 耕平 よりよい検索体験の為の情報設計とプロトタイピング
- 検索の動機とそれぞれの具体的なシナリオを分析、設定
- 設定に既存の機能をマッピング
- シナリオの優先順位を分析
- 継ぎ目の無い導線をデザイン
- 流れが大事
- 実際の生活の中で試す
15:50 - 16:05 長 俊祐 チームでサービス開発するためのコミュニケーション
- Cookpad料理教室担当
- リアル性が高いためインターネットリテラシが低い人も多い
- その中でチームのGithubを導入した話。
- 最初は高等コミュニケーションしてエンジニアがISSUEを立てて閉じてとしていた
- エンジニアが雑にISSUEを立てて心理的障壁を低くする。こんなんでいいんだって思ってくれる。
16:05 - 16:20 国分 崇志 快適なサービス開発を支える技術
- 開発効率の向上のために何をしているか
- 開発環境の工夫
- セットアップを効率化。
- コマンド一発
- 開発の工夫
- 開発環境のデータを本番と同じにする
- 個人譲歩は隠す
- マイクロサービス化
- サービス間で壊れにくいツールを用意
- テストの工夫
- テスト失敗したらコミットした人にメンションん飛ばす
- 高速な実行
- デプロイの工夫
- チャットオプス。リリースの排他制御を行う
- デプロイロック機能。AutoScale中はロックするなど
- 監視の工夫
- リリースして終わりでない。エラーがないサービスを提供する必要がある。
- 障害検知で担当者に電話かかる。
16:40 - 16:55 染谷 悠一郎 Real World Machine Learning
- ディープラーニングのオモテウラ
- 料理きろくにディープラーニングを利用
- ここからウラ
- 計算機環境構築の効率化
- 結構色々大変
- ML Lunch
- 週1回の勉強会
- ML Class
- 外部講師を招いた月1回の勉強会
16:55 - 17:10 兼山 元太 行動ログでプロダクトを改善するには
- 行動ログで検索成功率を計測(満足度の定量化)
- キーワードのジャンル毎(材料、メニュー、目的など)に離脱率を測定
- セッション化(セッショナイズ)が便利。SQLで実現可能。
- 利用者のログはサービスに最適されている。
- 利用者に自然に貢献してもらうことで次の利用者に
17:10 - 17:40 庄司 嘉織 Cookpad awakens
Androidの高機能なLayout
dex.fm 4: Support libraryの中でAndroidの高機能なLayoutが紹介されていたのでメモを残しておきます。
- CoordinatorLayout - FrameLayoutの高機能版
- ConstraintLayout - RelativeLayoutの高機能版
- FlexboxLayout - LinearLayoutの高機能版
Xcodeでプロジェクトを作ってgitignoreを追加するまで
Create Git Repository on Hoge
にチェックを入れてプロジェクト作成- 下記コマンドを実行し、.gitignoreファイルを追加。
このコマンドを実行するにはこちらの設定をしておく。
$ git ignore osx swift xcode > .gitignore
アジャイルサムライからエンジニアのキャリアを考える
- 作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未
- 出版社/メーカー: オーム社
- 発売日: 2011/07/16
- メディア: 単行本(ソフトカバー)
- 購入: 42人 クリック: 1,991回
- この商品を含むブログ (255件) を見る
本記事ではアジャイルサムライの中で紹介されている役割分担からエンジニアのキャリアについて考えてみます。
アジャイルサムライの中で定義されている役割
アジャイルサムライでは役割を以下の2つに分類しています。
- 顧客
- 開発チーム
そして開発チームについては更に以下のように詳細な役割について紹介しています。
- アナリスト
- プログラマ
- テスター
- プロジェクトマネージャ
- UXデザイナ
開発チームのメンバーはこれらの役割を複数こなしたり、日によって別に役割をこなしたりします。
ただ、全てを中途半端に身に着けてもキャリアを築いていくことは難しいと思いますので、それぞれ単体で考えていきます。
アナリスト
顧客と開発チームをつなぐ仕事をします。プロダクトの規模が大きくなると、顧客はプロダクト責任者が全体の方向性を決め、アナリストが詳細な仕様を決めていくことになるのでしょう。
アナリストにはエンジニアリングよりもビジネスサイドのスキルが求められる気がしますが、アナリストは様々なデータを駆使して分析する必要がある役割だと思います。
エンジニアリングの要素の中ではデータ分析のスキルを伸ばしていくと良いと思います。
プログラマ
プログラムの設計やコーディングを行います。
プログラマは組織内で優秀であってもその活動がオープンでなければ成果が見えづらくアピールしづらい環境にあります。
プログラマとしてのキャリアの築いていくには、OSSプロジェクトに参加し貢献していくなどの、オープンな場での活動が必要になると思います。
テスター
プロダクトのクオリティに責任を持ちます。
テスターはプログラマに比べてOSSプロジェクトでの活動が難しいと思います。なぜならあまり大きくないOSSプロジェクトであテスターが活躍する場がないからです。
テストの領域はアカデミック色が強く、様々な手法が一般化されており、それらをに身に付けていく必要があると思います。
そしてそれらの手法を実践に投入し、知識を向上させることで、キャリアを築いていけると思います。
プロジェクトマネージャ
開発チームの生産性が上がる仕事をなんでもやります。
プロジェクトマネージャの仕事の中にはコミュニケーションの改善や他部署との調整など、エンジニアリングが関係ない仕事もありますが、開発現場ではチームを見える化するツールや、CIツールなど、エンジニアリンングが求められる仕事もたくさんあります。
それらのスキルはプロダクト開発とは少し違うスキルになります。
また、生産性を上げるプラクティスもXPのように一般化されており、それらのプラクティスを身に付け、現場に投入し、知識を向上させることで、キャリアを築いていけると思います。
UXデザイナ
レイアウトだけではなくユーザ体験をデザインすることが求めれてきています。
UXデザイナにはソフトウェア開発に関係ない、一般的なデザイナに求められる、人間工学などの専門スキルが求められます。
また、現在や未来にどういうものがなぜ求められているのかというマーケティングも必要になります。
さらには、作り込んだUIがプログラムに落とし込めなかったり、想定外にコストがかかったりするなどの問題も出てきています。
UXデザイナとしてのキャリアを考える場合は、より抽象度の高いデザイナよりのデザイナか、プログラマよりのデザイナかのどちらかに軸足をおくことになると思います。
最後に
アジャイルサムライでは今回紹介した役割以外にも、データベース管理者、システム管理者、テクニカルライター、トレーナー、業務改善担当、インフラ管理者、ネットワーク管理者、などなど様々な役割があると書かれています。
それらについてはアジャイルサムライ内でも詳しく書かれていませんでしたので、今回は考察しませんでしたが、これらについてもどこかの機会で考察してみたいと思います。
以上です。