文字っぽいの。

文字を書いています。写真も混ざります。

2020年に新しく始めたこと、諦めたこと。

新しく始めたこと

今年、30歳になりまして、区切りが良いので色々と新しいことを始めることにしました。正直、始めすぎました。

テックリード

昨年末ぐらいからテックリードというのをやっていて、新しい肩書が増え、仕事が増えました。まぁ本業のことはどうでもいいでしょう。

副業

「新しいことにチャレンジしたい!」となると、転職をして職を変える手もあるんですが、個人的には「なんで新しいチャレンジしたいだけなのに、転職なんてクソ面倒な事せなあかんねん。」と思っていました。あと、基本的に自分は飽き性なので、どうせ転職しても次の仕事も2年ぐらいで飽きてしまうはずです。

だったらもう個人事業主として開業して、面白そうなサービスやアプリを作っている会社さんを手伝ったほうが良いじゃんと思って副業をはじめました。 ありがたいことに、手伝いたいと思っていた会社さんと業務委託契約を結ぶことができ、楽しく働くことができています。

本業とは異なったことができるので楽しいです。また「自分、食いっぱぐれることは無さそうだな」という感覚を得られたのが特に良かったです。会社で働いていると「社内では役に立つけど、実は世間では無能なのでは……?」という不安に襲われることがあるのですが、それが解消されて心穏やかに暮らせています。

あと、単純に労働時間が増えるので収入が増えて嬉しい(税金から目をそらす)。

Podcast

よく弟と通話しながらゲームをしているんですが、「この会話を録音したら面白いのでは?」と思い、Podcastをはじめました。

弟とひたすら「これがいい」だの「あれがうまい」だのという話をしています。結構楽しくて地味に続いていますが、最近はGhost of Tsushimaの冥人奇譚で忙しいので、収録できてません。

個人アプリ開発

自分の中で「iOSアプリエンジニアを名乗っているのに、個人でiOSアプリをリリースしていないのはいかがなものか?」みたいなコンプレックスがずっとありました。もちろん他の人にそんなことは思って無くて、自分自身に対してだけです。

エンジニアだからといって、全員がOSS活動をして、本を書き、勉強会に積極的に参加し、アプリやツールをリリースしているわけでないですからね。インターネットを眺めていると、様々な人間の成果が融合されて架空の超人エンジニアが脳内に生まれてしまいがちです。

それはさておき、弊社には個人アプリ開発勢が結構居て、「いいなー、自分も個人アプリ開発者になりたい!」という気持ちが強くなってきたので、アプリを作ってリリースしました。

Memoliaという箇条書きでメモが書きやすいアプリです。実装からデザインまで自分一人でやりました。アプリの開発よりも、Appleへの審査提出周りの方が面倒でした。

使わない人は全然使わないし、使う人はめっちゃ使うアプリかと思いますが、無料なのでぜひ一度お試し下さい。現状、広告もなくて自分は1円も儲からないアプリとなっております。

あきらめたこと

色々始めるということは、なにかを諦めないといけません。1日は24時間ですからね。

丁寧な夕飯

COVID-19の影響でリモートワークになり、毎食自炊ができるようになりました。しかし、夕飯を作るというのは結構時間がかかるものです、買い出しに行って料理をして食べて片付ける。それだけで2時間ぐらいは吹き飛んでしまいます。

なかなかに時間がなくなってしまって困ったので、スーパーのサラダ、サラダチキン、お刺身を日によって違う味のものを買ってきて済ませるようにしました。

料理はもともと好きなので、丁寧な料理は土日に楽しむこととしました。

まとめ

2020年、全世界的に激動な1年となりましたが、個人的にも新しいことを色々と始めて激動な1年となりました。

めちゃくちゃ当然ですが、新しいことを複数一気に始めないほうが良いですね。やりたいことがたくさんあるのに、時間が全く足りなくなって、もやもやした日々を過ごすことになってしまいます。

今年は発散したので、来年は収束させる年にできると良いなぁと思っています。ずっと忙しすぎて記憶が何もねぇ。

SwiftUIで表示したModalをコードからdismissしたい

やりたいこと

f:id:FromAtom:20201107232000g:plain

いわゆる dismiss(animated:completion:) をしたい。

コード

struct ContentView: View {
    @State private var showModal = false

    var body: some View {
        Button("モーダルを開く") {
            showModal.toggle()
        }.sheet(isPresented: $showModal) {
            ModalView()
        }
    }
}

