DIG IT

エンジニア、iOS、個人開発、日々考えていること etc

手強いエラーの紐解き方

みなさんは仕事や趣味でコードを書いている時に、予想外のところでエラーが発生して、調べてもなかなか解決出来なかったり、長時間エラーと向き合った経験はあるでしょうか。

おそらくある程度の期間コードを書いたことがあるエンジニアなら、誰もが経験していることだと思います。

そこで今回は、私がエラーにぶつかった時に行っているアプローチや、考えていることを整理してみました。

エラーに悩む(特に経験の浅い)エンジニアにとって、何かしらヒントになればうれしいです。

1. 観察する

エラーが発生した時に、まずは事象をしっかり観察することはとても大事です。エラーメッセージをよく見たら解決策が書いてあるケースは非常に多いです。

エラーメッセージやエラーを調べて出てきた記事を、とにかく読み飛ばさずに丁寧に何度も読むというのは、初歩的ですが効果的なアプローチです。

エラーメッセージを見て調べてみてもすぐに解決できないケースもあります。そういった場合にも、やはり細かく観察した方が良いです。

「どこを変えたらエラーになるか」「ここの実装が怪しそう」「問題なく動いているコードとの違いはどこか」等、色々な視点からエラーにアプローチして分析していくとエラーは解決に近づきます。

この「色々な視点」というのが非常に重要なポイントで、私の経験上、他の人があまり疑わない視点からアプローチできるエンジニアはエラーの解決も上手です。

こういった視点は経験と共に培われていく側面があったり、時には他のエンジニアの視点が必要になる場面もありますが、自らが良い視点を持ってるというのは強力な武器になるので、意識的に伸ばしていくべきスキルだと思います。

2. 範囲を絞る

エラーの原因がはっきり分からない場合は、範囲を絞っていくアプローチが有効です。

1つ具体例を挙げてみます。Aという画面からBという画面に遷移する際にエラーが発生していたとします。

エラーメッセージを見て解決できれば良いのですが、残念ながら原因箇所の特定がすぐに出来なかったとします。

この時に行うアプローチとして有効なのは、「エラーの原因がAの画面にあるのかBの画面にあるのか(あるいはそのどちらでもないのか)」を判断することです。

例えば、このように遷移先の画面をCに変えてみてエラーが発生しなくなれば、「おそらくBという画面に何らかの原因がある可能性が高い」という事が分かります。

特定の画面に原因があることが分かれば、その画面の中で同じことを繰り返して、さらに原因として疑うべき場所を絞り込んでいきます。

あるいは、下記の様に「Aの画面もBの画面も変えてみたけどエラーが解消されなかった」ということもあると思います。こういう時は画面自体というよりは、画面遷移をさせるロジックであったりより大きな部分にエラーの原因が潜んでいる可能性を疑うことが出来ます。

この様に部分的に値を変更して動作を観察していくと、エラーの原因として疑うべき範囲を絞り込んでいくことが出来て、一歩ずつ前進します。

3. 最初に戻ってみる

エラーに長時間向き合っていると、頭が疲れてきたりエラーを解消する為に色々設定を変更した結果、どのような状態になっているかよく分からなくなることがあります。

こういう状態に陥った時は、思い切ってエラーが起きる前のステップまで戻ってみるのも1つの方法です。(少し時間を置いてみるのも良いかもしれません。)

イメージとしては、複雑に絡まった糸を一度解いて最初から作り直してみる様な感じです。

私は環境構築を行なった際にエラーが大量に発生したことがあります。慣れない作業と解決できないエラーでかなり苦しみましたが、結果的にはこのアプローチで無事解決出来ました。特に長期間悩んでいる場合にはこの方法はオススメです。

また、この様なアプローチを取りやすくする為にも、細かくコミットしたり作業をやり直しやすいセーブポイントをなるべく多く作っておくのも大事です。

「ここまでは問題なく実装できている」というポイントを作っておくことは、上述したエラーの「範囲を絞る」ことにも繋がります。

4. 検索ワードを工夫する

インターネットは沢山のエンジニアたちが残してくれた知見の宝庫です。ただしそこに正しくアクセス出来なければ問題を解決することは出来ません。

個人的な意見ですが、ChatGPTをはじめとしたAIを活用する時代になってもそれは変わらないと思います。むしろAIの登場によってますます「正しく問いを立てる力」は重要になっていると思っています。

エラー解決に際しても、より効果的に欲しい情報に辿り着くアプローチをするべきです。検索ワードを少し工夫するだけでも手に入る情報は大きく変わります。

特にエラーの解消でよく使われる英単語を知っておくと、いざという時役に立ちます。

qiita.com

5. 粘り強く取り組む

急に根性論みたいな感じになりますが、これまでのエンジニアとしての経験を踏まえると、エラーに粘り強く向き合うのは重要だなと思います。

