いろいろスクショなど不足してるかも知れませんが 何かしらの参考になりましたら幸いです。 シミュレーターを追加する シミュレーター一覧のある画面 OS Versionでデバッグに使いたいOS選択。 目当てのOSがなかったらDownload more simulator runtimesをクリックして左下にある+ボタンからダウンロードする。 2023/05/25現在 iOS13.7以前のOSのシミュレーターは導入が難しくなっている。 おそらくAppleの公式サイトなどからダウンロードできるのだと思うが、 面倒そうだったので私はiOS12の搭載されているiPhone5sを購入してそれでデバッグしてま…
概要 どうやって指標を確認しているの? NewsPicksのFour Keysはどんな感じ? 改善前はどんな感じ? 改善のために何をした? 終わりに 概要 NewsPicksは「最高の開発体験の追求」をしている会社です。エンジニア向けのサイトの1ページでも謳っており、そこから弊社高山の記事に辿れるので、こちらも読んで頂けると幸いです。 そして、これはサーバーサイドだけの話しではなく、モバイルチームでも同じように開発者体験向上を目指し、Four Keysを追っています。 Four Keys とは、ソフトウェア開発チームのパフォーマンスを計測する4つの指標です。Four Keys 指標を用いること…
必要ないモジュール依存を省いてSwiftUIのプレビューを快適にした話。 musicLineではマルチモジュールで開発を行っており、それが原因かSwiftUI のプレビューが遅いのが気になっていました。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール はじめに プレビューするとBuild for Previewsとなり、プレビューのための再ビルドが走り、数分待つことになります。これが起動時に1回程度だといいのですが、コードを修正した時など?不意にビルドが発生します。あまり頻繁にプレビューで待たされると、デバッグの環境としては良くないですね。 どうやらRealmのモジュール…
musicLineのiOS版を開発する時に、MVVMパターンの構造を選択した話。 iOSアプリ開発におけるSwiftUIとMVVMを使った実装方法を調査しました。 いつでも、どこでも、気軽に作曲 ♪ musicLineをインストール また実際にSwiftでタイマーを作ってみて、MVVMパターンの実装例を紹介します。 MVVMを使った実装例(後述) はじめに MVVMとは ソースコードを Model View ViewModel に分類して開発しやすくする構造です。 例えば、ユーザーがViewのボタンを押した時 ViewからViewModelへコマンドを送信 ViewModelがModelを操作…
今回はマルチモジュール開発の話。 最近のSwiftPackageを使ったマルチモジュール開発について調査しました。 はじめに 開発が大きくなったり複数人で進めていく場合、モジュール分割してないとよくわからない状態でも実装を進められてしまいます。最初はなんとなく動作しているのでうまく実装できているような気になりますが、その状態で進めると依存関係がどんどん複雑になり、不具合が多くなってしまう原因になります。 モジュールを分割することで、 ある程度の実装方法を強制できる モジュール単位での依存関係が把握できる 関心のあるモジュールのみ把握すればいい 等 以上のメリットがあり、開発しやすくなります。 …
iOS開発でエラーハンドリング時のエラーメッセージの実装が間違えているような気がしたのでその調査メモです. 恥ずかしながら今まではCustomStringConvertibleやコンバータークラスを作成していました. 間違い等ありましたら指摘してくださると嬉しいです. ErrorとNSError Foundation/UIKit等を利用していると稀にNSErrorというものを見かけます. SwiftのErrorとの違いは次の点が違います. Error Errorはdo-catch構文やResult型で補足することができる抽象型のプロトコルです. Swiftで定義されているErrorプロトコルに…
teratail.com 上記のサイト様を参考にさせていただきました。 swift5 cellをロングタップした時の動作 override func viewDidLoad() { super.viewDidLoad() //セルのロングタップジェスチャー let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(rowButtonAction(_:))) longPressRecognizer.allowableMovement = 15 longPressRecognizer…
↓以前書いたこの記事では 【SwiftUI】TextfieldやText Editorで文字が入力されるごとに検知する方法。 - まだどこにもないアプリを作る バインディングの変数が変わることを検知する onChangeモディファイアを使うことで実装しましたが TextfieldやTextEditorの文字の変数が @ObservedObject変数の場合だとエラーが出てしまうので実装できません その場合は以下の実装になります。 $task.nameはObservedObjectです。 まずCombineをインポートします。 import Combine TextFieldの場合↓ TextF…
すっきりしたコードではないし他にやり方があると思いますがこれで一応。 UserDefaultに保存してある値を変更しない限り 1度アラートを出したら2度と出ないアラートを作ることがきます。 let ud = UserDefaults.standard func onceAlert() {//単発アラート var isAlreadyDone = false//既に実行済みかどうか if let x = ud.object(forKey: "isAlreadyDone") as? Bool{ isAlreadyDone = x } if isAlreadyDone{ }else{ let aler…
UIbuttonのisEnableプロパティはfalseにした後で、TargetActionをつけたらisEnableはTrueになる button.isEnabled = false これをやった後に button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside) をつけてしまうと isEnable が自動的にtrueになります。 注意です。
株式会社スタメンでiOSエンジニアをしている青木 (@38Punkd)です。 スタメンは、2024年3月22日~24日の3日間、ベルサール渋谷ファーストにて開催される「try! Swift Tokyo 2024」に初めてスポンサーとして協賛し、ブース出展をしました。 今回はカンファレンスやブースの様子をご紹介できればと思います! try! Swift Tokyo 2024、2日目終了。最高のセッションをありがとうございました🥳明日はワークショップの開催です。try! Swift Tokyo 2024, Day 2 has ended. Thank you for the amazing ses…
はじめに こんにちは。スタディサプリのiOSアプリの開発に携わっているk-koheyです。突然ですがみなさんは、「なにもしとらんのに壊れた」という言葉を聞いた事はありますか??ソフトウェア開発の現場では、ついさっきまで正常に動いていたプログラムが急に動かなくなる事があります。奇妙な事にキーボードやマウスに全く触っていないのに、突然プログラムの動作が変わってしまうのです*1。その結果納期に遅れが出たり、最悪な事に開発が進まなくなってしまう事もあるとかないとか....。「なにもしとらんのに壊れた」はこのような不思議な現象に遭ったときによく使われます。 私は今、この現象に取って代わる新しい現象に遭遇…
こんにちはiOS開発をしている福山です。 この記事では、SwiftGenとSwift-DocCを用いて、xcassetsを開かずにコード内の画像をQuick Help(右パネルまたは⌥オプションキー+クリック)で直接確認する方法を紹介します。 各ツールの簡単な説明 Swift-DocCは、Swift言語用のドキュメント生成ツールです。Swiftコード内に書かれたコメントから、ナビゲーションが容易で、見た目も美しいドキュメントを生成することができます。 SwiftGenは、Xcodeプロジェクトで使われるリソース(画像、フォント、色、ローカライズなど)を静的に型付けされたSwiftコードに変換す…
4月からFlutterを使うことになるので、そのキャッチアップを兼ねて勉強の内容を書き留めていこうと思います。 ネットに勉強サイトや知見ブログがたくさんあるのでそちらを見ながらでもいいかなと思ったのですが、今回はこちらの書籍を買ってみました。 ゼロから学ぶFlutterアプリ開発 | 藤川 慶 |本 | 通販 | Amazon ”本書は、プログラミング初心者やエンジニア1〜2年目レベルの方を対象に、アプリ開発やプログラミングを始めるきっかけとなる1冊です。”(解説から抜粋) 産育休期間を除いて約4年ほどこの仕事をしているので全くの初心者というわけではないけど、すぐに見れる分かりやすい本が一冊あ…
この度、try! Swift Tokyo 2024にご登壇いただくスピーカーの皆様の情報を公式Websiteに掲載しました!登壇者の皆様に心からの感謝を申し上げます。 また、今回採択に至らなかったものの、数多くの素晴らしいプロポーザルをご提出いただいた皆様にも深く感謝いたします。皆様の情熱と努力に敬意を表します。 ・・・ 本ブログではwebsiteに掲載されたスピーカー情報に合わせて、先行して発表タイトルと概要を一部公開いたします。どんな話が聞けるのか楽しみに当日をお待ちください。 注)本ブログでは発表タイトルと概要は日本語で掲載させていただいております。 公式サイト tryswift.jp …
こんにちは!!23新卒でiOSエンジニアをしている中山 龍(@ryu_develop)です! 最近は部屋に緑を求めて植物を育てるのがマイブームです。レモンの果実に入っていた種を発芽させようと頑張っており、15個ほど植えた種から3つの芽が生えてきました!🌱大切に育てて観葉植物として楽しめたらいいなと思っています🍋 さて、iOS開発者の皆様、Privacy Manifests対応の期限が近づいてきましたが、対応状況はいかがでしょうか? ChatworkのiOSチームでは現在、Privacy Manifestsへの対応を進めているところであり、自分もメイン担当として取り組ませていただいているところで…
どうも亀山です。急に雪が降ってきました。気温も低いので、風邪などにお気をつけください。 今回は、Mac アプリを CI でビルドするときに証明書周りで発生したエラーを調べる中で知った p12 ファイルの仕組みについて説明します。
こんにちは!ぱかぱかです! 正月休みはテンポよく投稿できていたのですが、仕事が始まった途端に投稿が途絶えてしまいました… 1月は週末にスノボや旅行など色々な予定が入っており、充実した日々を過ごしておりました。 今週末は久しぶりに何も予定がないので書き進めていきたいと思います。今回はiOSのStoryboard開発についてです。 Storyboard せっかくMacを買ったのにiOSの開発をまともにやっていなかった私… だいぶ前ですが、iOS開発について書いた記事が以下です。radish-se.hatenablog.com radish-se.hatenablog.comこの本をベースにサラッと…
はじめに こんにちは。DevRelブロックの@wirohaです。1月23日に「ZOZO Tech Meetup - Android」を開催しました。ZOZOのモバイルアプリエンジニアがAndroidの開発話をするオンラインイベントです。
こんにちは、エンジニアの中島です。 この記事は2023年10月から翌年1月までのLIFULL社でのアクセシビリティ改善およびやっていき活動の報告です。 この活動報告は月次で出すかもしれないし出さないかもしれないくらいの温度感で運用されていく予定です。
PythonやJupyterでiPhone/iPadプログラミング! 「PythonやJupyterでiPhone/iPadプログラミング!」発行主旨・内容紹介 「PythonやJupyterでiPhone/iPadプログラミング!」目次 「PythonやJupyterでiPhone/iPadプログラミング!」Amazonでの購入はこちら 「PythonやJupyterでiPhone/iPadプログラミング!」楽天市場での購入はこちら※電子書籍版です PythonやJupyterでiPhone/iPadプログラミング! インプレスグループでIT関連メディア事業を展開するインプレスは、技術書典や…
こちらはトレタAdventCalendar2023 24日目の記事です。 タイトルはAIタイトルアシストにつけてもらいました。 qiita.com はじめに こんにちは、トレタでソフトウェアエンジニアをしているkentaroです。 トレタO/Xという飲食店向けモバイルオーダーの開発を担当しています。 担当しているゲートウェイサーバのインフラを GCP に移行したのでその話を紹介したいと思います。 O/Xのシステム構成図。赤枠がゲートウェイサーバー。ちなみに筆者はユーザー向けアプリ・スタッフ向けアプリの開発も担当している。 なぜインフラを移行するのか 移行前は AWS の EKS 環境でした。当…
この記事は はてなエンジニア Advent Calendar 2023 の 13 日目です。 昨日は シンプルで使いやすいマイクロHTTPフレームワーク『Cask』を紹介するよ - Lambdaカクテル でした。 Scala にもこういう入りやすそうなフレームワークがあるんですね。easy で fun なツールをどんどん使っていきたいし、人生も easy で fun になってほしい。 今日は iOS アプリについて書きます。 概要 アプリケーションを継続的に開発していくことで、コードベースもどんどん大きくなっていきます。とくに iOS アプリではコードベースが大きくなることにより、ビルド時間が…
この記事は、 KENTEM TechBlog アドベントカレンダー2023 9日目、12月13日の記事です。 こんにちは!KENTEM第2開発部の花田です。 私が所属するチームではSiteBoxというモバイルアプリを開発しています。 8年ほど前のファーストリリース当初からMicrosoftのXamarinというフレームワークで開発してきましたが、2024年5月1日でサポートが終了するため、後継である.NET MAUIでSiteBoxを再構築することになりました。 今回は.NET MAUIを実際に使ってみた上でのメリットやデメリットを紹介させて頂きます。 これからモバイルアプリを作ってみたいとい…
これは Qiita iOS Advent Calendar 2023 の13日目の記事です。 概観 背景 こんな人へ向けた記事 この記事で扱う非同期処理の実現方法 GCDを用いた非同期処理 GCDとは DispatchQueue DispatchQueueへのタスク引き渡し DispatchQueueの優先度 DispatchQueueの分類 (Private Dispatch Queue) GCDの使い方 Operation、OperationQueueクラスを用いた非同期処理 Operation、OperationQueueクラスとは Operation、OperationQueueクラス…