struct ModalView: View {
    @Environment(\.presentationMode) private var presentationMode

    var body: some View {
        Button("閉じる") {
            presentationMode.wrappedValue.dismiss()
        }
    }
}

カービィカフェ TOKYOに行ってきた。

f:id:FromAtom:20201102131619j:plain

ソラマチにあるカービィカフェ TOKYOに行ってきた。

店内の様子

店内に入ると、でっかいウィスピーウッズがいる。

f:id:FromAtom:20201102133610j:plain

ウィスピーウッズの根本には、所々にカービィの置物が設置されていて可愛かった。

f:id:FromAtom:20201102133622j:plainf:id:FromAtom:20201102143041j:plain

店内もおしゃれに可愛くカービィ要素で飾り付けてあって大変いい。

f:id:FromAtom:20201102144531j:plain

ちょこんとカービィがいる。

f:id:FromAtom:20201102142926j:plainf:id:FromAtom:20201102142933j:plain

完全予約制かつ飛び石連休の平日部分で行ったので、結構空いていた。

ご飯の様子

カービィバーガー&ミートパスタ 温野菜のせ』を食べた。こういったコラボカフェ系なご飯、スーベニア(お皿とかコースターとか)が主で食物は添え物になって味とか二の次なイメージだったけど、普通に美味しくて良かった。

f:id:FromAtom:20201102134121j:plain

パスタもアルデンテな感じだし、ハンバーガーのパティもペラペラしておらず「ハンバーグやん」って厚みで食べごたえがあった。

ワドルディがすやりしているオムライスも可愛い美味しかった。チーズの上にシートが載ってるタイプじゃないので、顔がフニャクチャにならなくて良い。

f:id:FromAtom:20201103172854j:plain

勢いでピザも頼んだ。このピザは生地がパリモチで、下手なデリバリーピザより格段に美味しい。おまけつきピザを頼むと、この木のプレートももらえるけど、家では使わなさそうだったのでやめておいた。

f:id:FromAtom:20201103172949j:plain

ドリンクたち。アートオレは滲んでしまうので、素早く写真を撮らないといけない。

f:id:FromAtom:20201102134048j:plainf:id:FromAtom:20201103180403j:plain

これも、カフェオレとして普通に美味しくてよかった。カービィカフェ第2章の時に、コーヒーがコンセプトだったのでその成果で美味しいのだと思う。

料理、すごい待たされるということもなく、普通の提供時間で出てくるし、追加注文も気軽にできてよかった。

グッズ

左下のお皿と右上のマグカップとコースターは、料理についてきたもの。

f:id:FromAtom:20201102191317j:plain

うっかり大量に散財してしまったけど、かわいいからいいや。

まとめ

ごはんも美味しかったし、グッズもいい感じのものが多くて満足した。超カービィファンというわけじゃないけれど、良いクリエイティブを見るとアガるので、良い体験ができた。

"dyld: Symbol not found: _OBJC_CLASS_$_RPSystemBroadcastPickerView" 対策

環境

  • Xcode 12.0.1
  • Apple Swift version 5.3 (swiftlang-1200.0.29.2 clang-1200.0.30.1)
  • iOS Deployment Target 12.0

状況

  • Deployment Targetを11.0から12.0にあげた
  • ビルドは通る
  • iOS 12系のシミュレータで起動するとアプリ起動時にクラッシュする
  • iOS 14系のシミュレータだと起動する
  • dyld: Symbol not found: _OBJC_CLASS_$_RPSystemBroadcastPickerView と表示される
  • RPSystemBroadcastPickerView はReplayKitに含まれるもの
  • RPSystemBroadcastPickerView を使っている箇所を全てコメントアウトするとクラッシュしない

対策

  • Generalタブを開く
  • Frameworks, Libraries, and Embedded ContentにReplayKitが無いなら追加する
    • Do No Embedにする
  • Build Phasesタブを開く
  • Link Binary With Librariesを開く
  • ReplayKitを "Optional" にする

Extensionもある場合は、同様の作業をExtension側でも行う。

SwiftPMでCrashlyticsを導入した場合のRun Script Phaseの書き方

環境

課題と解決

Firebase iOS SDKがSwiftPMにBeta対応しました。

このため、CrashlyticsをSwiftPMで導入することができるのですが、Crashlyticsの公式ドキュメントにあるように"Run Script Phase"で

