筋肉.swift

筋肉エンジニアK-BOYのブログ

#iOSDC 2018で聞いたトークのリスト

備忘録的にも、iOSDC聞いたやつリストを残す。

聞いたリスト

30日

  • Working in a multi-cultural environment with a global app
  • ツールとして利用するUIテスト

31日

  • 複数のライブ配信を同期再生するのが大変だったので知見をお伝えします
  • リアルタイム革命
  • スマホアプリエンジニアだから知って欲しいブロックチェーンと分散型アプリケーション
  • Grpc-swiftを使ってiOSアプリでも快適なgRPC通信を行う
  • 宣言的UICollectionView
  • Swiftの生みの親によるsync/await for Swift を徹底解説し、新しい非同期処理の手法を理解する

1日

  • In-App Purchase再考
  • 二癖くらいある画面収録からの生放送
  • Depth in depth
  • ARKit Maniacs
  • QRコードの読み取り?楽勝ですよ
  • Synchronized iPhones!
  • LT #a

2日

その中でも特に印象に残ったやつは以下!

特に印象に残ったトーク

勉強になったトーク3選

スマホアプリエンジニアだから知って欲しいブロックチェーンと分散型アプリケーション

ブロックチェーンよくわかってないので良かった。

SwiftからPythonのライブラリを使って機械学習する方法

機械学習はARに関係あるし、わかりやすくて導入に良かった

作ってわかるレンダリングパイプライン CPUで3D描画

3Dのレンダリングの仕組みがとてもわかりやく、デモに説得力があった

動画系で参考になりそうと思った2選

  • 二癖くらいある画面収録からの生放送
  • ライブ配信アプリのアイテム再生をMetalで実装することになった話

ARKitに生きそう2選

  • Depth in depth
  • ARKit Maniacs

まとめ

勉強になった系の3選は復習して今後に生かしたい。ブロックチェーンは多分勉強しないけど、理解だけしときたい。それ以外の2つは普通に仕事にも自分のキャリアにも生きるのでMUSTで復習。

動画系は、Metalだけ復習しときたい。いざなんかやりたいときに選択肢として知っておきたい。

ARKit系はもう理解したので大丈夫。必要になったらまた調べる。

勉強は復習こそが全てなので、聞いて終わりでなく今後に生かして行きたい。

beta版のiOSのスクリーンショットをブログにあげたらAppleとのNDA契約違反か

先日書いた記事が目立って、iOS12のスクリーンショットをネットにあげてもいいのか?的な指摘を間接的にTwitter等で受けたのと、Qiitaさんからも念のため確認してほしい的な旨のメールをいただいた。

qiita.com

そこでAppleとの間のNDAについて少し調べてみた。

NDAとは

秘密保持契約(NDA)とは、取引を行う上で知った相手方の営業秘密や顧客の個人情報などを、取引の目的以外に利用したり、他人に開示・漏洩することを、禁止する契約のことです。 https://itbengoshi.com/page-0-38/

qiita.com

今回の場合、基本的にAppleのDocumentに書いてあることを日本語にまとめただけであり、 秘密情報を漏らしたとは思っていなかったが、

iOS12betaはApple Developer Programに参加していないとインストールできないということに気づいた。

Apple Developer Programに参加してる状態が当たり前になりすぎて、誰でも触れる情報というわけではないことが頭から抜けていた。

今後Appleのbeta版に関する情報をあげるときの注意

備忘録的にも、今後Appleのbeta版の情報をブログにまとめたりすることに関して注意することを箇条書きで書いてみる。

大丈夫なこと

  • Appleの公式Documentに書いてあることを元にまとめるのはOK
  • WWDCで発表された内容、映像について引用するのはOK

よくないこと

まとめ

ということで、該当の記事のgifのスクリーンショットは念のため消しときました。

qiita.com

法律云々は置いといて、今回僕がAppleの機密情報を漏らしたか?と考えると、 すでにAppleから公式で発表された情報と内容的には同じなので、バラしてはいないという認識。 しかし刺されたら否定できないのでスクリーンショットのアップロードは念のためやめておいた方が良さそう。

