ttlog

日々の開発で得た知見の技術メモ。モバイルアプリネタが多いです。

大量のファイルをタイムスタンプの日付毎にフォルダ分け

大量の写真ファイルを整理したかったのでRubyでサクッと書き殴り。 とはいえ、また使いそうな気もするのでメモしておきます。 require 'fileutils' Dir.chdir("xxx") # ファイルが入っているディレクトリ Dir.each_child(".") { |file| timestamp = File.mti…

Firebaseのプロジェクト上限数の追加リクエストをしてみました

最近は技術検証等でFirebaseプロジェクトを作ることが多く、上限数に引っかかってしまいました。 不要なプロジェクトを削除しても30日間は復旧可能な論理削除のような状態で残っているようで、削除後もプロジェクト追加が出来なかったので、以下のページから…

Firebaseエミュレータが起動しない

以前、Zennのスクラップ機能にメモを残しながらFlutter/Firebaseアプリを作成していましたが約1年が経過。 長らくFlutter/Firebaseから離れてしまっていましたが再開。 そしてFirebaseエミュレータを起動しようとしたら↓のようなエラーが。 ⚠ hosting: Port …

Azure DevOps(Boards)のWork ItemをOrganization間で移行する

はじめに あまり無いことだとは思いますが、Azure DevOpsの情報を別Organization(企業)へ移行する必要が生じました。 Azure Reposのソースコードの移行はGitなので簡単に出来たのですが、Azure BoardsのWork Itemについてはなかなか情報が見つかりませんでし…

iOS 端末のモデル識別子を取得する

開発中のアプリで端末の機種を判定したかったのですが、 UIDevice.current.model は iPhone や iPod touch としか返さないため、もう少し詳細な情報を取得する方法を調べました。 今回のコードにより iPhone12,3 等の形式の識別子を取得することが出来ます。…

Expressサーバ上にGatsbyサイトをデプロイしてみた

最近Gatsbyをチマチマ触っているので、Expressサーバ上に載せてみました。 基本的にはExpressの静的ファイル配布機能を使用しているだけですが。 ※モバイル畑なので、Web関連はあまり詳しくありません。 プロジェクトの作成 $ gatsby new foo $ cd foo $ npm…

設定アプリ(Settings Bundle)にUUIDを表示する方法

たまにですが、設定アプリに「ユーザーID」といった項目名でUUIDを表示しているアプリを見かけます。 開発中のアプリでも端末識別用のUUIDを設定アプリに表示する必要があったため方法を調べてみたのですが、 予め決まっている固定値を表示する方法がほとん…

TestFlightで「輸出コンプライアンスがありません」を表示されないようにする方法

TestFlightにアプリをアップロードした際に表示されるこの質問、fastlaneでアップロードする際にも表示され、自動でアプリが配信されなくなってしまうのですが、予めプロジェクト設定を追加しておくことで表示されないようにすることが可能です。 設定方法 I…

SwiftUIで共有メニューを表示する

アプリのコンテンツをメールやSNS等の外部サービスに渡す共有メニューをSwiftUIで表示する方法です。 共有メニュー表示用Viewの定義 UIKitではUIActivityViewControllerを使用して表示するこの共有メニューですが、現状SwiftUIで特に専用のViewがある訳では…

iOSアプリでSystem Imageを使用する(iOS13以降)

