タグ

ブックマーク / qiita.com (1,862)

  • CGImage.cropping()の注意点 - Qiita

    はじめに この前リリースしたAR Mini SketchというアプリでUIImageView上の画像をユーザーが指定した範囲で切り抜くという処理があるが、画像によっては指定通りに切り抜かれないという不具合があった。 原因を調べてみたところ、CGImage.cropping()の際の範囲指定には元画像の向きを考慮しなければいけないことが分かったため、注意点を備忘として残しておく。 CGImageクラスとは CGImageクラスとはCore Graphics Imageの略。 bitmapイメージとして画像のマスク処理や切抜き処理を行うことができる。 尚、このクラスにはwidthとheightというプロパティはあるがorientationというプロパティはない。 UIImageクラスとは iOSアプリ上で画像を操作する際の最も一般的なクラス。 リソース上の画像ファイルを読み込む際も大抵このクラ

    CGImage.cropping()の注意点 - Qiita
    invent
    invent 2024/10/01
  • SwiftUIでサスペンドに対応したonAppear・onDissapearを用意する - Qiita

    SwiftUIで画面表示開始時にAPIからデータ取得を行ったり、デバイスの状態を変更したりするようなことはよくあるかと思いますが、画面表示開始時に実行される処理に関して、サスペンド対策を講じていないことで不具合が発生してしまうシチュエーションがいくつかありました。例えば... アプリをサスペンド後、しばらく時間が経過して戻ってきた場合にもAPIに依存したデータが更新されない。 画面表示中のみAPIから継続的にデータを購読(ポーリング)するタスクを、画面表示時にonAppearで開始、非表示時にonDisappearで停止するように用意していると、アプリがバックグラウンドの間にも継続的にタスクが動いてしまう。 特定の画面を表示したときにonAppearで画面の明るさを上げる処理をいれていると、アプリをサスペンドしたときに明るさが戻らない。 SwiftUIのonAppear・onDisappe

    SwiftUIでサスペンドに対応したonAppear・onDissapearを用意する - Qiita
    invent
    invent 2024/09/30
  • iOS18の「アイコンの見た目をLight, Dark, Tintedから選べる例の機能」がやっているであろう処理の推測とアセットの準備方法 - Qiita

    iOS18の「アイコンの見た目をLight, Dark, Tintedから選べる例の機能」がやっているであろう処理の推測とアセットの準備方法iPhoneiOSHumanInterfaceGuidelinesiOS18 記事の内容はiOS18 beta3, Xcode16 beta3時点のものです。 TL; DR iOS18のアイコンの表示モードを選べる機能では、モードごとにアセットの処理プロセスが異なる 各モードの処理特性(推定)を踏まえると、以下のようにアセットを準備するのがよいと考えられる 1. Lightアセットは従来通り 2. Darkアセットの背景は透明にし、アクセントカラーを調整してメインの意匠を配する 3. 色合いを調整用アセットの背景は単色の黒色にし、メインの意匠はモノクロのグラデーションにする 前提: iOS18の「アイコンの見た目をLight, Dark, Tinte

    iOS18の「アイコンの見た目をLight, Dark, Tintedから選べる例の機能」がやっているであろう処理の推測とアセットの準備方法 - Qiita
    invent
    invent 2024/07/23
  • 【VSCode】Rubyでコードジャンプする方法 - Qiita

    はじめに 投稿では、VSCodeRubyのコードジャンプを提供してくれる拡張機能の導入方法を解説してます。 対象者 VSCodeRubyの開発を行っていて、JSなどと同様にコードジャンプしたい方 拡張機能をインストールしたものの、期待通りにコードジャンプが動作しなかった方 拡張機能 Rubyのコードジャンプを提供してくれる拡張機能として、ダウンロード数の多い以下の2つを導入して、軽く動作確認しました。 Ruby Solargraph Ruby LSP 現時点の感想 現時点でコードジャンプ用途であれば、Ruby Solargraphのほうが使いやすいと感じた。 拡張機能 現時点の感想

    【VSCode】Rubyでコードジャンプする方法 - Qiita
    invent
    invent 2024/07/10
  • 【SwiftUI】NavigationStackのpathを使って、ログアウト遷移やディープリンク遷移を直感的に書いてみた - Qiita

    前回のおさらい Hashableに準拠するコレクションとして画面一覧をenumで宣言してNavigationStackにpathとして渡し、@ViewBuilder関数を使うことで対応するViewに自動遷移させることができました。 class NavigationRouter: ObservableObject { @Published var path = [ScreenKey]() enum ScreenKey: Hashable { case home case fruitList case fruitDetail(id: String) @ViewBuilder func destination() -> some View { switch self { case .home: HomeView() case .fruitList: FruitListView() case .f

    【SwiftUI】NavigationStackのpathを使って、ログアウト遷移やディープリンク遷移を直感的に書いてみた - Qiita
    invent
    invent 2024/06/04
  • M1 環境で Homebrew 導入コマンドを Xcode から叩けない場合の対処法 - Qiita

    この記事は YUMEMI Advent Calendar 2021 16 日目の記事です。 背景 M1 (Apple Silicon) 環境の Homebrew については、デフォルトのインストール先が /opt/homebrew/bin (+ /opt/homebrew/sbin) へと変更されました。 この設定で Homebrew で導入したコマンドを Xcode の Build Phases 中で叩くと、 command not found のエラーが発生してしまいます。 Xcode のデフォルトの設定のままだと Build Phases 内部の Run Script において PATH に /opt/homebrew/bin が通っていない状態となってしまっているのが原因なので、これを何とか解消しようというのが今回の記事となります。 対象 画像

    M1 環境で Homebrew 導入コマンドを Xcode から叩けない場合の対処法 - Qiita
    invent
    invent 2024/06/04
  • 最適なデータベースを選択するために考慮するべきこと - Qiita

    こんにちは!少し前までProgateでエンジニアのインターンをさせていただいておりました、chisatonと申します。 Progateのアドベントカレンダーに参加させてもらえるだなんて思ってもみなかったので、とても嬉しい限りです。 今私はエンジニアとして別の会社で働かせていただいているのですが、今の部署とProgateではAWSを使用しているという点で共通点があるため、今回はAWSのサービス紹介も兼ねて、どんな時にどのデータベースを選択すべきなのか、についてまとめてみようかと思います。 元ネタは、最近参加させていただいたラスベガスでのAWS re:Inventの"Which Database to Use When?"というセッションになります。 こちらに動画が既にアップされていますので、興味がある方はこちらを見てみてください。 DB選択においてまず考慮すべき3つの項目 Shape Siz

    最適なデータベースを選択するために考慮するべきこと - Qiita
    invent
    invent 2024/02/21
  • 【Swift】バックグラウンド時にもセキュアなiOSアプリを実装する - Qiita

    導入 iOSアプリにはアプリを切り替える時に、最後に表示していた画面を「スナップショット」として保存しておく機能があります。 iPhoneを利用されている方ならご存知かと思いますが、アプリスイッチャーでアプリを切り替える時に、以前表示していた画面が見ることができます。 便利な機能なんですが、これによって個人情報などがスナップショットとして保存され、セキュリティ的な観点では問題になるとのこと。 こんな感じでアプリがバックグラウンド状態にある時に、名前やメアドなどの個人情報がスナップショットとして取得されていることが分かります。 そこで今回は、個人情報をOSのスナップショットから守る実装を書いてみました。 実装方法 結論から書くと 「バックグラウンドに入った時に個人情報を含むオブジェクトをisHidden=trueに設定し、アクティブになったら再表示する」という処理を書くだけです。 セキュアな

    【Swift】バックグラウンド時にもセキュアなiOSアプリを実装する - Qiita
    invent
    invent 2023/09/14
  • iOSフォトライブラリの写真を画面上でトリミングして保存するまで - Qiita

    はじめに この記事は確かiOS10あたりでの記事になっていると思います。iOS12が発表された今現在(2018/9/20)では、このようなトリミングの自前実装は必要のないような素晴らしいiOS標準のAPIがある可能性があります。まずは公式のAPIがないか探すことをお勧めします。) iOSアプリでフォトライブラリ(「写真」)を読み込んで使いたいときがあると思います。さらに、その写真・画像を微妙にトリミング等ができるようにしたいという場合もあるでしょう。 そこでそんな時のための一連の流れをご紹介します。 全体的に機能を説明するgif動画があるので、ざっとそれに目を通していただければどんな内容かわかると思います。 ここもっと良くなるよ!とか似たようなライブラリ既にあるよ!というコメントお待ちしております。 追記 2018/6/4 注意: iPhoneなどで撮影した写真は縦横が思っているものと逆に

    iOSフォトライブラリの写真を画面上でトリミングして保存するまで - Qiita
    invent
    invent 2023/07/28
  • 「朝会」といってもどうやら流派が存在するらしいので整理してみた - Qiita

    TL;DR 諸般の都合1により、朝会の方法論を言語化する必要が出てきたため、 まず世の中の人が朝会について何を言っているのか調べてみたら、 どうやら流派みたいなものが存在する事がわかったよ。 これから朝会のスキルを身につけようとする人は、 どの流派が自分にあうか選んでみるといいよ。 参考にした投稿・サイト プロジェクトファシリテーション 実践編 朝会ガイド - オブラブ デイリースクラムの開催(朝会)時間 - Qiita スクラムの朝会で毎回意識する5つのこと - Qiita 朝会、夕会を価値あるものにするための観点と方法 - Qiita 5年間やって気づいた、朝会スタンディングミーティング5つのポイント - ぐるなびをちょっと良くするエンジニアブログ ダラけた「朝会」などの定例会議を改善する、たった1つの方法。 | 20代の”はたらき”データベース『キャリアコンパス』- by DODA

    「朝会」といってもどうやら流派が存在するらしいので整理してみた - Qiita
    invent
    invent 2023/07/06
  • Webアプリケーションで、APIが画面と結びつきすぎる問題を解決するには - Qiita

    概要 Webアプリケーションを開発しているとしばしば、APIサーバ側がクライアントのことを考えたレスポンスを返すことを意識した結果、いろいろと辛い状態になることがある。このような状態をいかに解消していくかを考察していく。 稿で想定するWebアプリケーション サーバサイドはWeb API (大抵はHTTP, JSON)であり、iOSアプリ、Androidアプリ、ブラウザアプリ(Single Page Application=SPA)があるような、一般的なWebアプリケーションを考える。 開発の流れは、まず仕様が提案され、それをもとに、iOS/Android/Browserでの画面仕様が作られる。それを見ながら、アプリのエンジニアとサーバサイドのエンジニアが打ち合わせ、APIのエンドポイント・リクエスト・レスポンスの型を定め、その後お互いに開発を開始する。 Smart UI アンチパターン

    Webアプリケーションで、APIが画面と結びつきすぎる問題を解決するには - Qiita
    invent
    invent 2023/06/01
  • ReactNative + TypeScript + React HooksでFlatList使うときにrenderItemの型でハマった時の解決方法 - Qiita

    ReactNative + TypeScript + React HooksでFlatList使うときにrenderItemの型でハマった時の解決方法JavaScriptTypeScriptreactnativereact-nativeexpo 導入 TypeScript無しでは、FlatListを書いたことあるので、スラスラ書けるかなと思って、 TypeScriptでFlatListを書いていました。 しかし、TypeScriptのエラーに引っかかりまくり、なかなか解決できなかったので、 その解決方法を共有する目的で記事を書いています。 前提 VersionとFlatListについての前提情報を記載します。 Version ReactNative: 0.59.8 Expo: 35.0.0 FlatListとは? スクロールできるリストのこといいます。 ReactNativeで作成するアプ

    ReactNative + TypeScript + React HooksでFlatList使うときにrenderItemの型でハマった時の解決方法 - Qiita
    invent
    invent 2023/05/26
  • Xcode Cloud は銀の弾丸になるのか - Qiita

    記事は弊社が技術書典 14 で無料配布する同人誌「ゆめみ大技林 '23」の寄稿です。追筆や訂正等がある場合はこの記事で告知します。 皆さんは iOS 開発においてどんな CI を利用しているでしょうか。Bitrise?Circle CI?いやもしかすると Jenkins のお世話をしている方もいらっしゃるのではないでしょうか。いずれにせよ、CI/CD は現代の開発において必要不可欠な環境と言っても過言ではないでしょう、なぜなら CI/CD こそ我々に提出されたコードをマージする自信をもたらせてくれているのです。 そんな中、アップルがついに公式の CI サービスを 1 年の Beta を経て昨年正式リリースしました。その名も Xcode Cloud です。名前のとおり、Cloud で動く Xcode とイメージして差し支えないでしょう。 筆者が考えるこの Xcode Cloud の最大の

    Xcode Cloud は銀の弾丸になるのか - Qiita
    invent
    invent 2023/05/23
  • AirPods Proの加速度センサーの値を取得する【iOS14】 - Qiita

    はじめに 皆さんは,AirPods ProのSpatial Audioと呼ばれる空間オーディオ再現技術試しましたか? 臨場感がすごいですよね. SpatialAudioは,AirPods Proに搭載されている加速度センサーやジャイロスコープを用いて音場をリマップして,,, みたいなことをしているらしい. iOS14からCoreMotionの中にCMHeadphoneMotionManagerが追加され 簡単に取ってこれることがわかったのでちょっと調べてみました. 2020/10/1 更新: 一部内容に誤りがあったため修正しました. いるもの Xcode : 12.0+ iOS : 14.0+ AirPods Pro Info.plistに使用目的を記述 CoreMotionを使うのでInfo.plistにさくっと追加 実装 import UIKit import CoreMotion c

    AirPods Proの加速度センサーの値を取得する【iOS14】 - Qiita
    invent
    invent 2023/05/15
  • [iOS] [社内勉強会資料] ディープリンクについて - Qiita

    「ディープリンク」とは ディープリンクとは、Webページやスマートフォンアプリからアプリの特定コンテンツへ移動するリンクのことです。 ディープリンクは元々、あるWebサイトのページから他のWebサイトのページやコンテンツに直接リンクすることを指して使われている言葉でしたが、近年になってスマートフォンやアプリの利用が増加したことに伴い、現在利用されているような意味へと再定義されました。 (引用:AIアナリストBLOG) iOSにおける実現方法は以下です。 カスタムURLスキーム Universal Links Firebase Dynamic Links カスタムURLスキーム URLスキームとは、URLの“://”より前の部分で、リソースにアクセスするための手段を示します。 http/https, ftp, mailto などなどが既定のURLスキームです。 アプリ独自で決めたURLスキー

    [iOS] [社内勉強会資料] ディープリンクについて - Qiita
    invent
    invent 2023/04/20
  • iOS14で非公開サーバーかつオレオレ証明書でUniversal Linksをテストする方法 - Qiita

    今回はiOS14で非公開サーバーかつオレオレ証明書でUniversal Linksをテストする方法について投稿したいと思います。 iOS14でUniversal Linksのapple-app-site-associationファイルがCDN化されました。 参考:iOS14 におけるUniversal Links の変更点 https://recruit.gmo.jp/engineer/jisedai/blog/ios14-universal-links/ それに伴い、番環境では公開されているサーバーでないとapple-app-site-associationファイルをCDN化できず、Universal Linksが働きません。 そこで下記2つの手順を行うことで非公開サーバーかつオレオレ証明書でUniversal Linksをテストできます。 alternate modeをdevelop

    iOS14で非公開サーバーかつオレオレ証明書でUniversal Linksをテストする方法 - Qiita
    invent
    invent 2023/04/20
  • みんなで育てる仕様書デザイン - Qiita

    この記事は Goodpatch Advent Calendar 2020 の5日目です。 はじめに 開発において、仕様書はとても重要な役割を果たします。 私が仕様書を作成するときに考慮している観点を紹介します。 仕様書に求めること 正しい仕様が書かれている 来の仕様書の目的です。 メンバーの目線を揃え、仕様を知りたいてときに知ることができ、新メンバーや未来の自分が仕様を理解できる必要があります。 属人化しない 誰が見ても正しく内容を理解できる必要があります。 誰でも書ける・読めるようにするため、エンジニアリング言語を使わず、正しい日語で書くようにします。 エンジニア以外も仕様を書くことで、実装や運用を考慮したデザインを作ることができます。 また、現在の仕様に至るまでの過程がわかるようにしておくと、議論を蒸し返さずに納得感を得られます。 仕様書を開くコストを抑える どれだけ素晴らしい仕様

    みんなで育てる仕様書デザイン - Qiita
    invent
    invent 2023/04/04
  • テストの管理を改革せよ! - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? この話はある開発チームのリードエンジニアがそれまでのチームの非効率的なテストの管理に嘆き苦しみ、改革を行ったごく最近の物語である ■対象読者 プロジェクト管理ツールJiraを現在使っている、もしくは導入検討中である テストの管理で苦しんでいる、改善したい 例.ExcelもしくはGoogleスプレッドシートでテストを書いているが、もやもやを抱えている テストが非効率であることに自覚がない方 上記のいずれにもあてはまらないが、何かおもしろそう プロローグ〜僕達はテストの無駄を無くしたいと願った〜 僕達の開発チームではマニュアルテストケースは

    テストの管理を改革せよ! - Qiita
    invent
    invent 2023/04/04
  • iOS14でUniversal Links対応することになった人が見る記事 - Qiita

    Universal Linksとは urlからアプリをシームレスに起動できる機能のことです。 ディープリンクとの大きな違いは確認のダイアログなしでアプリに遷移できることです。 UX上の利点や特徴などは以下の記事で詳しく解説されています。 モチベーション 今回Universal links対応をiOS側の担当者として調査から実装までやりました。 しかしこれが曲者で、 OSごとに対応方法が異なっていたり、 事前に対策を打たないと特定の環境で動作確認できなかったり 挙動にOS差分があって中々原因に気づけなかったはまりどころがあったり、 などなど結構ハマってしまいました。。。 そこで、同じようにiOS14からUniversal Linsに対応する方が苦しまなくてよいようにするため、以下の情報を記事にしました。 iOS14時点のUniversal Links対応手順 Universal Linksの

    iOS14でUniversal Links対応することになった人が見る記事 - Qiita
    invent
    invent 2023/03/28
  • PumaやSidekiqでメモリが肥大する問題の対処法 - Qiita

    原因 メモリ使用量が肥大化する原因の一つとして、Rubyのメモリ管理とmallocの仕様(スレッド単位メモリアリーナ)によりメモリの断片化が発生していることが挙げられます。 メモリの断片化であって、メモリリークしているわけではありません。 解決策1. Puma Worker Killerを使う Puma Worker KillerというGemがあります。 PumaのWorkerプロセスが設定したメモリを超えた時に自動でそのプロセスを殺して安全に再起動することでメモリの肥大を防ぎます。 根的な解決ではありませんが、環境をいじれない人にとってや有効かもしれません。 ただPumaのみの解決であってSidekiqの解決にはなりません。 解決策2. メモリアリーナの最大数を変更する MALLOC_ARENA_MAX環境変数でメモリアリーナの最大数を設定することによってメモリの断片化が改善できます。

    PumaやSidekiqでメモリが肥大する問題の対処法 - Qiita
    invent
    invent 2023/03/22