そして最後に言いたいことを1つ。

それAppleとのNDA契約違反になるかもよ!」ってラフにDMとかで教えてくれればいいのに!!

では!

P.S

昨日エンジニアでクラブに行く会なるものに行ったので二日酔いなう。

堤さんの「Metal入門」の書評

f:id:kboy_silvergym:20180510001708j:plain

堤さんのMetal入門をひと通り読みましたので、さらっと感想を書きます!

ひと通り読んだと言っても、全部を理解して全てを書いて再現したというわけではありません。読んだ目的は、実際にMetalが必要になった時に頑張れるようにするためです。つまり全体像を掴みたいという感じ。

最終的に自分は、ARKit、SceneKitでMetalを使いたいので、それを重視した読み方になりました。

booth.pm

読む順番

この本は読む順番が大事だと思います。

前から順番に全部読もうとするべきではないです。そうやろうとして僕は4章と5章で挫折しそうになりました笑

なので、ARKitやSceneKitに興味がある僕は、

1章 Metal の概要

2章 Metal の基礎

13 章 SceneKit × Metal

14章 ARKit × Metal

という感じで、導入と、実際に興味がある部分を読んだ上で、

6章 Metal のハードウェア要件

7章 GPGPU プログラミング入門

8章 MSL 入門

9章 Metal Performance Shaders

10章 Metal の最適化

11 章 Metal のデバッグ

って感じでその他の豆知識を読んでいきました。

そして最後に

3章 入門その1 - 画像を描画する

4章 入門その2 - シェーダを利用する

5章 入門その3 - シェーダでテクスチャを描画する

を読みました。 この辺は実装の話なので、実際に使う場面にならないと本気出せないと思います。 なので今回は流しました!

所感

1章2章を読むだけでもかなり価値があると思います。 GPUとCPUが、iPhoneの中でどうなっているのかという全体感を掴めただけでも大きな収穫になりました!

その他の実装は、必要になったときに参考にしたら良いのかなと思います。

まとめ

Graffityの仕事でもお世話になっている堤さんの書いたMetal入門の書評を書いてみました。

なぜ書いたかっていうと、買ったけど読まない人や、気になるけど買ってない人のためになるかなと思ったからです。参考になれば!と思います。

では。

booth.pm

iOS版「Graffity2.0」開発における3つの初体験

Graffity iOSを先日大幅にアップデートしました。僕は「Graffiy2.0」と呼んでいます。

このアプデに当たって、僕は3つの初体験をしました。

人生において童貞を卒業するチャンスは1度しかありませんが、「Graffiy2.0」開発においては3回卒業したようなものです。そのくらいいい経験だったと思います。

ってことで、

  • 実装
  • チーム構成
  • PMF達成に向けた開発

の豪華3本立ての初体験を紹介します。

初めての実装

今回のGraffityではiOSで用意された様々なフレームワークを使いました。

  • ARKit
  • SceneKit
  • CallKit
  • PushKit
  • Contact
  • AVFoundation
  • MessageUI
  • Codable

また、サードパーティでは、

  • FirebaseDynamicLink
  • KingFisher
  • Hydra

などを使っています。

一番苦戦したフレームワーク

f:id:kboy_silvergym:20180506140912p:plain

一番苦戦したのは、PushKitとCallKitです。 VoIPプッシュという存在さえ知らないところからだったので、いろいろわからなくて苦戦しました。 Qiitaとかで概要をまとめられたらと思います。

JSONのparseはCodableが便利だと実感

今回APIから受け取ったJSONは全てDecodableに準拠したentityを作ってparseしました。 また、リアルタイムで相手に線を送るためにp2p通信しているのですが、その時もCodableのentityでJSONにして受け渡ししています。 慣れるとめちゃ便利です。 今まではSwiftyJSONやUnboxを使っていましたが、今後はCodable一択になりそうです。

やっとARKitの理解

f:id:kboy_silvergym:20180506141031p:plain