iOS13ではSystem ImageとしてSF Symbolsというものが追加され、UIKitのUIImageやSwiftUIのImageから使用出来るようになりました。 使用方法 それぞれ、以下のようにして名前を指定して表示します。 UIKit(UIImage) UIImage(systemName: "xxx") SwiftUI(Image…

UINavigationBarの透明化

まずは透明化/解除のExtensionを作成 public extension UINavigationBar { /// ナビゲーションバーを透明化する func enableTransparency() { setBackgroundImage(UIImage(), for: .default) shadowImage = UIImage() } /// ナビゲーションバーを透明化を解…

256bit乱数を生成する方法

256bitに限った話ではないのですが、大きめの乱数を生成する方法です。 乱数の生成は以下のように様々な方法がありますが、 RandomNumberGenerator arc4random() arc4random_uniform() rand() random() いずれにしても最大で64bitまでしか生成出来ないようで…

UITextViewのパディングを削除する

UITextViewにはデフォルトで若干のパディングが含まれています。このままだとレイアウトに支障をきたす場合もあるので、パディングを削除する方法を記載します。 コードで削除する 以下のようなUITextViewを定義したとして、 @IBOutlet weak var textView: U…

Flutterで画面遷移

Flutterにおける画面遷移の基本です。 以下の2通りの遷移方法があるようです。 直接画面を生成して遷移 ルーティングを定義して名前で遷移 ここで紹介する方法は、iOS的にはNavigationスタイル(Push/Pop)の画面遷移になります。 概要 Navigatorクラスを使用…

GitのリモートURLをクリップボードにコピーする(macOS Only)

リモートリポジトリをcloneする際、既にある別のローカルリポジトリからリモートURLをコピー&ペーストして末尾を少し書き換えてcloneするということをよくやるのですが、 git remote -vでURL表示 マウスで選択して⌘+cでコピー とやっていたので地味に面倒で…

fastlaneでAdHoc配布用ipaの作成

環境 macOS: 10.14.2(Mojave) Xcode: 10.1(10B61) fastlane: 2.112.0 Ruby: 2.5.3 laneの定義 gymアクション(もしくはbuild_ios_appアクション)でビルドやパッケージングに関する処理が出来ます。lane名はここではadhocとします。 gym - fastlane docs また…

コマンドラインからのiOS Simulator画面のスクリーンショット/録画

simctlコマンドを使用します。 スクリーンショット $ xcrun simctl io booted screenshot xxx.png 画面の録画 $ xcrun simctl io booted recordVideo xxx.mov Ctrl+cで録画終了。 デバイスの指定 上記コマンド中のbootedの部分は起動中のデバイスを表す特殊…

Xcode10のちょっとした変更点: StoryboardからOutlet/Actionを作成する際のデフォルトConnection

Xcode10でStoryboard上のUIButtonからコード上にConnection(Outlet/Action)を作成する際、挿入位置によってデフォルトで選択済のConnectionが変わるようになっていました。(以前は"Outlet"固定だったかと思います) 具体的には、コードのViewControllerクラス…

Androidエミュレータで動作させるSystem Imageの違い

Android開発時にインストールするエミュレータのSystem Imageの違い、特に「Google APIs」と「Google Play」の違いがよく分かっていなかったのでメモしておきます。 Google Play System Image Google Play Storeがインストールされており、実機と同じように…

adb shellでアプリのプライベートデータを確認する方法

備忘録です。 アプリのプライベートデータは(確認した環境では)/data/data/[アプリのパッケージ名]内にあるようですが、通常のadb shellだけだとパーミッションエラーで中身を確認することが出来ませんでした。 手順 adb shell でシェルを起動し、 run-as […

Android(Xamarin) 文字列の横幅取得方法

Androidにおける文字列の横幅(dp)を取得する方法のメモです。 親Layoutの横幅と比較して、1行に何文字表示出来るか等の計算が出来たりします。 現在Xamarinで開発中のため、コードもXamarin(C#)になってしまっていますが、Android Nativeでも書き方はそう変…

iOS 文字列のサイズ取得方法

iOSにおける文字列のサイズ取得方法のメモです。 Viewの横幅と比較して、1行に何文字表示出来るか等の計算が出来たりします。 文字列のサイズ取得 NSStringクラスにサイズが取得出来るメソッドがあるので、こちらを使います。 size(withAttributes:) UIFont…

iOS 連絡先一覧の取得

Contacts Frameworkを使用し、標準の連絡先アプリに登録されている連絡先一覧を取得する方法についてまとめてみます。 Contacts Framework公式ページ サンプルコードは以下に置いています。 https://github.com/kurozu10344/ContactsSample 検証環境 iOS 11 …

ファイル内の文字列を置換して上書き保存

便利でたまに使いたくなるのですが、すぐ忘れてしまうので備忘録です。 Perlのワンライナーを使用します。 環境 OS version macOS 10.13.5 (High Sierra) Perl version $ perl -v This is perl 5, version 26, subversion 2 (v5.26.2) built for darwin-thre…

PushでPop(風アニメーション)する

UINavigationControllerを使用したPush遷移の際のアニメーションをPop風(左から右へ)にする必要があったので、実現方法についてメモしておきます。 検証環境 Xcode9.2 iOS11 Simulator 大まかな流れ Animatorの作成(UIViewControllerAnimatedTransitioningプ…