${PODS_ROOT}/FirebaseCrashlytics/run

を実行する必要があります。しかし、このパス指定はCocoaPodsで導入した場合の書き方なので、SwiftPMでは使えません。

SwiftPMで導入した場合は、

${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run

と書きます。

参考

github.com

iOSDC Japan 2020に原稿2本を書きながら登壇してきました。

iOS関連技術をコアのテーマとした技術者のためのカンファレンス iOSDC Japanに今年も参加しました!今年はオンライン開催ということで、例年とは異なるiOSDCを楽しむことができました。

パンフレット原稿

今年はいつもの『登壇』枠に加えて『パンフレット原稿』というCfPがありました。このパンフレット原稿は、採択され入稿すると参加者全員に届くiOSDCのパンフレット内に掲載されます。

ありがたいことに2つも採択されたので、ひぃひぃ言いながら執筆しました。参加者の皆さんに届いたパンフレット内に次の2つの原稿が載っております。

こちらの原稿ですが、iOSDCに参加してない方も読めるようにZennでBook化しました。書くのが大変だったので有料にしてあります。内容はほぼ一緒なので、iOSDCに参加した方はパンフレットをご覧ください。

zenn.dev zenn.dev

登壇

ありがたいことに今年も採択していただき、3年連続で登壇することができました。

事前収録という形だったため、カンファレンス開催日よりだいぶ前に資料が完成している必要があり、ひぃひぃ言いながら資料作成をしました。間に合ってよかった。

当日発表を聞きに来てくださった皆様ありがとうございました!

デザインスポンサー

弊社でデザインスポンサーをしました。今年のiOSDCの公式ロゴや公式サイトは弊社製になっています。自分はディレクターとして関わりました。

inside.pixiv.blog inside.pixiv.blog

カンファレンス本番でも動画などの様々なところで公式サイトの要素が使われており、いい感じで大変良かったです。

あとこれは知見ですが、デザインスポンサーをする際は「仕事のような仕事じゃないような開発をしてくれるエンジニアをアサインする」点が最も難しいです。iOSエンジニアやデザイナーが片手間でWebサイトを組む方法もありますが、iOSDCはエンジニアが集まる祭典です。下手なWebサイトを作ってしまうと、カンファレンスと会社の評判が落ちてしまうのは言うまでもありません。

「クオリティが低いと困るが自社の収益には全く関係ない」という特殊タスクなので、交渉力みたいなものがあるとやりやすいと思いました。それかCTOみたいなめっちゃ偉い人がGoを出すと動きやすいかもですね。

まとめ

原稿2本、計12ページの執筆が結構大変でした。それが終わったと思ったらすぐに登壇準備……。8月の記憶がありません。来年はのんびり参加しよう(去年も言ってた)。

初めてのオンライン開催でしたが、おうちでのんびり観れるのもなかなか便利で良かったです。ただ懇親会やスピーカーディナーなどが無いのは寂しいものですね。しかたないのですが。

それでは皆様、また来年のiOSDCでお会いしましょう。

ディスプレイの上につけられるライトを買った。

f:id:FromAtom:20200922161153p:plain

壁に向かって座る形で机があるので、シーリングライトの光を背負う形になってしまい、手元が暗くて困っていました。

あと、いろんなスタンドライトを調べてみたけど、クリップで留めるか机に置くかしかなくて、結構邪魔になりそうなので躊躇してたんですが、ちょうどいい感じに「これやん」って商品があったので買ってみました。

良かった点

  • 最大輝度にすると結構明るい
    • 明るいのに案外ディスプレイ全体が光り輝かない
    • 全く反射しないわけではない
    • アンチグレアタイプのディスプレイだからってのも大きそう
  • USB給電なので、ディスプレイ背面のUSBポートから給電できる
    • 机上に無駄な配線が発生しない
  • コンセントいらないのやっぱべんり
  • 色温度が5000k、4000k、2900kの3種類ある
    • 昼と夜で変えたり、仕事と遊びで変えたりできて便利

微妙だった点

  • ディスプレイ上部はやっぱり光る
    • 光源に近いから仕方ない
    • ディスプレイに一切反射せずってわけにはいかない
  • Webカメラが端においやられる
    • Webカメラのクリップによっては、このライト上にくっつけられるかも?

という感じ。思ったよりもちゃんと明るくなったので、満足しています。