諦めずに色々なアプローチを試したり、脳みそをフル回転させて考えるからこそ解決する問題もあります。また、そういった創意工夫の中にエンジニアとしての成長もあるのだと思います。

難しいエラーにぶつかった場合は、自分の殻を破るチャンスと捉えてみると少し気持ちが楽になるかもしれません。結果的に上手く解決出来なかったとしても、無駄な経験にはなりません。

エラーの解決に限らずですが、すぐに解決策が浮かばなかったり、明確な正解が無い中で判断が必要な問題にぶつかることは度々あります。

そういった場合にも、やはり粘り強く考えて脳みそに汗をかく意識は大事になると思います。

さいごに

私がエラーを解決する時に考えていることを偉そうに書いてみましたが、私もエラーに悩むことはよくありますし、その度に「もっと上手に解消できたらな」と思うことがあります。それでも自力でエラーを解消できた時は達成感がありますし、自信にもなります。

これを読んでくださった方にとって、何か1つでもヒントになる内容があればとてもうれしいです。最後まで読んでくださりありがとうございます。

 

作業スピードを2倍にするコツ

みなさんは作業スピードを向上させたいと思ったことはありますか?

日々タスクに追われる現代人にとって、時間をどのように使うかは最重要課題の一つではないでしょうか。

今回は、私が作業を効率的にこなす為に工夫している点について書きます。

1つ1つはとても小さなことですが、組み合わせるとそれなりに作業スピードが上がると思います。特に、アウトプットを頑張りたいと思っている方にはおすすめできる内容です。

多少エンジニア寄りの内容にはなっていますが、エンジニア以外の方でも実践できる方法なので、お気軽に読んでみてください!

重要なこと

以下の2点はとても重要なことなので、最初に書いておきます。

  1. 手を動かす物理的なスピードについては、今回の話とはあまり関係がありません。
  2. あくまで「慣れている作業を早くこなす方法」として、私が意識していることを書きます。慣れていない作業や、作業の特性上早くやらない方が良い作業においては、これらの方法があてはまらない場合もあります。

脳のキャパを無駄に使わない

脳のキャパシティーを可能な限り空けておく事は、作業の効率化に繋がります。色々なことが頭の中にあると、1つの作業に集中できなくなってしまいます。

具体的には、私は以下の方法を実践しています。

  • 5分で終わることはすぐ終わらせる
  • 極力即レスする(プライベートにおいても)
  • やりたいことはすぐやる
  • 欲しいものはすぐ買う(すぐ買えない場合はメモしておく)
  • ブラウザのタブは溜めない
  • アプリの通知も溜めない
  • 同時に起動するアプリも最小限にする
  • なるべく作業を仕掛かり中の状態にしない(終わらない場合は別タスクに分ける)

意識的にマルチタスクにならない様にしつつ、どうしてもすぐ出来ないことに関しては、メモ等を活用して外部に記録しています。

そうする事で、今考える必要がないことを頭の中から外に出しておくことが出来ます。

脳のメモリはなるべく解放しておくと作業が捗ります。

大きい作業は小さく分割して考える

大きい作業の場合は、あらかじめ小さく分解しておくと、「次はどうするんだっけ?」という事を毎回考える必要が無くなります。

無駄な思考を減らしつつ、解像度が上がって目の前の作業に集中できます。

私の場合は、大きい作業を行う時は作業を細かく分解してメモアプリに箇条書きして、分解した小さな作業を1つずつ進めています。

例えば、アプリの開発で「新しい画面を作る」作業を行う場合には、以下の様に分解します。

  • 全体の設計を考える
  • 設計を元に必要な作業を洗い出す
  • まずは大まかに画面を作成する
  • 画面のレイアウトを整える
  • 画面を開く実装をする
  • ログを入れる
  • テストを書く
  • レビューしてもらう

作業を分解すると、目の前のやるべき作業が明確になり、進捗度も可視化しやすくなります。

待ち時間を上手く活用する

ちょっとした待ち時間で細かいタスクを終わらせてしまうのは良い方法です。

例えば、私はエンジニアなので、書いたコードのビルドや起動の待ち時間にチャットやメールを確認・返信したりします。移動時間にブログを書いたり、新しいアイデアを書き留めるのもオススメです。作業を効率的にこなす上で重要なのは、事前にしっかりと考えることです。この考える作業はちょっとした待ち時間で出来ます。

次のアクションを常に考える

何事においても事前の準備は重要です。

例えば、明日参加する会議について、事前に自分の中でアイデアや思考を整理したり疑問点を洗い出しておけば、当日はスムーズに会議が進み、予定時間よりも早く終わるかもしれません。(早く終わらせることが目的になってはいけませんが、会議は準備しておくとスムーズに進むことが多いです。)