JOINした当初はARKitに対してコミットするよりも、 既存のUIを整えたり、全体のリファクタリングばかりやっていたのですが、 その辺も整ってきて、3Dプログラミングの勉強とARKitとSceneKitで用意されているAPIの理解するために時間を使えるようになってきました。 エンジニアとしてGraffityでやりたかったことができています。

初めてのチーム構成

実はリニューアル前のGraffityはReact-Nativeで作られていたのですが、今回から全部swiftにしました。 それにあたってiOSはほとんど1から作り直しています。

今回のリニューアルは、着手から1ヶ月半 でリリースまで行ったわけですが、僕以外に2人のiOSエンジニアが開発に携わっています。お2人の許可もいただいたので、紹介させていただきます。

@gomachan_77

1人目は @gomachan_77です。

副業で手伝っていただきました。 以前はCyberAgentiOSをやっていて、今は某コンシューマゲーム会社で皆も知ってるあのゲームを作っているそうです。

朝から2時間稼働、夜に2時間稼働!みたいなスタイルで、手伝っていただきました! 彼がいなかったらこのスピードでこの品質のアプリは作れていないと思います。

僕よりエンジニア経験が多い先輩なので、書き方を吸収させてもらいました😆

@shu223

あの @shu223 さんです。

iOSxBLEの本やARKitSamplerなどのSamplerシリーズ、この前の技術書店では Metal入門 が話題でしたね!

GraffityのCEOの森本君の繋がり経由でお手伝いいただくことになったのですが、自分が #筋肉swift で目立っていたことで認知されていたのは大きかったですw

@shu223 さんには、主にネオンペンという光るペンの実装や、その他パフォーマンスまわりの改善や相談に乗っていただきました!

f:id:kboy_silvergym:20180506135914g:plain

おかげさまでARKitの勉強になりますし、Metalの実装を一緒に仕事をしながら目の当たりにできているのは大きいです。 また、パフォーマンス向上のためにInstrument等を活用して調査することを全然してなかったので、実践的な使い方を教わることができたのも良かったです。

shu223.hatenablog.com

↑堤さんのブログにもちょろっと出てます。

副業も含めた少数精鋭チーム

以上の優秀なお2人にパートタイムで手伝っていただきました! つまりiOSは僕入れて3人チームです。 また、API@mutun が頑張ってくれました😍

フルタイムのエンジニアは、僕とmutunだけで行ったGraffityですが、パートタイムのメンバーを含めた新しいチームでの開発によってリリースしたことが良い経験となりました!

パートタイムの2人がバリューを最大限発揮するために心がけていたのは、

  • 最終的には自分が責任をとるというスタンスでいること
  • できるだけ実装に集中できるようにタスクを明確にすること

です。

もちろん完璧にディレクターをやったわけではないですが、開発以外の無駄な時間を2人にできるだけ使わせないようにしたいなと思っていました。 自分も副業や個人アプリ開発では、短い時間で効率よく進めることを意識するので、その辺を気をつけることができたかなと思います。

初めてのPMF達成を意識した開発

www.venturising.com

最後に。今回は、PMF達成に向けた開発を意識しています。 というのはつまり、無駄なことをせず、変化に強くなるよう開発したということです。

優先順位をつけて開発しないと一生リリースできなくなってしまいます。 リリースが遅延すればするほど、仮説検証が遅れてしまい、PMF(プロダクトマーケットフィット)が遠のきます。

3ヶ月かけて自分たちの思う完璧なアプリをリリースするより、 1ヶ月半でMVP(Minimum Viable Product)を開発し、仮説検証をスタートすることが効率的な時間の使い方です。

今回リリースしたプロダクトは新たな仮説検証のためのベースであり、完成品ではないという考え方を持っています。 その考え方を持って開発して具体的に何をしたかというと、

  • コードを捨てやすいようにDDD構成にした
  • deploygateにすぐあげてデザインチームに毎日共有した

この2つです。ちょっと説明します。

DDD

ここでいう、DDD(Domain Driven Development)は、CleanArchitectureのpresenterは作らない構成です。

  • 仕事ごとにUseCaseを作って分ける
  • APIはCodableに準拠したentityにparse, Translaterが使いやすいDomainModelに変換してからUseCaseに渡す

