- 1. Flutter案件待ち間の冒険:アプリ模倣チャレンジ – 第1章「時計」アプリ
- 2. Flutter案件待ち間の冒険:アプリ模倣チャレンジの始まり!
- 3. PlaygroundにSwiftパッケージを追加したプロジェクトを爆速で作る
- 4. コードの品質を向上!SwiftLintとSwiftFormatの導入と結果比較
- 5. Swift Package Managerでライブラリーを導入してみる
- 6. cocoapods の pod install で `[!] Unable to find a specification for ‘ライブラリ名’` というエラーが出たら
- 7. 【Swift】ファイル操作を簡単にするための extension を作ってみた
- 8. iOSでもバックグラウンドでWeb Audio APIの音が鳴るようにする
- 9. iOS開発者向けの Developer Roadmaps が公開されてた
- 10. SwiftUI boldのModifierが冗長だった件について
- 11. 【Swift】ファイルやディレクトリのパスが長すぎていやだ – URL.shortPath()
- 12. SwiftUIのDatePicker(graphycal)をタップした時にサイズが変わってしまう問題の対処法と備忘録
- 13. 【Swift】fastlaneを使用してリリースまでのステップを自動化する
- 14. Apple Pencil Proのスクイーズに対応する
- 15. ビルドエラー解決方法 ‘DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead’
- 16. xcodeで開発したアプリの.appファイルの作成方法
- 17. お産合宿2024で発表した「マルチモーダル入力とOptical Flowによるリアルタイムスポーツ実況システム SportsVision」の開発レポート
- 18. Xcodeのクソデカ シミュレーターインストールをマシにする
- 19. configuration?.imageが効かない時の解決方法
- 20. iOS / macOSの構造体をUserDefaultsに保存する
Flutter案件待ち間の冒険:アプリ模倣チャレンジ – 第1章「時計」アプリ
## さあ、皆さん!最初の冒険の始まりです!
こんにちは、Flutterファンの皆さん!今回は、FlutterでiPhoneのデフォルト「時計」アプリを模倣するチャレンジの第一章をお届けします。どのように実装したか、皆さんと一緒に探求していきたいと思います!
## 進捗とスクリーンショット
まずは、iPhoneのデフォルト「時計」アプリの各機能のスクリーンショットをご覧ください。これらを参考にして、Flutterで再現していきます。| 世界時計 | ストップウォッチ | タイマー | アラーム |
|:-:|:-:|:-:|:-:|
| Flutter案件待ち間の冒険:アプリ模倣チャレンジの始まり!## はじめに
こんにちは、Flutterファンの皆さん!アプリ開発の魔法使いを目指して、今、私が取り組んでいるのはちょっと変わったチャレンジです。それは、既存のアプリをFlutterで再現してみるというもの。これは単なる時間つぶしではなく、Flutterの可能性を探求し、その過程を共有するための冒険です。どのようにアプリが構築されているかを探り、それを自分の手で再現してみる。面白そうじゃないですか?## チャレンジの背景
新しいプロジェクトのオファーを心待ちにしながら、技術の磨きをかけるのに最適な方法として、この「アプリ模倣チャレンジ」を始めました。選んだアプリはiPhoneの定番から、皆さんがお勧めするアプリまで様々。Flutterでどこまで再現できるか試してみます。## このチャレンジで期待すること
– **新しいトリックの発見**: 既存のアプリから新しいプログラミングの技術やアイディアを学び取ります。
– **コミュニティとの交流**: GitHubにコードをアップすることで、世界中のFlutter愛好家と知識を共有し、彼らからのインサイトを得ます。
– **創造的
PlaygroundにSwiftパッケージを追加したプロジェクトを爆速で作る
## はじめに
こんにちは。
最近、プロジェクトで新しいSwiftパッケージを試したいと思うことが増えてきました。
しかし、Xcodeを普段お使いの方には伝わるかと思うのですが、新しいパッケージを試すためだけの環境をすぐに用意するのは思ったよりも手間がかかりますよね。
とくにXcodeに慣れていない方(私もその一人です)にとっては、とりあえず試したい環境を作りたいだけなのに…と大変に感じると思います。そこで、色々調べてみたのですが、ArenaというCLIツールを使うと簡単に作成できることがわかりました。
あまり知られていないかもしれないので、今回はこのArenaを使ってPlaygroundにSwiftパッケージを追加したプロジェクトを爆速で作る方法を紹介します!:::note warn
本記事では以下の環境を想定しています– macOS Sonoma 14.3
– Xcode 15.2
:::## Arenaとは
https://github.com/finestructure/Arena
コードの品質を向上!SwiftLintとSwiftFormatの導入と結果比較
お疲れ様です。Chamujiです。
今回は***SwiftLint***と***SwiftFormat***の2点について調べた内容を書きたいと思います。そもそも***SwiftLint***と***SwiftFormat***ってなんだ?という方もいらっしゃいます。
それらを書く前にまずはコーディング規約というものについて説明をさせてください。# 1. コーディング規約とは
– 複数人でプログラミングをする際、***全員で統一したソースコードを書くために定めるルール***です。
– プログラムの作り方はエンジニアごとに異なるため、他のエンジニアが書いたコードを理解するのは難しいです。
– その結果以下のような**問題**が起こります。
– **可読性低下により新規メンバーが理解できないため属人化・学習コストが高くなる**
– **保守性の低下**
– **潜在的なバグの原因**
– **チーム全体の生産性の低下**これら問題を解決するために、**コーディング規約を設けることが重要**になります。
## 1-1.コーディング良い・悪い例
良
Swift Package Managerでライブラリーを導入してみる
普段はAndroidエンジニアをしているのですが、Xcodeを久々に使用し、ライブラリーの導入について調べていたところ`Swift Package Manager`というのを知りました。
Xcodeにライブラリーを導入するために`CocoaPods`を使用していましたが、AndroidStudioと比べて、少しハードルがあると感じてました。
ですが`Swift Package Manager`では簡単にライブラリーを導入が可能になりました。https://www.swift.org/documentation/package-manager/
# 導入方法
今回は導入方法のみです。`PROJECT → Packge Dependencies → + `のアイコンをクリック
![スクリーンショット 2024-06-09 19.22.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274615/fc7003dc-ec66-8338-6ffa-89a8d342535d.png)
導
cocoapods の pod install で `[!] Unable to find a specification for ‘ライブラリ名’` というエラーが出たら
## 落ち着いて
ライブラリ名のスペルミスや TYPO の可能性がないか、確認しましょう(私はこれが一番多い)。
## そうでなければ
そうでないことがハッキリしたら、以下を参照しましょう。
– [pod install で Unable to find a specification エラーがでたら #iOS – Qiita](https://qiita.com/amazedkoumei@github/items/fef8f9b04930927f4069)
– [cocoapodsで \[!\] Unable to find a specification for `ライブラリ名`のとき #iOS – Qiita](https://qiita.com/burakon/items/716174ee003ea48373ed)
– [ios – Unable to find a specification in CocoaPods – Stack Overflow](https://stackoverflow.com/questions/25913733/unable-to-fin
【Swift】ファイル操作を簡単にするための extension を作ってみた
【Swift】ファイルやディレクトリ操作するための extension をまずは作った
👉 https://t.co/Z2zVpDvLkH#プログラミング #Swift #ios— ch
iOSでもバックグラウンドでWeb Audio APIの音が鳴るようにする
## 問題提起
iPhone、iPadなどに搭載されているmobile safariの仕様により、WebAudioAPI経由で出した音はホーム画面に戻った際に中断されます。
もう一度safariを開いた際に音は中断したところから再開されますが、以下のコードを記述すればバックグラウンドでも音が再生され続けます。## 解決策
“`javascript:解決策.js
/* let audioContext; */window.addEventListener(“visibilitychange”, () => {
if (document.visibilityState !== “hidden”) {
return;
}
audioContext.resume();
});
“`
もっといい方法があれば教えてください🙇♂️### 参考文献
https://developer.mozilla.org/ja/docs/Web/API/Document/visibilitychange_eventhttps://kimizuka.hat
iOS開発者向けの Developer Roadmaps が公開されてた
# これ
https://roadmap.sh/ios
# 追加されてる!
![スクリーンショット 2024-06-07 11.20.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281147/e7d7a9d1-2ec0-3dd4-4f02-7ff2eb666d9b.png)
https://roadmap.sh/
今までは同じモバイルアプリでもAndroidだけしかなかったりと、[実は長らく求められていた](https://github.com/kamranahmedse/developer-roadmap/issues/3280)
# デベロッパーロードマップとは?
開発者がその界隈を学ぶ際い体系的にどのスキル・技術を学ぶべきかを表したものです。
OSSでアクティブなもの。# あとがき
– iOSはSwiftUIが出てきたりして何からやればいいのか複雑だったので、他の人にとっても、個人的にもかなりありがたいのかなと思ってます。
– WWDC2024がいよいよ来週から!楽しみ
SwiftUI boldのModifierが冗長だった件について
# **背景**
今まで`Text`に対して、`.font(.system(size: ))`のModifierを付与しているときも`.bold()`のModifierを付与していました。
なんとなくFigmaのPluginsの SwiftUI Inspector使った時に、
`.font(.system(size: 14, weight: .bold))`を提案されました。1行で済むのか…
これは盲点でした。
# **Before**
“`swift
Text(“Hello World”)
.bold()
.font(.system(size: 16))
“`# **After**
“`swift
Text(“Hello World”)
.font(.system(size: 16, weight: .bold))
“`**Figma の SwiftUI Inspector**
【Swift】ファイルやディレクトリのパスが長すぎていやだ – URL.shortPath()長すぎですよね。
![sc 2024-06-07 at 1.17.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588914/f6804d4a-2f8b-563d-c262-090fc1a651df.png)
“`URL.shortPath()“` を使います。
“`swift
let documents = URL.documentsDirectoryprint(documents.shortPath())
// /HOME/Documents/print(
documents
.appending(component: “Documents and Settings/”)
.shortPath()
)
// /HOME/Documents/Documents%20and%20Settings/print(
documents
.appending(component: “Documents and Settings”, director
SwiftUIのDatePicker(graphycal)をタップした時にサイズが変わってしまう問題の対処法と備忘録
# **背景**
SwiftUIのDatePickerは何かと扱いが難しいと感じています。
例えば、DatePickerStyleのdefaultまたはcompactで表示されるselectionのラベルはカスタマイズができないようです。SwiftUIのDatePickerを扱ったことのある人であれば必ず通るのではないでしょうか?
本記事では、ラベルをカスタマイズする方法とその課題についても触れています。表題の事象にハマった人の一助となれば幸いです。
# **1. graphycalでタップした時にサイズが変わってしまう問題の対処法**
このような事象は許容できなくもないですが、できれば解決したいはずです。
以下のように.frame(width: 320)を追加することで回避できます。
widthを指定しなかったり
【Swift】fastlaneを使用してリリースまでのステップを自動化する
## はじめに
リリース作業で時間を取られたり手間がかかっているという問題を解決すべくリリース作業を自動化してみようと思います。導入から実行まで紹介します。## fastlaneとは
iOSやAndroidアプリのビルド、テスト、リリース作業を自動化するためのツールです。## 導入方法
### 1. fastlaneをインストール
https://docs.fastlane.tools/getting-started/ios/setup/
今回はHomebrewを使用してインストールします。
“`
brew install fastlane
“`### 2.ターミナルで追加対象のプロジェクトのディレクトリに移動し、initを実行します。
“`
cd /xxx_projectfastlane init
“`### 3. 質問にいくつか答えます
![インストール開始.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1201315/66f08aee-8c68-500f-910
Apple Pencil Proのスクイーズに対応する
# はじめに
[Apple Pencil Pro](https://www.apple.com/jp/shop/product/MX2D3ZA/A/apple-pencil-pro)が2024年5月に発売され、ペンの操作に新しいアクション: **スクイーズ** が追加されました。
スクイーズ(squeeze)とは、「強く押す」といった意味などがある単語です。Apple Pencil Pro対応の新しいAPI[^newapi]を使うことで、ペンをギュッと握ったときのアクションを実装することができます。本稿では、スクイーズの実装例を僕が個人開発している手書きノートアプリ[^bluesketch]から一部抜粋して紹介します。
# スクイーズ時のアクション
Apple Pencil Proをスクイーズしたときのアクションは 設定 > Apple Pencil で選択することができます。
![ApplePencilPro_settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73490/59
ビルドエラー解決方法 ‘DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead’
環境
Xcode15.0.2“`
‘DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead’
“`Xcodeのバージョンを上げてアプリをビルドする際に上記ビルドエラーが発生しましたのでメモ。
## 解決方法
ターミナルで対象アプリのディレクトリに移動します。
以下コマンドを実行します。CocoaPodsのバージョンを確認して、Homebrewでアップデートします。
“`
pod –version
brew upgrade cocoapods
pod –version
“`Podsディレクトリを削除して、再度pod installします。
“`
rm -rf Pods
pod install
“`## 参考
https://blog.landhighest.com/article/179
xcodeで開発したアプリの.appファイルの作成方法
**xcodeで開発したアプリの.appファイルの作成方法**
xcodeで開発したアプリの.appファイルの作成方法がわかりづらかったため手順をまとめる。
・目次
1.appファイルの作成
2.ファイルの拡張子の表示
3.zip化**1.appファイルの作成**
xcodeを選択し、画面上部のメニューバーからProduct-Buildを選択し実行。
![スクリーンショット 2024-06-05 22.56.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3476538/aa23612e-0fe2-725b-5b96-bd8bc42b0265.png)**2.ファイルの拡張子の表示**
Finderを選択し、画面上部のメニューバーからFinder-設定を開く。
「すべてのファイル拡張子を表示」にチェックをつける。
![スクリーンショット 2024-06-05 22.59.43.png](https://qiita-image-store.s3.ap-north
お産合宿2024で発表した「マルチモーダル入力とOptical Flowによるリアルタイムスポーツ実況システム SportsVision」の開発レポート
2024年5月30日から2日間、GMOペパボ恒例のお産合宿に参加しました。今年のテーマは「動画配信カルチャーにフィットしたアプローチをアウトプットする」でした。私はこのテーマに基づき、スポーツ実況を効率化し、魅力的な動画コンテンツを提供するツール「SportsVision」を開発しました。
![](https://cdn-images-1.medium.com/max/1600/1*eFPrEd0aD8tCvI1bFK6QmQ.png)
### お産合宿 2024とは
GMOペパボのお産合宿は、社員が新しい技術やアイデアを試す場として毎年開催されています。2024年のテーマは「動画配信カルチャーにフィットしたアプローチをアウトプットする」でした。このイベントには、多くの社員が参加し、各チームがテーマに基づいたアウトプットを行いました。
![](https://cdn-images-1.medium.com/max/1600/0*mSoDok5QFo6i0POm)
### 作ったもの
私は「マルチモーダル入力とOptical Flowによるリアルタイムスポーツ実況システム S
Xcodeのクソデカ シミュレーターインストールをマシにする
ニッポンニンゲンという動物は見栄を張ってクソ高いiPhoneを買うのが大好きです。そしてアップル社はApp Storeからの収益を手放さないためにウェブアプリの普及を妨害しています。するといつかはその圧力に屈してiOS用にアプリを作らないといけないことになります。
iOS用にアプリを開発するにあたって、しかたなくマッキントッシュのマシンを使わされることになりますが、残念ながらマッキントッシュは開発者向けマシンではないため、開発者のUXは軽視されています。今回はアップル社によるクソ開発者体験の1つである、Xcodeのシミュレーターのインストールをマシにする方法をまとめます。
まずXcodeがクソデカなのでクソみたいにインストールに時間を要しますが、さらに実際にiOS用にアプリを開発するためにはiOS用のシミュレーターをインストールしないといけません。しかしこのシミュレーターの追加パッケージの容量が7GB以上もあるため、安定したネットワーク回線がないとインストールに失敗します。しかもインストールに失敗すると途中からダウンロードを再開してくれません。何度も最初からやり直す必要があります。
configuration?.imageが効かない時の解決方法
## はじめに
以下Pixivさんのチュートリアルを行っているときにconfiguration?.imageが効かない時のケースに遭遇したのでメモhttps://pixiv.github.io/ios-tutorial/tutorials/tutorial/practice8/
## 解決方法
### UIButtonのtypeをcustomからsystemに変更
systemにすることで、ボタンがシステム標準の処理を受けるようになり、UIButton.Configurationを使用して画像を設定した際に正しく反映されるようになりました。UIButtonのtypeをcustomに設定していたことが原因でした。
## customのまま画像が切り替わるようにする解決方法
### setImage(_:for:)を使用する
“`swift
heartButton.setImage(UIImage(systemName: illust.isFavorited ? “heart.fill” : “heart”), for: .normal)
“`この方法でもボタン
iOS / macOSの構造体をUserDefaultsに保存する
データやパラメータをひとかたまりにした構造体(struct)を丸ごとUserDefaultsに保存し、アプリ起動時に読み出す必要が出てきました。
そのためには構造体の定義時、`Codable`に対応させる必要があります。
“`swift
struct CEngineParameter: Codable {
private var _parameterType = EngineType.water
public var isEngineEnable = true
public var differenceHeight = Float(5)
public var differenceWidth = 32
…
…
}
“`
このように構造体を定義すると、`Codable`に対応したイニシャライザの実装が求められます。
下記のように、対応したイニシャライザを記述します。
“`swift
init(from decoder: Decoder) throws {
let container = try decoder.conta