あるいは来週行う開発タスクの大まかな設計について、ふとした時間に考えておけば、多少スムーズに進められるかもしれません。

私は仕事以外の時間にも、仕事のことを考えることがあります。ここら辺はその人の考え方次第だと思うので、自分に合ったやり方を見つけるのが良いと思いますが、その時になってはじめて考えるのを止めると効率的に作業を進められる様になります。

常に予測して先回りすることが、作業を早く進めるコツかもしれません。

道具にこだわる

道具にこだわることでも作業効率は結構変わってきます。

例えばマルチモニターやウルトラワイドモニターを活用すれば、作業スペースが広がって効率が上がるかもしれません。あるいは、使い慣れたツールを使うことでも作業を効率良く進められるはずです。

私は仕事で使う道具にこだわる様にしていて、それなりにお金も掛けています。

これらは作業効率に良い影響を与えてくれるだけでなく、身体への負担を減らしたり快適に作業できる環境作りにも寄与します。

時間をずらす

時間を上手に使う上で私が強く意識しているのは、「みんながやっている時にやらない」ことです。とにかく時間をずらして使うことを意識しています。

例えば、朝早い時間から作業を進めたり、夜遅くに開発作業を進めることがあります。そうすることでチャット等を気にせず作業を進められたり、リラックスした状態で集中することが出来ます。

このリラックスした状態がスムーズに作業を進める上では重要です。

(ただ、これらはそれぞれの組織で決められたルールの中でやるべきことなので、その点には注意が必要です。)

休暇についても、可能な限り他の人が休まないタイミングで休み、他の人が休んでいる時は働く様にしています。例えば年末年始はあまり休まず、個人開発をがっつり進めたりしますが、平日に休みをとって一日中遊んだりします。

また、お金を払うことで時間短縮になるものにも積極的に投資します。例えば交通手段もなるべく所要時間が短いものを選びますし、DeepL Proを使って英語の文章をより短時間で読める様にしています。(英語がスラスラ読めるのが一番良いのですが、残念ながらそのスキルは今の私にはありません。)

時間は全員に平等に与えられていますが、その使い方は工夫次第です。

テンプレートを活用する・自動化する

自分が普段行っている作業を振り返ってみると、意外と「繰り返しの作業」が多いことに気が付くのではないでしょうか。

定例作業などは、テンプレートを用意したり自動化することでより楽にこなせる状態にしておくと良いです。

エンジニアだったら、ファイルのテンプレートをいくつか用意しておいたり、コードスニペットを使うと作業効率はかなり上がります。

また私の場合は、自分が過去に躓いた事象やよく見る記事をメモに残しておき、すぐに取り出せる様にもしています。「あれどうやるんだっけ?」と思い出す時間が短くなり、作業スピードが向上します。

一度経験したことを素早く再現できる様になれば、作業スピードは上がります。

しっかり休む

集中しているとつい長時間作業しがちですが、しっかり休憩すると作業効率は上がります。睡眠は特に大事ですね。私の場合は短時間で集中して作業を進めて、休む時はしっかり休む様に意識しています。

さいごに

私が書いたのは一つのやり方なので、気になった部分を試してもらいつつ、「自分には合わないな」と思った部分はそれぞれに合ったやり方を見つけるのが良いと思います。

この記事を読んだ方が、少しでも作業スピードを向上させることが出来ていれば幸いです。最後まで読んでいただきありがとうございました。

SwiftUIで個人開発アプリをリリースしました

先日、SwiftUIで作ったiOSアプリをリリースしました。

昨年の年末くらいからSwiftUIを学び始めて、週末に少しずつ開発していたので、無事リリースできて良かったです。

今回はSwiftUIでの個人開発についての知見や感じたことをまとめてみます。これからSwiftUIでアプリを作ってみたい方の参考になればうれしいです。

リリースしたアプリの概要

まずは簡単に僕が作ったアプリの紹介です。

Astrum

Astrum

  • Akihiro Ihara
  • ライフスタイル
  • 無料

apps.apple.com

“Astrum“は、一言で言うならデスク周りのガジェットを管理するアプリです。僕はガジェットを集めるのが好きなので、持っているガジェットや欲しいガジェットを管理できるアプリが欲しいと思って作りました。

作ったきっかけ

SwiftUIについて学びたいと思ったことがきっかけです。僕はチュートリアルや本でサンプルコードを書くよりも実際に好きなものを作る方が好きなので、このやり方を選びました。やりたいことありきで技術を学ぶ方が、より実践的で幅広く知識を吸収できると思っています。

SwiftUIで作ってみてどうだった?