て感じです。

使わなくなった機能はUseCaseごと捨てるだけで済むようにします。いろんなところに散らばると捨て難くなるからです。

また、entityとDomainModelを分けることは、APIの変更とUIの変更の影響を小さくすることに貢献します。

機能はすぐに変わるので、変化に強くしようと思ってこのようにしていますが、なかなか良いです👍

deploygateにすぐあげてデザインチームに毎日共有した

今はfastlaneにdeploygateに上げるlaneを作って、Bitriseでdeploygateに自動であげています。 それの準備が間に合ってない時は、ローカルで dg コマンド使ってdeploygateにあげていました。

www.bitrise.io

デザインのチームが常に最新版を使ってヒアリングができるように、毎日deploygateに上げることはワークしたと思います。 今後もAppStoreのアプリのアップデートだけでなく、deploygateの検証版でデザインチームにヒアリングしてもらって、改善を重ねていくと思います。

頑張ってAppStoreのアプリをアップデートしたけど、方向性が間違っていて、ユーザーに使ってもらえませんでした。」という言い訳を言うことがないよう、細かく仮説検証してPMF達成に近づいて行きたいですね。

まとめ

以上、今回のリニューアルでは3つの初体験をしました。これからもGraffityで面白い経験を積んで行きたいです。

日本語対応はしばしお待ちを!!では!

12月でJX通信社での勤務を終え1月からGraffityです

いわゆる転職エントリです。

12月いっぱいでJX通信社を卒業してGraffity Inc.にJoinします。

転職は2回目です。

新卒からこれまで

新卒でGoo-netなどを運営する会社に入って、ディレクターをやりつつ、コードを書くのも手伝うというスタイル(新規事業だったので)でやらせて貰って、AndroidiOSアプリ開発を覚えました。それが1年半。

次の会社が報道系ベンチャーJX通信社で、1年3ヶ月働きました。

JX通信社で学んだこと

JX通信社では、ニュースダイジェストのiOSアプリを作っていました。

News Digest(ニュースダイジェスト)

News Digest(ニュースダイジェスト)

  • JX PRESS Corp.
  • ニュース
  • 無料

もう、単純にこの1年3ヶ月でiOS、swiftのスキルがかなり上がりました。

iOSだけでなく優秀なエンジニアが沢山いたため常に刺激を受けてスキルアップに務めることができた環境だったな!と思ってます。

周りのエンジニアのスキルが高いからこそ自分の価値は何か?ということを考える機会になり、筋肉エンジニアでやってみよう!とか筋肉.swiftやってみよう!という考えになったとも言えます。

本当にありがとうございました!!

さらなる成長を求める感じで

現時点で僕のエンジニア歴は2年。エンジニア歴で言えばまだまだペーペーだと思います。

しかし、エンジニアのスキル以外にも自分には発信力みたいのがあって、ブログとか書くのも好きだし、YoutubeとかInstagramの発信を頑張ったこともあるし、筋肉.swiftの開催など、所謂ウェーイな文系がやりそうなことも出来ます。

そういう意味で、その能力にエンジニア歴2年が欠け合わさったわけで、なかなか面白いスキルセットの人になってきたかな?と自負しております。

そんな自分の能力をもっと活かせる場所がないか?と思って外を見だしたのが今年の夏くらいからで、

今回、ご縁あって設立したてのGraffityを一緒に盛り上げていくことを決めたのであります。

jp.techcrunch.com

そのGraffityとのご縁とは

Graffity Inc.のCEO森本くんとは、 iOSDCのアフターパーティー( 夜のiOSDC )で会いました笑

彼はその時リリース前のGraffityを見せてくれて、僕はiPhoneで空間にお絵描きできる様子を初めて見てマジ感動。

そのあと森本君がランチ誘ってくれて、

とりあえず土日や平日の夜に試しにコミットしてみよう!」というのが始まりであります。

その後JOINを決めた理由

