iOSDC Japan 2019 前夜祭に参加してきたよ #iosdc
今年もやってまいりました!iOSDC Japan 2019!
会場はおなじみ、早稲田大学 西早稲田キャンパスです!去年も来たのであまり迷わずにたどり着けました👍
さっそく今年のノベルティであるトートバッグを頂きましたが、今話題のダークモードにもちゃんと対応している辺りはさすがだなぁ、と思ってしまいました。
ビールもデプロイされていたそうですが、残念ながら私が到着したときには売り切れでした😂
聴いたセッション
仕事で遅れて参加したため、今回は所さんの「Advanced Segue (2019年のSegue事情)」のみ聴講しました。
Advanced Segue (2019年のSegue事情) by 所友太 | トーク | iOSDC Japan 2019 #iosdc - fortee.jp
最初に会場アンケートがあり、「ご担当のアプリでStoryboardを使っている人」という質問にはたくさん手が上がりました。しかし、「Segueを使っている人」という質問になると手を上げる人は半分ぐらいに減っていました。
しかし、このセッションを聞いて Segue に対する考え方が変わった方は多かったと思います。以下、内容メモです。
- Segueの種類
- Standard Segue(ViewControllerを開く)
- Embed Segue(ViewControllerの入れ子)
- Unwind Segue(特定のViewControllerまで遡る)
- Custom Segue(なんでもアリ)
- Segueを使うPros
- Storyboardで完結できる部分が増える
- prepareForSegueなどで一元管理できる
- Apple Wayから外れない
- Segueを使うCons
- ViewControllerのinitializerを自分で呼べない
- prepareForSegueが複雑になりがち
- iOS 13 で大幅に進化を遂げた Segue
- Segue Action の登場
- 任意のViewControllerのイニシャライザが使えるように!
- prepareForSegueが複雑になりがちという問題も解消!
- Segue 良いのでは?
- より高度な使い方
- Unwind Segue 便利
- どこからでも任意のVCに戻れる コードなしでUnwindできちゃう
- Custom Segue は何でもアリ
- 画面遷移のかわりにopenURLするなんてこともできちゃう
- Unwind Segue 便利
セッションを聴くまでは1画面:1Storyboard =Segue 使う機会はない、と思いこんでいましたが、
#iosdc #b 1画面:1Storyboard 派なので、Segue 使う機会がほぼなかったんだけど、tokorom さんのお話を聞いて、だんだん興味が湧いてきたなー
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年9月5日
id: f:id:KishikawaKatsumi さんのこのツイートを見て、なるほどなぁ、と。
Storyboard Referenceがあるから、1画面1StoryboardとSegueは両立するはず。1画面1Storyboardはコンフリクトを防ぐにはやっぱり良いし。 #iosdc #b
— kishikawa katsumi (@k_katsumi) 2019年9月5日
そんなわけで
明日もいろいろ聴いてきます!
プルリクエストを作る際に画像を Markdown から丁度よいサイズの img タグに変換してくれる Chrome extension「ImgConverter for Github」が超便利
プルリクエストを作る際、スクリーンショットを添付することはよくありますよね。
たとえばアプリのスクリーンショットを普通にアップロードすると自動で Markdown にしてくれるんですが、このままだと画像が大きすぎるんですよね😩
仕方ないので、画像を予め小さくリサイズしてからアップするか、img タグを使ってサイズを 50% ぐらいにするのですが、これがまためんどくさい😤*1
そこでこんなツイートをしたところ、とても有益な情報をいただきました。
ロジック気になりますね👀
— funzin (@_funzin) 2019年8月1日
自分はchrome extensionでmarkdownからimgタグに切り替えてますhttps://t.co/saFvimnoyc
早速使わせて頂きましたが、まさに求めていたものはコレだ!という感じでした。
img タグなのでサイズも簡単に調整できちゃいます👍
ImgConverter for Github は下記リンクからインストールできます。 chrome.google.com
*1:たまに img タグにしてくれるんですが、条件がわかっていません
PHPカンファレンス福岡 2019 #phpconfuk に参加してきたよ
今年も行ってきました!PHPカンファレンス福岡!
今年で3回目の参加です。会場はもちろん福岡ファッションビル!
今年は早い時間帯の高速バスを予約できたため、3回目にして初めて遅刻せずに到着できました😂
今年もカンファレンスTシャツを頂きました!さっそくこれに着替えて会場をブラブラしてました。
今年も素晴らしいセッションが盛り沢山でした。そのうちいくつかをピックアップさせていただきたいと思います。
- PHPerの採用面接でぼくらは何を伝えあうべきか
- 3ヶ月で20万行を消すためにやったこと
- 子育てとスキルアップを両立するエンジニアの生存戦略
- 古き良き開発現場に新しい文化を作ろう!〜荒れた荒野を耕し、種を撒き、水を与え続ける話〜
- WebAuthn で作るパスワードレス WEB アプリケーション中級者向け
- ライトニングトーク
- さいごに
PHPerの採用面接でぼくらは何を伝えあうべきか
登壇者: kurikazu さん
社員数2,000名規模のWebサービス会社でエンジニア採用を担当されている kurikazu さんによる発表です。kurikazu さんは、採用面接では自分が「何を大事にしているか」を交換するのが大事、と強調されていました。たしかに何が幸せなのかは人によって違いますよね。kurikazuさんはそういったことを普段から意識されているそうです。
面接って「通る/落ちる」みたいな話になりがちですが、応募者が会社を判断する場でもあるんだよなぁ、と改めて思いました。
3ヶ月で20万行を消すためにやったこと
登壇者:naopr さん
メルカリの naopr さんによる発表です。PHPで書かれたプロダクトのコードをマイクロサービス化する準備として、不要なコードを3ヶ月で20万行消したときのお話でした。
最初に不要なAPIをリストアップし、それが本当に不要なのか(使われているのか)をひとつひとつ調べながら進めていったそうです。とても根気のいる作業で、結果的に Revert が必要なPRもいくつか出てしまったそうです。しかし、チームの協力もあり、3ヶ月で20万行を消すことに成功したとのことです。
naopr さんもおっしゃっていましたが、やはりチームを巻き込むのは大事だなぁ、と感じました。
子育てとスキルアップを両立するエンジニアの生存戦略
登壇者:株式会社 Fusic 岡嵜雄平( @Y_uuu )さん
子育てエンジニアである Fusic 岡嵜雄平さんによる発表です。 パパ・ママエンジニアが、子育てとスキルアップを両立していくための生存戦略を
- 時間を増やす
- INPUT・OUTPUTの質を上げる
- 家族を大事にする
の観点から紹介されていました。
中でも、先に登壇を決めることで自分を追い込むという「登壇駆動開発」はとても良さそうに感じました。
#phpconfuk #hall_fu Fusicさんはとても良い会社、ということがよく分かるセッションであった
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月29日
古き良き開発現場に新しい文化を作ろう!〜荒れた荒野を耕し、種を撒き、水を与え続ける話〜
登壇者:松村那子 (nako0123) さん
ユニゾンシステムズのナコ先輩こと松村さんによる発表です。古き良き開発現場を試行錯誤しながら地道に改善されていったお話です。
私が特に印象に残ったのは、自分の意見が通りやすい状況を作るために、まずは自分の存在を認識させる期間を作った、というところです。確かに最近入ってきた人がいきなり現場の改善を提案しても「ん?」という反応が返ってくるのはありそうですよね(日本だと特に)。松村さんが言っていた「耕して種を撒く期間は必要」という言葉はとても説得力がありました
#phpconfuk #hal_fu こういう環境に置かれたエンジニアって、その環境に(悪い意味で)適応していくか、静かに辞めていくか、 @nako0123 さんのように地道に改善していくかのどれかなんだろうな。ホントに頭が下がる。良いトークでした!
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月29日
WebAuthn で作るパスワードレス WEB アプリケーション中級者向け
登壇者:k_masatany さん
Fusic の k_masatany さんによる発表です。"パスワードを用いない新しい認証方式" として考案された Web Authentication(WebAuthn)についてのお話です。
実はこのトークを聞くまで WebAuthn のことをよく知らなかったのですが、k_masatany さんによる解説やデモを通じて理解を深めることができました。
#phpconfuk WebAuthn、デモがめちゃめちゃわかりやすかった。これは確かにリカバリ手段をちゃんと用意しないと詰むなぁと感じた。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月29日
そして、Apple さんは安定の未対応か😭
まだまだ対応しているブラウザや端末は少ないようですが、将来的にはこの認証方式が WEB 標準のログイン方法となっていくのでしょうね。
ライトニングトーク
今年はLTのつなぎとしてコメンテーターが何か喋る、という新システムが考案されてました!非常に良かったと思います。あの独特の「間」は発表する側も緊張するし、オーディエンス側も割と気まずいんですよね😅
#phpconfuk 2019のLT、今回はコメンテーター制を導入!!
— PHPカンファレンス福岡2020@7/11 (@phpcon_fukuoka) 2019年6月29日
切り替え時にシーーーーーンとなってしまうときにコメンテーターがしゃべるという画期的な取り組み😎
▷今回のコメンテーター陣@tomzoh @koyhoge @soudai1025 ←もうじきいらっしゃいます! pic.twitter.com/bbUXfEAhEr
さいごに
PHPカンファレンス関係者の皆様、今年も楽しいイベントをありがとうございました!
とても楽しかったよ!
また来年も会いましょう〜😄
#WWDC19 What's New in App Store Connect メモ
読みやすさは考慮していません。ご了承ください。
今日はこれを観てるよ!#WWDC19 のWhat's New in App Store Connectをチェックしてください https://t.co/lOnljjpHVo
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月8日
Xcode 11 からは Application Loader は同梱されない。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月8日
代わりに Transporter というツールが登場。
複数のアプリを同時にアップロードできたり、いろいろと便利らしい #wwdc19 pic.twitter.com/IYuniUTCF4
TestFlight Feedback の登場だ!
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月8日
テスターはメニューからスクリーンショットを開発者に送信できるようになった!ペンツールで簡単なメモ書きも可能。これは助かる。
ユーザーのクラッシュログも送信される。 #WWDC19 pic.twitter.com/P4XpTWh1Br
TestFlight から送られてきたフィードバックは App Store Connect から閲覧可能 #WWDC19 pic.twitter.com/xSdlbdouel
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月8日
App Store Connect の App Analytics で、アプリの Deletion (デバイスから削除された数?)も見られるようになるらしい。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月8日
これずっと欲しかったやつでは!? #WWDC19 pic.twitter.com/z2CGOOyI4W
App Store Connect の App Analytics で過去24時間のデータも見られるようになるらしいけど、本当に直近の24時間なのかな?🤔
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月8日
今はデータ反映まで2〜3日はかかるから、もしホントならすごいアップデートだ#WWDC19 pic.twitter.com/XeOkPsO2dD
#WWDC19 Introducing Sign In with Apple メモ
読みやすさは考慮していません。ご了承ください。
今日はこれを見てるよ#WWDC19 のIntroducing Sign In with Appleをチェックしてください https://t.co/juTYIa6qla
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月7日
Sign In with Apple ボタンを押すとこんなシートが出てくる。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月7日
ユーザーはどの名前とemailアドレスを開発者にシェアするか選択できる。
開発者はユーザのユニークID、名前、Verified email を得ることができる #WWDC19 pic.twitter.com/p2grZy9lxc
Sign In with Apple ボタンはこんな感じで UIButton のように扱えるのか。 pic.twitter.com/pEwH9jXTjs
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月7日
Sign In with Apple ボタンがタップされたときの処理は自分で実装する。取得したいスコープなどをセットしてリクエストすると、結果が Delegate で返ってくる。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月7日
ここでクレデンシャル等の情報が得られる。
これを Firebase Authentication に投げられるようになったら良いなぁ pic.twitter.com/B66z57AqEy
ユーザーの認証状況はこのように分岐可能。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月7日
何らかの理由でクレデンシャルが無効になった場合は .revoked になるので、再認証させてあげる#wwdc19 pic.twitter.com/jqcRN34Uli
#WWDC19 What's New in Core Location メモ
読みやすさは考慮していません。ご了承ください。
次はこれだ!!#WWDC19 のWhat's New in Core Locationをチェックしてください https://t.co/jyng3onQqY
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
位置情報サービスにおける権限のおはなし。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
iOS 12までは
・Appの使用中のみ
・常に
許可するかどうかを選択できたけど、iOS 13からは
・今回だけ許可(New!)
が追加! #WWDC19 pic.twitter.com/7CY0wtkJgo
この位置情報取得を「今回だけ許可」はアプリが次に Not in use になるまで有効らしい。この選択肢は自動的に出るので、開発者側が特に意識する必要はなさそうな感じだった #WWDC19
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
Authrorizationの定義もとてもシンプルに。
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
iOS 12 までは割と複雑になりつつあったけど
iOS 13 からは
・In use
・Not in use
の2種類だけに。とてもシンプル #WWDC19 pic.twitter.com/kA5qWtYKCE
じゃあ、In use とは具体的にいつなのか?
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
→ Foreground にいるとき+Background に入ったあとの直後
ただし、Background Mode のときは
allowBackgroundLocationUpdates = true ならずっと持続。
false なら バックグラウンドに入ってしばらくすると Not in use になる #WWDC19 pic.twitter.com/WQMhIcBA8p
#WWDC19 Implementing Dark Mode on iOS メモ
読みやすさは考慮していません。ご了承ください。
ダークモードの実装方法を学んでいる / #WWDC19 のImplementing Dark Mode on iOSをチェックしてください https://t.co/S7pOIRKbgE
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
ダークモードはホントに真っ黒(RGB: 0 0 0)なんだなぁ #WWDC19 pic.twitter.com/U2hrr4Y0QH
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
背景色を systemBackground Colorに、
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
テキストカラーを label Color にセットすると、
ダークモード/非ダークモードで良い感じに色を調整してくれるらしい。この辺は予想通りだ pic.twitter.com/HtJmtaou3N
iOS シミュレータでデバッグ中もXcode左下のスイッチでダークモード/非ダークモードを切り替えられる。毎回 Run し直す必要がないの便利だ #WWDC19 pic.twitter.com/0j1kdIrpkn
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
Status Bar も .Default にしておけばダークモード/非ダークモードで良い感じに切り替えてくれる #WWDC19 pic.twitter.com/MEQHgbzamr
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
ダークモードの登場により、 UIActivityIndicatorView の .gray .white .whiteLarge は Deprecated❌
— Og🌗エンジニア🏝宮崎 (@koogawa) 2019年6月6日
代わりに
.medium and .large を使ってね、とのこと。
これもダークモード/非ダークモードで切り替えてくれる #WWDC19 pic.twitter.com/DBz6uFMfM5