SwiftUIについてはほとんど何も知らない状態で作り始めたので、「SwiftUI難しいな〜」と思いながら開発を進めていました。とはいえ、便利なサービスや技術記事が溢れているので、開発に行き詰まることは少なかったです。レイアウトについてはUIKitよりもシンプルに書けて楽しかったです。(でもやっぱりSwiftUIは難しい。)

SwiftUIのここが難しい

SwiftUIはモディファイアを色々知っていると、実装の幅が広がって開発も捗るのですが、僕の場合はモディファイアの使い方に慣れるまで時間が掛かりました。

tech.amefure.com

モディファイアは書く場所や順番によっても設定が反映されない場合があるので、書き方に慣れるまでは少し難しかったです。下記はその一例です。(alertモディファイアはtoolBarの中に書いてしまうと表示されない...。)

www.choge-blog.com

モディファイアは既に沢山ありますし、iOS16で新たに登場したものもあるのでキャッチアップが大変ですが、少しずつ覚えて快適に開発できる様になりたいです。探しているものが見つかるととてもうれしくなります。

また僕が今回作ったアプリは小さなアプリでコードも複雑ではないですが、アプリが大きくなってきたら、どこで何を管理するか等、しっかり設計を考えないとコードが複雑になりそうだなと思いました。(特に状態管理の部分)

モディファイアやコンポーネントをどこまで共通化するかについても、僕の場合はかなり悩みました。繰り返し使うタイプのものは、なるべくカスタムモディファイアを作っておいてシンプルに使える様にしたいですね。

UIKitを学ばずにSwiftUIでアプリを作り始めるのはどうか?

あくまで個人的な意見ですが、本格的にアプリ開発をしたいならUIKitの知識はあった方が何かとスムーズに開発できると思います。特にiOS14などをサポートしたアプリを作る場合は、UIKitで作らないといけない場面もまだまだあるので、UIKitについてある程度知識があった方が良いと思います。SwiftUIのレイアウトはシンプルに実装できて楽しいので、iOSアプリ開発を始める第一歩として触ってみるのは面白いと思います。なので、何を目指してアプリを作るかにもよるかもしれませんね。

その他の工夫したポイント

今回のアプリは特にデザインにこだわりました。開発のモチベーションを維持する上で、デザインにこだわることは重要だと思います。自分が好きなデザインにすると、毎日アプリを見たり触るのが楽しくなり、それが個人開発の継続に繋がります。

デザインに使ったツール

アプリアイコンやスクリーンショットにはKeynoteを使用しました。グラデーションもいくつか使っていますが、かなり細かく設定できてサイズ指定も簡単なので、デザインツールに慣れていない方にもオススメです。

SF Symbolsも上手に使えばそれっぽいデザインになります。

qiita.com

SF Symbolsを使った例

さいごに

色々書いてみましたが、実際にやってみるのが一番早くてSwiftUIの理解につながると思います。SwiftUIを学び始めたばかりでまだまだ分からないことだらけですが、この記事がSwiftUIを学びたいと思っている方の参考になれば幸いです。

Twitter Blueってどんな感じ?

はじめに

Twitter Blue、みなさんは使っていますか?

ついに日本でも2023年の1月11日にTwitter Blueが解禁されました。私はTwitterのヘビーユーザーとして、以前からTwitter Blueの存在が気になっていたので、新しいものを試してみたい気持ちで早速登録してみました。

登録してからおよそ1ヶ月ほど経過したので、実際にTwitter Blueを使用してみて、私が個人的に良いと感じた点、気になった点、今後期待したい点の3点について書いてみます。

Twitter Blueとは?

Twitter Blueについて既に知っている方はこのセクションは読み飛ばしてください。

Twitter BlueはTwitterサブスクリプションサービスです。月額料金を支払ってサブスクリプションに登録したユーザーに対して、認証バッジが付与され、ツイートの編集やブックマークのフォルダ分けやUIのカスタマイズ等の追加の機能が提供されます。

詳細の機能については以下のリンクの通りです。

help.twitter.com

良いと感じた点

ブックマーク機能のカテゴリ分け

個人的に一番良いなと思ったのはこの機能です。

ブックマーク機能は特定のツイートを保存しておいて後から見返すことができる機能です。ブックマーク機能自体はTwitter Blueユーザーでなくても使えるのですが、Twitter Blueではブックマークのカテゴリ分けが出来る様になっています。これは結構便利でした。

私はエンジニアという職業柄、様々な情報をTwitterで収集しているのですが、フォルダ毎にブックマーク出来ると後から特定のツイートを見つけやすくて助かります。元々、NotionやCraft等にTwitterで見つけた便利な情報を保存していましたが、Twitter Blueを使っていればそれらは全てTwitter内で完結できそうです。

カスタムナビゲーション

カスタムナビゲーションはタブを並び替えたり、「話題の記事」「ブックマーク」「自分のプロフィール」等を新たにタブに追加できる機能です。