理由がいくつかあります。

  • ARKitを極めて自分の価値をあげて行けると思った
  • スタートアップで立ち上げを経験したかった
  • Graffityのアプリの品質をもっと良くしたいと思った
  • 多分自分はGraffityに貢献できると思った

こんな感じです。

4つあげたうちの前者2つがGiveで後者2つがtakeです。Giveとtakeの要素がどちらもあったので、JOINしたいと思ったし僕のJOINは会社とプロダクトにメリットがあると思っています。

Give

ARKitはチャンスです。ARKitにチャレンジして使いこなせるようになることで自分のエンジニアとしての価値が上がると信じています。

また、ストレングスファインダー的にも僕は起業が向いている性格だと思うんですが、一回エンジニアとして立ち上げをしてみたいです。別にCTOじゃなくてもいいんですが、組織が小さいところからある程度大きくなって行くところ、プロダクトが最初に作ったものから変化して行く過程を経験したいです。もちろん当事者としてそれらを実行したいです。

これらがGraffityにJOINして得たいこと。

Take

僕が現時点でGraffityに与えることができる価値は以下です。

  • iOSアプリの開発経験2年
  • イメージを機能まで落とし込む能力
  • セルフブランディング
  • ブログ発信、イベント開催
  • 当事者意識
  • 効率主義
  • ちょっとチャラい

こんな僕が入ったGraffityはきっと強いです😎

まとめ

1月からはまず、

の体制でGraffityをアゲていきます。

僕の仕事は

  • エンジニア組織を作って行くこと
  • プロダクトの品質向上
  • ユーザーのニーズに答える素早い開発サイクル

です。

引き続き昼間に筋トレもしながら健康に気をつけて頑張って行きたいと思います。

もしGraffityを一緒に作って行きたい!って言う人がいましたら僕にDMください!待ってます!

twitter.com

それでは。

筋肉エンジニア、俺コンvol.1で発表してきました!

こんばんわ。KBOY@筋肉エンジニアです。

最近、積極的に勉強会に参加していてiOS界隈の知り合いも増えてきて嬉しい限りです。

直近では、potetotips, iOSDC, MercariTechConf, と参加させていだきました!そして今回、俺コン では、登壇者としてd_dateさんにご指名をいただき、発表してきました。

発表内容

speakerdeck.com

ハッカソンでイケてるアプリ24時間でを爆速実装する方法」と題して発表しました。

Qiita版もありますのでよければ読んでみてください。

発表してみて

f:id:kboy_silvergym:20171004221655j:plain

俺コンは自分がエンジニアとして登壇する勉強会の規模ではかなり大きな方でした。始まる前はやっぱりちょっと緊張しました。。。

でも、d_dateさんがユルい感じ(いい意味で)でしたし、swift愛好会系の方やその他いつも見る方々がたくさんいらっしゃったので、発表するときにはかなりリラックスできました。

俺コンでは同時に3つの会場で発表が平行に行われていて、私の発表したのはd_dateさんの枠のC会場。

A, B会場でかなりためになる話が多い中、自分のところに来てくれるのかヒヤヒヤしてましたが、意外といてくれて嬉しかったです。(筋肉に需要あるんですかね)

ちゃんと狙ったところ(ハッカソンアーキテクチャV&Mのところ)でウケも取れたので満足でございます。

発表で意識したこ

発表で意識したのは他の方との差別化です。僕の発表を聞きにきてくれる方が求めているのは、技術的な知見ではなく、面白さとか刺激だと思っています。

だから、ウケを狙うところは狙って、コードは少し入れながらもできるだけシンプルな発表にしました。(ってかそういうのしか作れない)

今後とも積極的に登壇して行きたいと思いますが、どんなに技術レベルが高度な話になったとしても、面白さとか刺激のある発表をすることは忘れないでいたいです。

今のところ一番お手本となっているのはMercariTechConfで発表していた吉岡さんのエンターテイメント性溢れる発表ですね 😍

他の方の発表ピックアップ

Day1, 2でそれぞれ自分が一番ためになったと思った話を紹介します。

Day 1: Layered Architecture x RxSwiftを活用した適切なエラーハンドリング

