try! Swift Tokyo 2018にいってきた

今年もtry! Swiftに参加してきた。昨年に続きとても楽しい時間を過ごすことができた。運営の方々に感謝。

今年はSwiftの言語仕様、OSS、コミュニティ、エコシステム、マルチプラットフォームといった話題についてより深い内容を扱っているトークが多かった。iOSアプリ開発の文脈でのトークは昨年に比べて少なかった。

個人的に面白かった発表

言語プロセッサに精通することは、作業効率化ツールを作ることができたり、たくさん実利があると感じた。最近LLVMコンパイラについて調べたりしているので、そのあたりの自分の興味ともマッチして、とても面白かった。

今 In Review とのことだが、iOS版のCharlesが出るそう。会場もかなり沸いていた。

所感

  • 今年は言語自体に関する話が多かった印象

    • Swiftの言語仕様
    • SIL, ASTなどSwift言語、LLVMフロントエンドに関する発表
    • マルチプラットフォーム, Linux
    • ASTを用いたツール開発による効率化
    • iOSDCとの棲み分けができていて良い (向こうはアプリ設計、デザイン、運用の話が中心)
  • 国際カンファレンス

    • 海外からの参加者と気軽にコミュニケーションできるのが良い
    • 海外からの参加者への配慮が行き届いていると感じた
    • Slack
    • 翻訳レシーバ
    • 場内の英語表示

beta配信したアプリをインストールできない時のチェックリスト

仕事でよくCrashlytics betaを使ってアプリの配布を依頼されるのだが、インストールできないと問い合わせを受けることがある。 その時にチェックする項目を備忘のためリストにしておく。

  • UDIDは登録済みか
  • Provisioning Profileは更新したか
  • ビルドには更新したProvisioning Profileを使ったか
  • Crashlyticsにメールアドレスは登録済みか
  • Crashlyticsからの再配信は試したか
  • 端末にbeta配信したアプリと同じbundle idを使っているアプリが入っていないか

それでも駄目なら

  • 端末からプロファイルを削除して登録からやり直す
  • ipaファイルを直接インストールする

GNU開発ツールを読んだ

正月休みにGNU開発ツールを読んだ。とても良い本だった。

C言語で書かれたHello Worldのプログラムをビルドして実行する時に、裏で行われていることについて書かれている。最初にgccドライバが何をしているか大まかな流れを説明し、その後プリプロセス、コンパイルアセンブル、リンクの各工程を解説するという構成で大変分かりやすかった。また文章も平易で理解しやすかった。細かいコマンドの全てに詳しい説明が書いてあり、実際にコマンドをUbuntu上で実行しながら読んだ。

以前、理論寄りのコンパイラの本を何冊か読んでみたことがあったが、自分には敷居が高かった。この本はコンパイラ初学者の入門に最適だと感じた。

絶版で、現在は著者のページで電子ファイルのみ購入することができる。 www.oversea-pub.com

React Nativeの環境構築をした

React Nativeの勉強に少し手をつけたので、環境構築の記録を残しておく。

マシンはmacOS 10.12.6

入れたもの

VSCodeを使いたかったので以下も入れた。

Xcode

iOSネイティブアプリの開発環境。App Storeからインストールする。

Android Studio

Androidネイティブアプリの開発環境。以下のリンクからインストールする。

developer.android.com

homebrew

nodeのインストールに必要。

brew.sh

node

$ brew install node

watchman

ファイルの変更を検知して、シミュレータの内容を即座に更新するために使用する

$ brew install watchman

github.com

react-native-cli

React Nativeのコマンドラインツール

$ npm install -g react-native-cli

Visual Studio Code

以下のリンクからインストールする。

Visual Studio Code - Visual Studio

VSCode extension for react native

Visual Studio CodeにはReact Native用の拡張機能が存在する。Visual Studio Codeを起動して、画面左下のアイコンから拡張機能に移動し React Native と検索するとヒットする。

参考

以下のコースを参考にしている。

https://www.udemy.com/the-complete-react-native-and-redux-course

2017年のふりかえり

アウトプット

登壇

同僚の誘いでGitLab Meetup Tokyo #2で登壇した。初めての勉強会での登壇だったが、良い経験になった。アウトプットへの心理的障壁が下がった。

OSSへのコントリビュート

3 pull requests, 2 merged

年末にふと思い立って出したプルリクエストが立て続けにマージされた。壊れたExampleプロジェクトのビルドを直したりWarningを解消するような簡単な修正ではあったが、普段自分が使っているライブラリにコントリビュートすることができた。

blog