私は「ブックマーク」をタブに置いていますが、ワンタップでよく使う機能にアクセス出来る点が便利で気に入っています。一見ちょっとした機能にも思えますが、こうした日々の操作の効率をアップできる機能に魅力を感じます。

また使わない機能はタブに表示させないことも出来るので、タブをシンプルにしておくのも良いですね。

気になった点

あくまで個人的な見解ですが、あまり良くないと感じた点についても書きます。

課金画面の表示

Twitter Blueの機能というよりは登録する前の話ですが、課金画面の案内方法が良くないと思いました。

こちらの画面を見ると、Twitter Blueに登録すれば「検索結果の優先表示」や「広告数半分」の機能がすぐに適用される様にも見えてしまいます。「近日公開」の文字をもう少し目立たせるべきですし、これらが一番上に表示されているのも良くないと思います。

実際にTwitterのタイムラインでも、すぐに広告が減ると勘違いされている方を見かけたので、こちらは改善した方が良いと感じました。

広告が半分になる機能

広告が半分になる機能については、個人的にはあまり魅力を感じませんでした。まだ公開されていない機能なので、実際の体験がどれくらい変わるかは分かりませんが、現時点ではあまり期待感がないのが正直な気持ちです。

私はYouTube Premiumに加入していますが、これはTwitter Blueの広告半分とは明確に違う印象があります。おそらくYouTubeで広告が半分になったとしても、課金しないと思います。

私はYouTube Premiumに対して、「広告で見ている動画が中断されて不快な気持ちにならないこと」に価値を感じてお金を払っています。広告の秒数が半分になってもその点は解消されません。

Twitterの現在の状況も踏まえると仕方ないのだと思いますが、広告の非表示は、個人的に一番期待していた機能だったので少し残念な印象を受けました。


こんな機能はどうだろう?

色々気になる点についても触れたので、「こういう機能があったらもっと課金したい!」という機能についても触れてみます。Twitterの内部の事情やコストを無視した勝手な要望ではありますが、自由に書いてみました。

私はTwitterのヘビーユーザーなので、基本的には時短になったり面倒を解消できるものにお金を払いたいと思っています。ヘビーユーザーほどこういう傾向はあるのではないでしょうか。

リンクをデフォルトでブラウザで開く機能

Twitterのリンクはタップするとアプリ内のブラウザが開きます。私は読んだ記事に「いいね」や「LGTM」をしたりコメントを書きたいと思った時に、毎回ブラウザで開き直しています。これが少し面倒に感じています。デフォルトでブラウザで開いてくれる機能があれば喜んで使いますし、お金も払うと思います。

ツイートをすべてデフォルトで日本語に翻訳してくれる機能

YouTubeの動画やコメント欄の様にデフォルトでツイートが日本語に翻訳されていたら良いなと思う時がたまにあります。

Web版であればDeepL Proを使えば実現できますが、アプリでもこれが実現すれば時短になります。

有料noteみたいにスレッドの一部を有料にできる

有益な情報はクローズドな空間に埋もれています。耳が痛い有益な情報はオープンな空間だと炎上しやすいので、そういう尖ったツイートをお金を払った人だけ閲覧できる仕組みがあれば良いなと思います。

投稿者は炎上を恐れずに有益な情報を発信でき、かつマネタイズできる。一方で閲覧者はお金を払うことで有益なツイートを見られる。双方にとってwin-winな仕組みだと思います。

これに近い機能は近いうちに実現しそうな予感もしています。最近のTwitterの動向を見ていると、Twitterのコミュニティー内でマネタイズできる様にする動きが見えるからです。

いいねをTLに表示しないようにする

気軽にツイートをいいねしたいのですが、現状はいいねしたツイートがフォロワーさんのTLに流れてしまうのが気になります。フォロワーさんのTLに表示したくていいねしているわけではなく、本当に拡散したい情報はRTするので、いいねとRTを明確に使い分けられる機能があればうれしいです。

どこまでTLを読んだか印をつけられる

せっかくTLにある色んな方のツイートを見逃したくないので、しおりの様に目印をつけておいて後から続きを見られる仕組みがあるとうれしいです。

さいごに

Twitter Blueを使ってみて、便利な機能はあるものの、まだまだ進化中のサービスだと思いました。

私は新しいものはとりあえず試してみたい性格なので試してみましたが、多くの人にとっては現時点でそこまで登録するメリットがある様には思えませんでした。

Twitterのサービスについては賛否両論ありますが、ここ数ヶ月のサービスの変遷を眺めていると試行錯誤してるのがとても伝わってきて、ワクワクします。

私は1ユーザーとしては昔からTwitterが大好きで応援したいサービスの1つなので、その気持ちも込めてTwitter Blueに登録しています。