speakerdeck.com

Infra, Domainでエラーを分けて、それぞれの場合どうハンドリングするかを洗い出していくのはとても参考になる方法だと思いました。仕事で使えそうです。

Day2: 個人開発を加速させるツール群

speakerdeck.com

14本の個人アプリをリリースしているスター星さんの説得力のあるツール群の紹介。

  • AppFollowは良い感じにslackにレビューを流せる
  • サーバーサイドはHeroku。アドオンが便利。エラー監視やログをslackに送れる
  • アイコンはココナラを使って500円で発注

などなど、なるほど!そうやっているのか!という話がたくさん聞けました。

自分も筋トレ記録アプリバーベリーを個人アプリとして持っている(全然アプデできてない)ので、参考にしようと思いました!

まとめ

俺コンの発表の最後にも紹介したんですが、筋肉.swift というiOS勉強会を開催したいと考えています。

f:id:kboy_silvergym:20171004215226p:plain

筋肉.swiftとは

筋肉エンジニア枠と一般枠があり、筋肉エンジニアが司会をする普通のiOS勉強会。プロテインで乾杯するのと、飲食物はヘルシーなものが多いのが特徴。

まだ会場も懇親会スポンサーも日程も何も決まっていない!けど、色々な方にご教授いただきながら開催してiOS界隈を盛り上げたいと思っています。

conspassページだけ作ったのでよかったらチェックしてください!

ということで、楽しかったです。運営のみなさんありがとうございました!

Spajam2017で作った『嫌われAIの命名』のリリースパーティーをやります!

f:id:kboy_silvergym:20170822223716j:plain

こんにちは。 筋肉エンジニアのKBOYです。 我らがライジングサンがSpajam2017で優秀賞を獲得したプロダクト『嫌われAIの命名』がなんと! App Storeでリリースされました!

嫌われAIの命名

嫌われAIの命名

  • Yamada Taku
  • エンターテインメント
  • 無料

 ハッカソンで作ったプロダクトをしっかり、世の中にアウトプットするというのは、素晴らしいですね。

 

しかし、筋肉チーム「ライジングサン」はリリースして終わりではないんですね。

 

遠足は帰るまでと良く言ったものですが、アプリはリリースパーティーをやるまでがリリースです。

 

そう、やっちゃいます。

 

『嫌われAIの命名』リリースパーティー開催決定!

f:id:kboy_silvergym:20170822221947j:plain

『嫌われAIの命名』APP RELEASE PARTY

@乃木坂 club CACTUS  2017/9/16(SAT) 20:00~

 

僕はいつもやりたかったんです。リリースパーティーを。

 

良くクラブでアルバムとかのリリースパーティーやってるじゃないですか。「私たちエンジニアだっていつもリリースしてる!」なのにリリパをやってないじゃないですか。

 

だから今回、やっちゃいます。

 

なぜやるのか

せっかく優秀賞をとったので打ち上げしたいなと思って。

 

あと、デザイナーの  @shujihirai がVJできるんでやってもらいたかったのです。

 

今回のパーティー、もちろんDJもいますよ。(なんとかする)

 

誰が来るのか 

 

筋肉エンジニア率いるライジングサンチームのメンバーとSpajam2017で最優秀賞の市川電産のお二人。

 

そしてSpajamをきっかけに仲良くさせていただいているIT芸人@masuidrive

 

筋肉エンジニアtakuの元々先輩であるカンパイヤーの@jollyjoester

 

などなど!著名な方も来てくださると言ってくれました!

 

人数規模は20-40人くらいで考えています。

 

基本的にはSpajam関係の方をお誘いしていけたらと思っていますが、是非行きたい!という方がいらっしゃいましたら、

 

polca.jp

 

今流行りの polcaで400円のご支援をいただくとなんと!参加権をプレゼント!w (飲食代は別)

 

※このpolcaで集まったお金はテキーラの購入に使わせて頂きます。(持ち込み自由なので)

 

ということで、リリースパーティーやってこ。

 

polca.jp

 

 

筋肉エンジニア KBOY