アウトプットを増やしたいと思い、今月になって意識的に投稿するようになった。Qiitaにも申し訳程度に投稿した。

インプット

読書

ここ数年継続的に行なっている。 booklogによると 47冊読了していた。ただそのうち技術書は僅か8冊だった。思っていた以上に少ない。今年は本を読み終えることよりも、読書を通して知りたい内容を引き出すことを意識していたにしても。あと8月に10冊読んだのは有休消化中で暇だったから。

Android

Androidの勉強を始めた。

仕事

転職

8月で前職を退職。9月から現職に転職した。

前職

風通しがよく、気持ちよく仕事ができる人が多かった。色々な場面で親身に話を聞いてくれた上司と同僚にはとても感謝している。印象に残っている仕事として、昨年末から関わっていたプロジェクトを3月に無事リリースできた。

現職

大分慣れてきた。まだ大きなアウトプットを出せていないので、来年はもっと貢献したいと思っている。

来年

アウトプットを増やす。特にOSSへのコントリビュートは続けていきたい。インプットは領域を狭めて、深く学べるようにする。

2017年買って良かったもの

掃除機がコードレスになって恐ろしく便利になった。我が家は幼子がいることもあり、毎朝出勤前に5分程度さっとかけるようにしている。自宅に階段があるので、ルンバは今のところ検討していない。

悪童日記

悪童日記

Rebuildで紹介されていて、続巻まで一気読みしてしまった。著者のアゴタ・クリストフハンガリーの亡命者で、ナチス・ドイツ占領下のハンガリーの様子を思い描きながら読んだ。

具体と抽象

具体と抽象

具体と抽象を行き来しながら物事を考えることを説明している本。物事を正しく抽象化して文章にすることに苦手意識を持っていて、そういう興味を持って読んでとても良かった。

ジェネリックRoost。これまで金属製のラップトップスタンドを使っていたけれど、これは場所を取らないし、持ち運びもできて便利。またスタンドを導入する以前は、ノートPCで作業すると肩が凝って仕方がなかったが、導入してからは症状が大きく改善されたので、使ったことのない方はぜひ試してもらいたい。

Reactive Programming in iOS with RxSwift | Udemy

今年になって初めてウェビナーを試してみた。ウェビナーとは、プログラミングなどのテーマについて、web上でセミナーを受けられるというもの。有名なものだとCousera, Udemy, Khan Academyなどがある。技術書を購入するのと大して変わらない値段で、動画を見ながらハンズオン形式で学んでいけるのが良かった。理解が不足している部分については一時停止したり繰り返し見たりできる。これ以外にもAndroidのコースとか、いくつか買った。

bscycle.co.jp

今年買った物の中で一番良かったのは結局これ。自分は毎朝子供を保育園に連れて行っているのだが、電動になって本当に楽になった。今では子の送迎に電動アシストのない自転車は考えられない。よく言われる心と体が繋がっているというのは本当で、毎朝の重労働が軽減されて心のゆとりが生まれた。 多少のお金で解決できることは、全部その方向でやっていきたい。

fastlane matchでCertificateを更新したProvisioning Profileを作る

Apple Developer ProgramからいつものYour iOS Distribution will expire in 30 daysというメールが来た。fastlane matchでProvisioning Profileを一から作ったことがなかったので、その時やったことのメモ。

やること

  1. Ceritificates を作り直す
  2. 新しいCertificates に紐づくProvisioning Profileを作る

Certificates を作り直す

  1. Apple Developer Programにログインする
    • Account -> Certificates, IDs & Profilesを選択
  2. Production で絞り込み
  3. 新規Certificatesの作成

f:id:enmtknt:20171227171649p:plain

新しいCertificates に紐づくProvisioning Profileを作る

現在のプロジェクトではfastlane match を使ってProvisioning Profileを管理しているので、fastlaneのコマンドからProvisioning Profileを更新する。 fastlane matchに関する説明は以下のリンクが詳しい。

このメモでは新しいCertificates に紐づくProvisioning Profileを作るためのコマンドだけを説明する。

1. 既存のProvisioning Profileを削除する

任意のアプリのリポジトリに移動し、以下のコマンドを実行する。なおnuke はアプリ毎にProvisioning Profileを削除することはできず、アカウントに紐づく全ての AppStore, AdHocのProvisioning Profileが削除される。

$ bundle exec fastlane match nuke distribution

2. Provisioning Profileを作り直す

リポジトリmatch を使用してProvisioning Profileを作り直す。この時Apple Developer Centerに有効なProvisioning Profileが存在しないため、自動的に最新のCertificateを含んだProvisioning Profileが作られる。

$ bundle exec fastlane match