今後の動向に期待をしつつ、もうしばらく使ってみようと思います。

try! Swift Tokyo 2023に参加してきた!

はじめに

1月21日(土)に開催された「try! Swift Tokyo 2023」に現地参加してきました!

文章にまとめないとすぐ忘れてしまうので、記憶が新鮮なうちに実際に参加してみて感じたことを書きます。

「try! Swift Tokyo」はSwiftに関するカンファレンスです。

詳細は以下の通りです。

tryswift.jp

try! Swift TokyoはSwiftのコミュニティです。
Swiftを使った開発のコツや最新の事例を求めて
世界中から開発者が集います。

余談ですが、こちらのサイトはGoodpatchの方がデザインされたというお話を聞きましたが、素敵なデザインですね!

3年越しの初参加

私はiOSエンジニアの仕事をしているので、以前からこちらのイベントに参加してみたいと思っていました。

「try! Swift Tokyo」というイベントについては、iOSエンジニアとして働き始めたばかりの2020年に存在を知り、一度参加しようと思ったことがあったのですが、その時はコロナ禍の影響もありイベントが中止になってしまいました。

それ以来ずっといつか参加してみたいと思っていたので、今回「try! Swift Tokyo 2023」が開催することを知り、すぐに申し込みました!

イベントを以前から楽しみにしていたので、チケット予約が開始になった瞬間に必死な思いでチケットを取りました。

チケットは予約開始からたった46分で無くなったとの事なので、こちらのイベントを楽しみにしている方がいかに多いかがよく分かります。3年越しに参加してみたいと考えているのは私だけではありませんでした。

オンラインとオフラインの同時開催

オフラインでの参加人数は150人だったそうですが、YouTubeでのライブ配信も同時に行われていたので、チケットが取れなかった方もオンラインで楽しむことが出来る工夫がされていました。

私がTwitterを見ていた限りですが、オンラインで参加されている方も結構いらっしゃってタイムラインが#tryswiftで非常に盛り上がっていました。オンラインでも100名ほどの方が視聴されていたそうです。

運営の方の配慮が素晴らしいなと思いましたし、それを実現する為に色々準備されているんだろうなというのが伝わってきました。本当に運営の方には感謝しかありません。

現地参加の感想

私が参加したオフラインの会場は株式会社メルカリのイベントスペースでした。こちらも大変賑わっていて、「iOSエンジニアの方ってこんなにいるんだ!」と正直驚きました。(もしかしたら他の職種の方も多く参加されてたのかもしれません。)普段仕事をしている時には、iOSエンジニアの方と出会う機会は比較的少ないので、そのギャップがとても新鮮で不思議な感覚でした。

自分と同じiOSエンジニアの方とお話しすると、自分と似たような課題を抱えられていたり、iOSに関する技術的な話が通じる感覚があって、それがとてもうれしかったです。まだまだお話しできなかった方も沢山いらっしゃるので、次回はもっと頑張って話しかけてみようと思います!

また登壇された方の発表や他のiOSエンジニアの方のお話を聞いて、それらが自分にとって良い刺激になったと思います。すごい人がいっぱい居て、「自分ももっと頑張らなきゃな」という気持ちになりました。Swift Concurrency等、まだまだ分からない部分も正直あったのですが、少しずつキャッチアップを頑張って知識を蓄えていきたいです。

私はオンラインの勉強会にも色々参加していますが、今回現地で参加してみて、オフラインは会場の空気感が伝わってきたり参加者同士の交流の機会があるのが魅力的だなと感じました。

本イベントは「Tea Time」という時間が設けられており、1時間ほどお菓子とコーヒーを片手に参加者同士や登壇者の方等と交流する機会があったのも良かったです。これこそオフラインの醍醐味だなと思います。

(写真を撮り忘れてしまったのですが、LINEの方にいただいたクッキーがとても美味しかったです。)

また今回はオフラインとオンラインの同時開催という事もあり、Twitterのタイムラインを見ながら、オンライン参加の方の盛り上がりも感じながら楽しめる一体感のあるイベントになっていたのも良かったです。

さいごに

さっそくYouTubeアーカイブ動画が公開されていました。見逃した方はぜひ!

私も現地では内容が理解し切れなかった部分を繰り返し見ようと思っています。私の場合は、一回で内容を理解するのが得意ではないのでアーカイブ動画はとても助かります。

現地で見ていてオンライン限定の内容もありそうだったので、そちらも気になるところです。

www.youtube.com

「try! Swift Tokyo 2023」はとても刺激的で素敵なイベントでした!

来年は3月頃開催されるとの事なので、来年も参加しようと思っています!

SwiftUIはiOS16からかなり使いやすくなった!

