2021年の振り返り
ブログタイトル変えました。なんとなく、社のSlackの分報のチャンネル名と同じやつにした。
というわけで、2021年をざっくり振り返ります。
引っ越し
社会人になるタイミングで、大学入学時以来6年ぶりの引っ越しをしました。
修論を提出してから、入社を控えたクックパッド株式会社で学生バイト追い込みタスクをやっていたわけですが、この頃に降ってきたのがオフィス移転の話でした。
もともと都内にいた私は結構早い段階から移転前の恵比寿での家を仮押さえしていて、移転の話が出た数日後に契約予定という状態だったので、局所的なショックは割と大きかったです。
ただ、家賃補助のない恵比寿にそのまま住むメリットはないので、仮押さえを破棄して新たな引っ越し先を探し始めました。
家賃補助や引っ越し手当が出るオフィス近くに住むかどうか非常に悩みましたが、大学6年間を都心部で過ごし、仲が良い友達やコミュニティ、通っていた病院・美容院などが都内に在る中で、横浜に引っ越すという踏ん切りがどうしてもつかなかった結果、会社からの各種補助金を捨てて神奈川と東京の境界らへんを新しい居住地として選択。(住所的には神奈川)
最初はいろいろ思うところもありましたが、今住んでるところからみなとみらいオフィスへの通勤時間もそこまで長くないし、家自体は小ぶりだけど犬と暮らせる綺麗なところだし、周りに良い感じの飲み屋やお店も多いので、なんだかんだで気に入っています。
仕事
いる会社は学生時代から変わってないのですが、雇用形態が変わり正社員になるタイミングで基盤系の部署からクックパッドマートというサービス開発の部署の配属に変わりました。
学生バイト時代はエンジニア向けの課題解決やリファクタリングがただひたすらに楽しくて、引き続きそういう仕事がしたいという思いが強かったので、配属当初は口開くと文句ばっかり言ってた覚えがあります。
しかしながら、どんどん施策を回してサービスを成長させていかなければならない中で、スピードも品質も落とさずに開発していくにはどうしたら良いかという課題にぶつかって、MVPで基盤改善を施してみたり、機能開発の合間にちょっとしたリファクタリングを入れ込んでみたりなど、事業に合わせた基盤整備の在り方みたいなものを考えるようになりました。
最近は、上記のような基盤改善を考えるところから、それを活かして自分が実際に各施策の実装をするところまで全部できるというのが楽しいと思えるようになったし、なんだかんだ今の仕事をエンジョイできてるなと感じています。
対外的な話だと、iOSDC のレギュラートークでの登壇や雑誌への寄稿など、初めてのことをいろいろ経験できました。 来年以降も継続的に外向けのアウトプットを続けていきたい所存です。
生活
私生活に関しては、特に下半期に入ったくらいから本当に心身共に調子が悪くて、散々周りの人に迷惑・心配をかけてしまいました。
とりわけ自力で眠れなくなってしまったのが辛くて、生活リズムも崩れ、もともと持っていた偏頭痛も目に見えて悪化してさらに薬が要るみたいな悪循環を繰り返してました。 コアタイムなしフルフレックスの今の会社じゃなかったら出勤することすら出来ていなかったと思います。
と、何も知らない人にまた要らぬ心配をかけるような記述をしてしまいましたが、12月に入ったあたりからは徐々に体調やメンタルが回復して、今は自然によく眠れています。最近は同僚から突然元気だねって言われるくらいにめちゃくちゃ元気です。
2022年は、早寝早起きや運動、食事をちゃんと摂るとか、当たり前と思われるかもしれないんですが、その当たり前をちゃんと重ねながら、心身ともに恒常的に健康でいられるよう努めたいと思ってます。
趣味
まず今年プレイしたゲームの振り返りをします。
全部タイトルをリストアップはしないけど、年跨いだやつも含めて17本プレイしてました。 時期によってプレイしてるペースはバラバラで、月に3本とか消化してた時もあったけど、発売延期とかの影響で一本もゲーム買わなかった月もあった。
薄桜鬼OVAのイベントで声優陣にまみえた影響で気持ちになって無印薄桜鬼をやりなおしてたり、PS Vitaを譲ってもらって懐かしきうたプリMusic 3を狂ったようにやってた時期もあったので、なんだかんだ1年よくゲームやってたなあと思います。
今年プレイした中で圧倒的にいちばん面白かったのは、オトメイトの新作タイトルだった終遠のヴィルシュでした。
短命な国民や次々に巻き起こる凄惨な事件、死神と呼ばれ忌み嫌われる主人公などなど、内容がとにかく全てダークな上、一周しただけだと絶対にtrueエンド(このタイトルでは救済エンドと呼ぶ)に辿り着けないという絶望設定ぶり。
なんだけど、最後はめちゃくちゃ綺麗に終わるんです。
死神と呼ばれた主人公が何故不幸を呼び寄せるのか、この舞台となる国の人々が何故短命なのかなどなど出てきた謎はほぼ全部最終ルートで割と化学的に解明されて、且つ最後は全員幸せになれるという王道シナリオ。
最初から目に見えていた展開ではあるんだけど、そこに至るまでの絶望エンド回収が辛すぎて喜びひとしおという感じでした。まじでめちゃくちゃ泣いた。
偏見持たず、男女問わずにやってほしい名作です。お正月に時間在る方は是非。
ちなみにこれプレイすると副次的に花言葉とか植物の生態に詳しくなります。
このタイトルと私の最推しのCollar×Maliceというタイトルが一緒に出る物理イベントが2月にあって何がなんでも行きたいんんですが、既にファンクラブ先行に2回落ちてて厳しみを感じている😇
一般抽選販売までに日々徳を積んでおきます。
あと、2022年は今年おざなりになってしまってた趣味開発をもう少し充実させたいと思ってます。
技術的にはサーバーサイドSwiftってやつに手を出したいのと、完全に手段が目的になってるけど個人でサービス開発というのをちゃんとやっていきたい気持ちがある… 何を作るかは考え中です。
おわりに
総括すると2021年は正直心休まらない激動の1年でした。長かった学生生活が終わったのも今年だったし、それはそうという感じもするんですが。
自分の体感としては、最終的には雨降って地固まったという感じで、憂い無く2021年を終えられそうです。
ぎりぎりになってしまいましたが、今年1年仲良くしてくださった皆さん、本当にありがとうございました。
来たる2022年が、素敵な1年でありますように。来年もどうぞよろしくお願いします。
WEB+DB PRESS Vol.126「iOS 15開発最前線」特集に寄稿しました
ご無沙汰しております、あおいです。
明日、2021年12月24日発売のWEB+DB PRESS Vol.126の、iOS 15特集に寄稿させて頂いたので、宣伝します。
概要
本特集は、「iOS 15開発最前線」と題して、WWDC21にてAppleが発表したiOSやSwiftについてのさまざまなアップデートについて、全7章に渡って解説しています。
私は、第5章「通知管理の新機能」の執筆を担当しました。
iOS 15から新しく導入された時刻指定要約や集中モードといった通知の自動管理や、ほかの作業をしているユーザーの意識に対して通知でどれくらい介入するかを示すInterruption level
の導入により、タイミングや優先度をより考慮して通知を配信する必要が生じてきました。
この章では、この通知関連のアップデートの概要と、開発者がそれらにどのように対応するべきかについて解説しています。 開発者に限らず、サービスのプッシュ通知を設計するビジネス側の方にも把握してもらいたい内容をまとめているので、是非お手にとってご覧ください。
執筆よもやま
このような執筆の経験は今回が初めてだったので、編集部の皆様から頂いた校正は何れも非常に学びになりました。
また、今回はiOSDC JAPAN 2021の登壇者・寄稿者の中から集められたメンバーでの執筆だったので、普段業務では関わりのない方々から自分の文章に対するレビューを貰えたのも、とても新鮮で良い体験でした。
上記の様なメンバーだった故、iOSDC 直前の時期は皆資料作りに追われながら執筆していたのもまた良い思い出です。
謝辞
編集長の稲尾さんはじめ編集部の皆様、一緒に執筆してくださった皆様、機会を作ってくださった iOSDC 実行委員長の長谷川さん、此度は本当にありがとうございました!
おわりに
改めて、2021年12月24日発売 WEB+DB PRESS Vol.126 をよろしくお願い致します!
電子書籍版での販売もありますので、併せてご検討いただけますと幸いです。
iOSDC 2021で登壇してきました
こんにちは。あおいです。
今年もiOSDCに参加してきました。
去年のオンライン開催のときは受動的な関わり方しかできなくてブログすら書いていなかったのですが、今年は初めてスピーカーとして参加したので、#iwillblog
させていただきます。
レギュラートーク登壇
「機能ごとに動作するミニアプリでプレビューサイクルを爆速にした話」というタイトルで40分枠のレギュラートークで登壇してきました。
今年は@giginetさんの牽引により社内のiOSエンジニアみんなでCfPを出すぞ!といった動きがあり、それに乗っかって2つレギュラートークを応募してみたという次第だったのですが、正直出したときは採択されるとは努々思ってなかった…
内容は、社内で基盤部署にいた時代に整備していた大規模アプリの動作確認用ミニアプリに関する話です。
過去にクックパッドの技術ブログでも紹介したことがあったのですが、その内容をより詳細に掘り下げたものになっています。
以下のマルチモジュール化に関するセッションと併せてご覧いただけると、今回の発表で話した内容をより実践的に利用できるかと思います。
だいぶ社内事例に寄った話だったのでどのくらいの人に刺さるかと不安だったのですが、思った以上にTwitterやDiscordで前向きな反響が見られてとても嬉しかったです。
今回の発表は、様々な所から得られた技術知見をもとに社内でいろんな人が実際に取り組んでいたことを代表してまとめて話した、という感じだったので、OSSや別の場での発表という形で知見を提供してくださっていた方々や、資料作成等でお世話になった同僚の皆さんには感謝してもしきれません…🙏
来年以降、もう少し汎用的でオリジナリティある技術知見の発信もやっていきたい。
印象に残ったセッション
みたかったセッションかぶりまくってたので未だ全然見れてないのですが、現段階で見たセッションの中で特に良かったものをいくつかピックアップして感想を書きます。
ランタイムデバッグのススメ
ランタイムデバッグ=実機テストをどうやって運用・活用するかという話です。
Twitterでも言ってたんですが、事業にとって施策を回すのが最優先な中で、QA担当者からもらう定性的なフィードバックを活かしていくというのは非常に難しいことだと感じます。
とはいえ、ベータテストの作業自体には担当者がリリース毎にかなりの時間を割いてくれているので、そのへんのコストを少しでも無駄にしないようにQA全体を改善したいなーと考えてた自分に非常に刺さる内容でした。
自分が発表してたミニアプリはあくまで開発者の動作確認を目的としていましたが、応用の仕方次第で紹介頂いたDebugMenuのような活用方法もできそう、という気づきにもなりました。
元ゲーム開発者が贈る描画パフォーマンス改善
これは先程のセッションの言葉を少し借りると、いわゆる「なんか重い」「なんかザラつく」を実際どうやって改善するかというお話です。
Viewのレンダリングに関する知識なんてたかが知れている私でも理解できるくらいにとにかくわかりやすかった!
私が平生開発してるアプリもよくスクロールがカクつくので、こちらを参考に是非改善したいと思いました。
トーク全体のオチも面白いです。
async/awaitやactorでiOSアプリ開発がどう変わるか Before&Afterの具体例で学ぶ
Swift 5.5から導入されるasync/awaitやactorなどの並行処理関連の新機能について、具体例を題材に解説されているセッションです。
一つ一つの事例について、Swift 5.5以前のコードとその問題点・今後どう書けけるようになるかとそのメリットが対比されながら丁寧に解説されていて、まだSwift Concurrencyエアプな自分にとっては今後のキャッチアップの足がかりにしたい内容でした。
Ask the speakerで普段のわいわいswiftcみたいに色々コードを動かしながらわいわいしてたのも良かった。
おわりに
今まで参加者という形でしか関わってこなかったiOSDCでしたが、スピーカーとして参加できたことで例年よりもずっと楽しむことができたように思います。 来年も引き続き登壇できるように今後もいろいろな知見を溜めていきたい、というモチベーションにも繋がりました。
オンラインではありましたが、年に一度のお祭りの場でiOS界隈の面々とコミュニケーションできたのもとてもよかったです。 交流してくださった皆さん、発表にコメント等くださった皆さんありがとうございました。
次回こそ、またオフラインでも開催できるような平和な世の中になっていますように。
また来年もよろしくお願いします👋
2020年を振り返る
今年の始めにこんな記事を書いていました。
2020年もまもなく終わるということで、どれくらいやりたかったことをできたか振り返ってみようと思います。
さすがにひとつひとつ厳密に見てコメントしていくのは骨が折れるので、分類ごとにまとめて今年の感想を書いてみました。
開発
開発面でやりたかったことたち
今年は技術的にはOSS関連のアウトプットをメインの目標として掲げていました。
成果としては、やったかやってないかでいうとやったんだけど、貢献と呼べるかどうかというと微妙、という感じ。
一応自分でつくってみたものはこちら。 完全に自己満だったのでとくに宣伝もしてないし、いずれもテストとかまともに書けていないのでまだまだ改善余地あり。
仕事中に見つけた課題に対してわりと大きめのPR投げたりもしたのですが、まだレビューされていないのでOSSの難しさを痛感した😇
PublicリポジトリへのPR自体は7件だしてて、ドキュメント修正とかの細かいものはちょこちょこマージされたりもしましたが、総括するとOSS入門という年だったかなと思います。
来年は自分の周りで実際に困りが発生してることを解決できるような修正・改善をして、文字通り多くの開発者に貢献できるようなコントリビューターを目指したいです。
技術書に関しては相変わらず買って積んだ本がめちゃ多かったですね。(そのくせめちゃくちゃ買う)
去年から読んでたコンパイラの本も結局まだ全部は読み切れてないけど、リアルタイムで参加できなかったMinSwift WorkShopの内容を自分で再現したときにも結構辞書的に参考になったのでたぶん全吸収するとかなり身になる本だと思われる…
来年は今ある積み読消化するまで基本新しい本買わないようにします。
個人アプリは一個だけだしました。チュートリアル兼ねて全部SwiftUIで作ったやつ。
apps.apple.comツールもアプリも作って満足してそのまま放置してしまいがちなのなんとかしたいです。
仕事
仕事面でやりたかったことたち
この1年ずっと内定先であるCookpadのモバイル基盤部でアルバイトしてたのですが、アルバイトという立場関係なくいろんな経験をさせてもらえて、本当に感謝しかありません。
この春からは実際に正社員として働き始めるわけですが、この1年やってきたことをちゃんと活かして会社にこの恩を返せるようにがんばります。
去年は臆して聞けなかったことや公に言いにくかったことが自然に言えるようになって、仕事する上でのコミュニケーションには慣れてきたように思いますが、それによる緩みなのか、勢いで動いてしまうことが多かったのが今年の反省点です。(自覚も在るし周りからもよく言われた)
来年はもっと慎重に丁寧に、手戻りを減らすよう意識することを肝に銘じます…
学業
学業面でやりたかったことたち
コロナの影響で物理学会や出張が軒並みキャンセルになったり、研究室メンバーとの交流が皆無になったりしていろいろ苦しいM2の一年でした。
後期からはちょこちょこゼミを物理でやったりはしてましたが、1年通じて研究モチベの維持が難しかったなというのが正直な感想です。
ただ、外部に出す論文執筆と学会のスケジュールの兼ね合いでわりと余裕を持って修論初稿を出せたのは良かったかな。
あ、基本研究は家でやってたので研究室でゲームはしなかったぞ( ・´ー・`)
生活
生活面でやりたかったことたち
生活リズムとか健康面の目標に関しては、何も達成できてないどころか確実に悪化してました。
特に体動かさないせいか本当に毎日睡眠がうまくいかなくて、明け方まで寝れないとつぶやいては夕方におきたと表明する生活をしていた…
入眠が上手くいかない
— あおい (@aomathwift) August 31, 2020
おきた
— あおい (@aomathwift) December 27, 2020
(だいたいいつも近しいタイムゾーンで生きる人々からいいねが来る)
犬の散歩に行くようになったりFitBoxing2を始めたりして下期ごろから改善の努力はしていたけど、それでも不健康極まりないことは間違いなかったので、来年はとにかくよく寝て元気に生きたいです。皆さんも健康にはお気をつけください…
あと、モニターとかiPhoneとか、年始に買いたいといってたものは全部買ってたし、年始には想定外だったけど犬も飼い始めたので結構出費は多かった気がします。
でも愛犬の可愛さを考えるとそんな出費も痛くない…来年もバンバン写真あげるので皆さんうちの子愛でてください
経験・趣味
こういう旅行系の目標はまあコロナの影響で殆ど達成できませんでしたね。
その代わりゲームは例年以上にやった気がします。基本ゲームは一人で粛々とやるタイプだったけど年末は不特定のメンバーとめちゃくちゃAmongUs やったりもした。
あとは髪色は色々遊んだ1年でした。シャンプーとかのケア大変だったけど人生初全頭ブリーチもした。
普通に歩道歩いてたら、チャリ乗った知らないおじさんに「そんな不良みたいな頭してるくせに邪魔なとこ歩くんじゃねえ」って言われたんだけどどんな意味不明な言いがかりやねん
— あおい (@aomathwift) November 6, 2020
髪色派手にするとこういうこともある。
精神・対人
精神・対人面でやりたかったことたち
この辺のやりたいこと、抽象的すぎてできた・できなかったの判定が難しいものばかりだったので、気がついたことだけ振り返ってみます。
今年とりわけできなかったなあと思うのが、「人に流されない、自分の芯をもつ」ということ。
コロナ蔓延という情勢下で、周りがどんな行動をとっているかに常日頃惑わされていたし、仕事の上でも、自分の意見に自信が無くて言われたことをすべて呑んでいった結果手戻りが発生してしまうということが多々ありました。
自分の芯をもつことと他人の話を聞かないことはイコールじゃないはずなので、その辺弁えられる人間になりたいです。
あと、はじめましてをオンラインでするのは自分にとってはとにかくハードルが高かった。もっと人脈を広げる1年にしたかったけど、人見知り発揮してオンラインの交流の場にはなかなか飛び込めなかったなあと思います。
まとめ
2020年はコロナという不可抗力で色々出来ないことも多かったけど、逆に言うとコロナを言い訳に自分を甘やかした1年でもありました。
来年からはようやっと社会人。この時代にもいい加減適応して、のんべんくらりと生きるのではなく、自分が組織のため・他人のために何をすべきかを考えながら行動していきたいです。
こんな情勢下でも物理・論理問わず交流してくれた皆さんや、たくさんお世話になったCookpadの皆さん、今年1年本当にありがとうございました。
来年も、自分の周りの人々が健康で幸せでありますように。来たる2021年もどうぞよろしくお願いします。
SwiftPackageManagerでつまずいたこと
こんにちは。デスクワークで腰痛が悪化し続けているあおいです。
SwiftPackageManagerに関してつまずいたことがあったのですが、解決策書いてる記事が殆ど無かったのでメモしておきます。
SwiftPackageManager とは
SwiftPackageManager(以下SwiftPM)とは、Swiftのソースコードで構成されたパッケージを、依存関係の解決やバージョン管理をしつつ利用できるようにしてくれるパッケージ管理ツールです。
以前はコマンドラインからの実行のみ可能でしたが、Xcode11以降はXcodeに統合され、iOSアプリのプロジェクトでもSwiftPMのパッケージが利用できるようになりました。
つまずいたポイント
SwiftPMで作ったパッケージをコマンドラインから
$ swift test
でテストを実行すると以下のエラーが出ました。
'dispatchPrecondition(condition:)' is only available in macOS 10.12 or newer
Xcodeから実行したテストは通ってるし、実行してるPC自体のOSはとっくにmacOS10.12より新しいのにどういうことだろう…
となったので、オープンソースであるSwiftPMのソースコードの中身を詮索してみました。
すると以下の記述を発見。
特に指定しない場合、macOSのターゲットバージョンは勝手に10.10にされてしまうようですね。
ここで挙がったdispatchPrecondition(condition:)
のターゲットSDKはmacOS10.12以上なので、macOS10.10では動かんよということみたいです。
以下のオプションを足してターゲットを上書きすることで成功しました。
$ swift test -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.12"
対称のパッケージがmacOSをサポートしてるなら、Package.swift
のplatformにmacOSバージョンを指定してあげても成功します。
あ、ちなみに、iOS向けのライブラリとかで利用するときにplatformにiOSのみを指定しても、swiftコマンドによる実行は必然的にmacOS上でのビルドになります。
詰まるところmacOS向けでないものはswiftコマンドでのビルド・テストはする必要はないのかも。
それにしてもこの最低バージョンが強制的に指定されるのには何か理由があるのでしょうか…
せめてPackage.swiftにmacOS以外の設定がされてる場合はそもそもビルドされないの方が嬉しいかもしれません。
このあたり気になるのでもう少し実装みてみようかなと思います。
このへん詳しい方は是非教えて下さい🙏