私はここ数ヶ月、SwiftUIを使ってアプリを作っています。SwiftUIを学ぶのは楽しいですが、学習を進める中で難しさを感じるポイントもいくつかありました。

私がSwiftUIを本格的に学び始めたのは最近ですが、その中で色々と感じたことがあったのでこの記事を書きました。

 iOS16からかなり使いやすくなっている

私の個人開発では、iOS16をミニマムターゲットにアプリを作っているのですが、SwiftUIはiOS16からかなり使いやすくなっていると感じました。実現したいことがシンプルな処理で書けて、ストレスなく開発出来ています。

例えば、下記のPhotosPickerはその1つです。iOS16から利用できるPhotosPickerを使えば、シンプルな実装でフォトライブラリから写真を取得する機能を実現出来ます。一方iOS15以下では、これを独自に実装する必要があります。

developer.apple.com

また以下の記事にある様に、iOS16からListの背景色はシンプルに設定できます。iOS15以下ではinitに処理を記述する必要がありましたが、iOS16からはモディファイアとして処理がまとめて綺麗にコードを書ける様になりました。

zenn.dev

上記の例はほんの一部ですが、iOS16からは特にSwiftUIで出来ることの幅が広がり、使いやすさが増していると感じます。その結果、綺麗にコードを書けるのでますます開発が楽しくなります。

SwiftUIは1つのコンポーネントに関する処理を同じ箇所にまとめて書けたり、共通化の為にコンポーネントやモディファイアを切り出せたりと、シンプルかつ美しくコードを書ける点が私はとても好きです。

iOS16でも既に使いやすくなっていますが、iOS17や18が登場した時にSwiftUIがどの様な進化をするのか、今からとても楽しみです。

OSによって挙動が違う時がある

SwiftUIで開発していると、「iOS16では上手く動作してるけど、iOS14だと上手く設定が反映されない」等といった事象にぶつかる事が度々ありました。

その為、複数のOSをサポートしているアプリの場合には、OS毎に分岐して処理を入れる必要があったり、一部のOSの予期せぬ挙動に苦しむ事もありそうです。

例えば、NavigationViewの様にiOS16からは非推奨になってしまうものもあります。代わりとなるNavigationStackはiOS16からしか使えず、OSによる分岐が必要になります。

developer.apple.com

新しいコンポーネントやモディファイアが次々と登場して、以前のものが非推奨になっているのを見ると、まだまだ進化し続けているフレームワークだと感じますし、OSを幅広くサポートしているアプリほど、そのスピード感に着いていくのは大変そうです。

個人的な意見ですが、ある程度の規模のアプリであれば複数のOSをカバーする必要があるケースがほとんどだと思うので、安定的にSwiftUIが使える環境が整うのは数年先になるのかなと思っています。

SwiftUIは宣言的にUIを構築できて、シンプルなコードでレイアウトを組めますが、こういった側面もあり、既存のプロダクトへの本格的導入の難しさも感じました。

学習方法について

SwiftUIの学習に関しても上記の理由から、個人的には本を買うよりも公式ドキュメントや最近書かれたQiitaやZenn等の記事を見た方が良さそうだなと思いました。

また記事を見る場合にも、対象のOSやいつ書かれた記事なのか、しっかり見た方が良いと思います。

私は、QiitaやZennなどでSwiftUIのタグが付いた記事やトレンドを定期的にチェックしています。色んな視点で記事を投稿している方がいて、とても面白いです。

SwiftUIは注目度の高いフレームワークという事もあり、コードのサンプルや解説記事が沢山見つかるのもうれしいポイントです。

https://capibara1969.com/swiftui/capibara1969.com

www.hackingwithswift.com

さいごに

SwiftUIでレイアウトを構築するのはとても楽しいです。またシンプルなコードで書けるので、コードレビューする側も見やすくなったり、チームでの開発にも適していると個人的には思います。

一方で、UIKitベースのプロダクトへの本格的な導入には、それなりにハードルがあるとも感じています。そんな中でSwiftUIでアプリを開発しているエンジニアは本当にすごいなと思いますし、私も見習って自社のプロダクトに積極的に導入していきたいです。

SwiftUIもどんどん進化しているので、今後の新しい情報を楽しみにしつつ、私もキャッチアップを頑張りたいです。最後まで読んでくださり、ありがとうございます。

ガジェット集めが楽しくなるサービス

ここ数年でテレワークが一般的になり、デスク周りの環境を整えている方も多いのではないでしょうか。

デスク周りの環境を整えるのはとても楽しいですが、数多くのアイテムから自分に合った物を見つけたり、デスク作りのテーマを考えるのは少し大変です。

今回は、私がデスク作りを考える上で参考にしているサービスをいくつかご紹介します。

理想のデスク作りの参考にしていただけたらうれしいです。

workspaces

まず紹介するのは、workspacesというサービスです。

www.workspaces.xyz

このサイトでは、色んな人が投稿したデスク周りの写真を見ることが出来ます。

2022年12月時点でおよそ230枚のデスクの写真が投稿されており、毎週末に更新されています。

このサービスの良いところは、デスクの使用者や構成アイテムについて詳細な説明が記載されている点です。各アイテムの名称はもちろん、投稿者本人のTwitterアカウントも記載されているので、気になったアイテム等について直接尋ねることも可能です。

これからデスク作りをしていきたいけど、どんな風なテーマにしようか考えている方はオススメです。

また、メールアドレスを登録しておくと、毎週土曜日と日曜日に新しく投稿されたデスクの写真が届きます。定期的に色んな人のデスク周りを見てみたいという方は登録しておくと便利です。

Tabliss

2つ目はTablissというChrome拡張機能です。
こちらはデスク周りのアイテム探しに特化した拡張機能ではないのですが、上手に活用すると良いアイテムが見つかります。

この拡張機能を追加すると、Chromeで新規タブを開く度にランダムでデスク周りやガジェットの画像を表示させることが出来ます。

タブを開く度に、この様にデスクの画像が表示されてテンションが上がります!

設定方法は以下の通りです。

①まずはChromeウェブストアから"Tabliss"を追加します。
chrome.google.com

②TablissをChromeに追加したら、新しくタブを開いて、画面左上の設定アイコンを選択します。

③設定画面が開いたら、以下の様にShow a new photoの項目は"Every new tab"を選択、Tagsに"desk setup"と入力して設定を保存します。
(Tagsのワードはお好みで"gadget"等に変更しても良いです。設定したワードで検索された画像が表示されます。)

これで新規タブを開く度に色んな人のデスクの画像が表示される様になり、タブを開くのが楽しくなります!

Tablissはちょっとした作業の隙間で気になるデスクを見つけることが出来る機能です。
ランダムにデスクの写真が表示されるので、思いがけないアイテムを見つけるきっかけになるかもしれません。

IT企業デスクツアー

次に紹介するのは、IT企業デスクツアーです。

www.itmedia.co.jp


こちらはITmedia Newsの連載の一つで、様々なIT企業で働いている方のデスクが紹介されています。

IT企業で働く方のデスクという事で、エンジニアやデザイナーを中心に数多くのデスクが紹介されています。

仕事でデスクを使い倒している方ばかりなので、より実用的なデスクを見つけたい方にオススメです。

ユニークなアイテムも数多く紹介されていて面白いです。

デスクをすっきりさせるマガジン

ガジェット好きならおそらく知っている方が多いと思いますが、PREDUCTS代表のGO Andoさんが運営されているnoteのマガジンです。

note.com

デスク周りを整えている人の多くがぶつかる、「ケーブル問題」を解消するコツが紹介されていたり、シンプルな美しさを追求したデスクが数多く紹介されています。

余談ですが、GO Andoさんが展開されているPREDUCTSのプロダクトはとにかくシンプルでかっこいいです。私もいつかPREDUCTSのデスクを手に入れるのが夢です。
preducts.jp

こちらはデスク作りを妥協せずこだわり抜きたい方には必読のマガジンです。

Pinterest

こちらも有名ではありますが、デスク作りのアイデアを探す時にPinterestはとても便利なサービスです。
www.pinterest.jp

Pinterestの素晴らしい点は、自分の好みを学習してくれる点です。効率的に情報収集するのに適しています。

例えば、"desk setup"や"gadget"等のワードで検索して好きなデスクやアイテムを保存していると、どんどん好みのアイテムを学習してくれるので、かなり精度の高い情報が表示される様になります。

画面を更新する度に新しいアイデアが表示され、アイデアをカテゴリ毎に保存しておく事も出来るので、まさにデスク作りのアイデア集めにピッタリです。

インスタやTikTokYouTube等においても、Pinterest同様に好みを学習してくれるので、気になった投稿にはリアクションしておくとより精度の高い情報が集まりやすくなります。

また、検索ワードも上手に使うと理想のデスクを見つけやすいです。

例えば、私は以下の様な検索ワードをよく使います。

clean and minimal setup→シンプルですっきりしたデスク周り
home office design→書斎のデザイン

自分好みのデスクやアイテムを見つけた時に、それらを表現するワードを知っておくと、より深い情報に辿り着けます。Amazon等で買い物をする時にも活用出来る方法です。

さいごに

様々なサービスを上手に活用すれば、デスク作りはもっと楽しくなります。
今回ご紹介した情報が理想のデスク環境作りのお役に立てば幸いです。

また、「他にもこんなサービスあるよ」というものがあればぜひ教えてください!

最後まで読んでくださり、ありがとうございます。