読者です 読者をやめる 読者になる 読者になる

酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOSシミュレータで磨りガラスが灰色で表示されてしまう

かなり昔のできごとで、ikatomoの開発途中で詰まったときの話です。はてなブログの下書きに残り続けていたので投稿しちゃいます。 すりガラスが灰色で表示されてしまう… フレンド詳細画面では名前の背景が磨りガラスになっていて、下方向にスクロールすると…

Share Extensionの実装でハマったところ

天どん v1.0の頃にいただいた「Safariからの共有したい」という要望に対応するためにShare Extensionを実装しました。ikatomoでToday Extensionの実装はしたことはありましたが、Share Extensionを実装するのは今回が初めてでした。 Share Extensionというの…

Mastodonにアップロードした写真のExif(特にGPS情報)は保持されてしまうのか?

結論から書くと「Mastodonにアップロードされた写真のExifは保持されず、アップロード時に削除される」です。少なくともデフォルト設定では。 「Tendon for Mastodon」で写真投稿機能を実装しようとしている時に、プライバシー保護のためにExif(GPS情報)を削…

戻るボタンをカスタマイズしているとUINavigationController#pushViewControllerで遷移しなくなる

数年前から開発しているアプリで謎の不具合が発生していました。「ときどきボタンを押してもフリーズしたようになって画面遷移しない」というものでした。 再現性がものすごく低くてほとんど発生しないことからスルーされてきました。つい先日、ほぼ100%再現…

(未解決)iOS 10.3.1にアップデートした一部の端末でIn-House/Ad-Hocバイナリがインストールできない

未解決案件。何かわかり次第、追記します。 環境について Xcode 8.3.1でビルドしたIn-House/Ad-Hocバイナリ アプリの配布場所は AWS S3に配置 (https) 現象について ビルドしたipaファイルとダウンロード用のplistをS3にアップロードしています。 ダウンロー…

ipaファイルを再署名(resign)する

現在出力しているipaファイルを新しいProvisioning Profileを使って再署名することができます。利用用途としては、新しいIPAファイルは作成したくないがProvisioning Profileが失効してしまったり対応するUDIDが増えた時に、Provisioning Profileのみを入れ…

Xcode 8.3.1でAutomatically manage signingが有効になっているプロジェクトの場合にipaファイルが出力できない

Xcode 8.3以降でAutomatically manage signingが有効になっているプロジェクトで、コマンドライン(xcodebuild)を使ってipaファイルを作成することができず、途中でビルドエラーが発生してしまう問題にぶち当たりました。 個人的な感想としては、Xcode 8.3でx…

iPhoneシミュレータが起動できなくなった

Xcode 8.3.1でiPhoneシミュレータを起動させようとすると、画面が真っ暗なまま下図のようなエラーダイアログが表示されました。 エラーメッセージの内容。 Unable to boot device because it cannot be located on disk. Use the device manager in Xcode or…

Xcode 8.3でxcrun PackageApplicationが使えなくなってしまったので対策しました

開発中のアプリはMac miniを使ってJenkinsでビルドしています。Xcode 8.3.1がリリースされたことだし、古いバージョンのXcodeを削除してXcode 8.3をインストールしました。Xcode 8.3.1をインストールしていないのは現時点でダウンロードサイトに登録されてい…

Swiftで角丸・背景透過・枠線のボタンを作る

メモするまでもないかもしれないけれど、こんな感じのボタンを作った。 Swiftで角丸背景透過枠線のみのボタンを作る カスタムviewを使った。 import UIKit class MyRoundButton : UIButton { override func awakeFromNib() { super.awakeFromNib() setTitleC…

iOSアプリでFirebase.Storageから画像をダウンロードする

前回の続きから。 let imageKey = "" let storageRef = FIRStorage.storage().reference(forURL: "gs://appname-xxx.appspot.com") let imageRef = storageRef.child(imageKey) imageRef.data(withMaxSize: 2 * 1024 * 1024, completion: { (data, error) in…

iOSアプリにFirebase.RemoteConfigを導入する

本記事ではiOSアプリにFirebase.RemoteConfigを導入した際にしたことを紹介します。メモなのでそのまま運用できないかもしれません。 たとえば、ユーザーにアップデートを促す際にアラートを表示させます。 アラートの表示条件としては、ウェブに置いている…

SwiftでRGBからHSVへ変換する

RGBの値をHSVの値に変換するためのコードを書きました。大昔にC#で書いた処理をSwiftに移植しました。 説明は上記の記事をご覧ください。以下、HSVクラスです。 class HSV { //色相 var hue: Double = 0 //彩度 var saturation: Double = 0 //明度 var value…

Pokétomoで稀にカイロスがキャタピーと誤認識されてしまう問題

Pokémon GO用のポケモンの個体値を計算するアプリを作っています。 (公開停止しました) Pokétomoではスクリーンショットを解析して個体値を求めるのですが、今回稀にカイロスがキャタピーと誤認識されてしまう問題についてメモしておきたいと思います。 個体…

iPhone 4sだとCIDetectorが使えない

iPhone 4sだとCIDetectorが使えません。APIとしては存在しているのですが、detector.featuresInImage(img)で常にnilが返されます。 少し悩んだのですが、フォーラムに同じ問題で悩んでいる方がいました。 CIDetector doesn’t work for QR-code detection o..…

Androidアプリのビルドで「Unsupported major.minor version 52.0」のビルドエラーが発生する

Jenkinsを使ってアプリをビルドをしているのですが、この2ヶ月間少し毛色の違うプロジェクトをやっていたこともあって、ビルドサーバーのジョブは増えていませんでした。 久しぶりにAndroidアプリのビルドジョブを追加すると、見たことのないタイプのエラー…

MacでiOSとAndroid用のアイコンを1024x1024のストア申請用の画像からスクリプトで一気に作成する

とあるプロジェクトでiOS/Androidそれぞれに対応したアプリを開発しているのですが、アイコン用にストア申請用の1024x1024の画像をいただきました。 たかだか十数枚なのでペイントツールを使って1枚1枚手作業で縮小しても構わなかったのですが、微調整が入る…

Xcode 7でビルドしたアプリをApplication Loaderを使って申請するとInvalid Swift Supportが発生する

Jenkinsからxcodebuildを使ってipaファイルを生成します。Application Loaderを使ってipaファイルをアップロードするとInvalid Swift Supportが発生したとメールが送られてきます。 Appleから送られてくるメール Application Loaderを使ってアップロードする…

iOS 9でHeiti TC/SCが使えなくなっている

すこし前にHeiti SCを指定しているはずなのに意図通りフォントが表示されていないことがありました。調べてみたらiOS 9ではHeiti TC/SCが使えなくなっていることがわかりました。 フォント名 Heiti TC STHeitiTC-Light STHeitiTC-Medium Heiti SC STHeitiSC-…

SwiftでToday Extensionのデバイスの向きを判定する

少し前のエントリ「SwiftでToday Extensionの高さをUITableViewの高さに合わせる」で、Widgetの高さの上限値は「アプリ名のセクションを含めてWidgetが1画面で収まる高さ」と書いておきながら、デバイスを横にした時の処理を忘れていました。 下図は、現在開…

SwiftでUIColorの色を一段階暗くする

// 一段階暗くする var color: UIColor = UIColor.redColor() var hue : CGFloat = 0 var saturation : CGFloat = 0 var brightness : CGFloat = 0 var alpha : CGFloat = 0 if color.getHue(&hue, saturation: &saturation, brightness: &brightness, alpha…

Androidでヘッドセット(イヤホン)の接続状態の変化を検出する

Androidでヘッドセット(イヤホン)の接続状態が変わったイベントを取得する必要がでてきました。ヘッドセットの状態変更関係を検出する用途では2つのIntentが存在しています。 Intent.ACTION_HEADSET_PLUGとAudioManager.ACTION_AUDIO_BECOMING_NOISYです。 I…

iOSアプリ開発の記事一覧

iOSアプリケーションの開発Tipsを紹介しています。 目次 目次 導入 基本的なプログラミング 文字列操作 リフレクション View 拡張機能・エクステンション マルチメディア 画像処理 カメラ ネットワーク SDWebImage デバイス/センサー システム マルチスレッ…

SwiftでNSAttributedStringを使って文字列を装飾する(UILabelに画像を表示する)

直近でやっていたプロジェクトでNSAttributedStringに関する知識が少なくて苦労したので忘れないようにメモしておきます。 NSAttributedStringに関してはすでに色んなブログやサイトで紹介されているのでご存知の方も多いかもしれませんが文字列を装飾してく…

Swiftでシングルタップとダブルタップとロングプレス(ホールド)に同時に対応する

iOS 3.2からUIGestureRecognizerが追加されてからよく使っていたのですが、シングルタップとダブルタップ、ホールド(ロングプレス)に同時に対応します。 シングルタップとダブルタップはUITapGestureRecognizerクラスで対応することができます。ホールド(長…

Xcodeでのビルドを自動化するxcodebuildコマンドとIPAファイルを作成してiTunes Connect(Testflight)に投げる方法

2014年にAppleがTestflightを買収してから数年経ちました。Androidのサポートが打ち切られたりして対応に追われたこともありましたが、数年経ち公式にiTunes Connectのアプリ申請プロセスに組み込まれるようになりました。 iOS 8を公開した時期から1つのバー…

Firefox OSスマートフォン「Fx0」の標準の地図アプリについて

まだ発売されていませんが田中プロのざっくばらんなトークでFirefox OSスマートフォン「Fx0」が発表されました。KDDIにはこれからも他社がやっていないことに挑戦してもらうためにもFx0には売れてほしいですね。 Flameを買えなかったのもあって、Firefox OS…

ASP.NET MVCでホスト型のFirefox OS アプリを作ったときに「.webapp」ファイルにアクセスできない

ASP.NET MVCでホスト型のFirefox OS アプリを作ったときに「.webapp」ファイルにアクセスできなくって困ったので、備忘録代わりに残しておきます。 まずは普通にプロジェクトへ.webappファイルを追加します。ソリューションエクスプローラーからプロジェクト…

Firefox OSで動くパッケージ型のHello worldアプリを作ってみる

Firefox OSアプリはHTML5+JavaScriptで構築することができるから資産の活用が容易!と聞くのですが、その方面に触れたことがない僕としては「ア、ハイ…」となりました。このままでは何もやらずに終わってしまいそうなのです。 最小構成であるHello worldアプリを…

Firefox OSスマートフォン(Firefox Phone)のシミュレータをアプリマネージャーで試す

前回「Firefox OSスマートフォン(Firefox Phone)のシミュレータをインストールする - 酢ろぐ!」を紹介しました。 @masawada氏にFirefox OS シミュレータは古くってアプリマネージャーを使った方が良いというのと、Auroraではなくて現行バージョンのFirefox…

Firefox OSスマートフォン(Firefox Phone)のシミュレータをインストールする

KDDIからFirefox OS スマートフォンがクリスマスシーズンに発売されるかも…というツイートがTLに流れてきました。 auのFirefox OS スマートフォンはXmasに発売。社長動画にモザイクで新端末披露(更新) - Engadget Japanese 前々から興味はあったものの実際…

ASP.NET MVC 4でjQueryを使って動的に部分ビューを更新させる

今日、タイムラインを見ていたら七夕ということもあってか、Twitterで短冊を作って遊んでる方が沢山いました。だるさんがWebMatrixを使って短冊ヘルパーを作っていたので、負けじとASP.NET MVCを使ってかなり雑な短冊メーカーを作りました。 短冊メーカー Ta…

SQLを使って日別で集計する

記事が投稿された日付ごとのデータを収集したいと考えていました。データベースではdatetime型で保存していたため、投稿日時でgruop byしてしまうと下図のように時間まで含めてグループ化されてしまいました。 select PublishTime as "date", count(ArticleI…

WindowsでRe:VIEWの「review-pdfmaker」を実行すると稀にPDFが尻切れトンボになる

Jenkins+ReVIEWの構成で原稿を書いています。 ReVIEWの review-pdfmaker で原稿の途中からPDFに出力されなくなるトラブルが発生しました。ログを確認すると以下のようなエラーが発生していました。 ! LaTeX Error: Cannot determine size of graphic in ./im…

Re:VIEW記法で他のreファイルの章番号や章題(タイトル)に置換する

Re:VIEW記法で引用を挿入する方法を紹介します。ReVIEW についてはこちらの記事をご覧ください。 他のreファイルの章番号や章題(タイトル)に置換する ohba.re の中身が下記のような文章だとします。 = 大場会の現状 大場さんの特徴を1つ挙げてください』とい…

Re:VIEWを使っていて ==と===を続けて書いたら===の節が出力されなかった といった問題に遭遇したら

Re:VIEWを使って執筆していますが、「==と===を続けて書いたら===の節が出力されなかった」といった問題に遭遇したらどうしましょうか。 review-pdfmakerでPDFファイルが生成されないトラブルが発生しました。下記のように == と === を下記のように == ほげ…

Re:VIEWを使っていて //TODO と書いたところワーニング表示された といった問題に遭遇したら

Re:VIEWを使って執筆していますが、「//TODO と書いたところワーニング表示された」といった問題に遭遇したらどうしましょうか。 ReVIEWのコードを見ていないので断言はできませんが、おそらくReVIEW記法の都合上、文中に記載する // に続くキーワードは、Re…

MS-DOSスタイルのパスが原因でCygwinでワーニングが発生する(Windows環境)

Re:VIEWを使っていると、おそらく以下のようなようなワーニングをCygwinが吐くかもしれません。 Re:VIEW についてはこちらの記事をご覧ください。 cygwin warning: MS-DOS style path detected: C:/tools/review/bin/review-pdfmaker Preferred POSIX equiva…

Re:VIEWを使っていて ○章以降の記事が出力されていない といった問題に遭遇したら

Re:VIEWを使って執筆しているが「○章以降の記事が出力されていない」といった問題に遭遇したらどうしましょうか。 ファイル分割しているプロジェクトの場合(例えば全10章でreファイルが10つ存在する場合)、6章目のreファイルでReVIEW記法等に問題があり出力…

Re:VIEWを使って電子書籍を執筆する(執筆Tipsのまとめ)

Re:VIEWとは自動組版をおこなってくれる執筆支援ツールです。Re:VIEW(旧:ReVIEW)共にキーワードがあまりにも一般的すぎて、公式にkmuto ReVIEWで検索してくださいとつぶやかれていました。 また、Re:VIEWの開発環境がMacということもあり、Windowsへの導入…

Re:VIEWで本文のフォントの大きさを変更する

ReVIEWにて出力される本文のフォントの大きさを変更する方法をご紹介します。 kmuto ReVIEW についてはこちらの記事をご覧ください。 PDFの場合 ここでは本文のフォントサイズを12ptにする場合の方法をご紹介します。 review-pdfmakerの引数に指定するyamlフ…

Windows Mobile( .NET Compact Framework)でTwitter APIを使ってPOSTで投稿する

Twitter APIを使ってPost出来ないという声を聞いたので、自前のTwitterクライアントで使っているコードを貼り付けておきますね。Windows Mobile(.NET compact Framwork)でも使えるコードです。 ''' <summary> ''' Twitterへ投稿する ''' </summary> ''' <param name="status">Twitterへ投稿する文字</param>…

Re:VIEW記法で表を挿入する

Re:VIEW記法で表を挿入する方法を紹介します。ReVIEW についてはこちらの記事をご覧ください。 表 「ReVIEW フォーマットのページ」にてReVIEW記法が紹介されています。以下に引用の記入方法を引用します。 表は //table[識別子][キャプション]{ 〜 //} です…

Re:VIEW記法で引用を挿入する

Re:VIEW記法で引用を挿入する方法を紹介します。ReVIEW についてはこちらの記事をご覧ください。 引用 ここでReVIEW記法が紹介されています。以下に引用の記入方法を引用します。 引用は「//quote{ 〜 //}」を使って記述します。引用内でもインライン命令は…

Re:VIEW記法でリスト(ソースコード)を挿入する

ReVIEW記法でリスト(ソースコード)を挿入する方法を紹介します。 ReVIEW についてはこちらの記事をご覧ください。 連番付きリスト 「ReVIEW フォーマットのページ」にてReVIEW記法が紹介されています。以下に連番付きリストの記入方法を引用します。 ソース…

Re:VIEW記法でコラムを挿入する

Re:VIEW記法でコラムを挿入する方法を紹介します。 ReVIEW についてはこちらの記事をご覧ください。 コラム表示 「ReVIEW フォーマットのページ」にてReVIEW記法が紹介されています。以下にコラムの記入方法を引用します。 節や項の見出しに [column] を追加…

執筆支援ツール「Re:VIEW」をWindowsにインストール書籍制作をCIする

ここでのRe:VIEWは「kmuto ReVIEW」で出てくる出版制作ツール「ReVIEW」を指します。各ツールは以下のフォルダにインストールしています。 Windows環境では、TeXのインストールや環境変数の追加など、若干環境構築が面倒くさいですが、以下のページで環境構…

Windows Mobile(.NET Compact Framework)でSIP表示時にコントロールのサイズを変更して、SIPと干渉しないようにする

Windows Mobile 6.5 Professionalエディションが搭載されたWindows phoneでは、ハードキーボードを搭載しない端末が増えています。その手の端末では、文字の入力をする為にソフトキーボード(SIP:Soft Input Panel)を使用します。 ソフトキーボードを有効に…

Windows Mobile(.NET Compact Framework)でWinMsg(Windows メッセージ)を拾う

.NET Compact Frameworkは、デスクトップ版.NET Frameworkのサブセットです。省容量のためイベントやプロパティ類が大幅にカットされています。 よって拾えるイベントがものすごく少ないので、Windows Messageによる処理を行なえるようにしました。 一般的な…

Windows Mobile(.NET Compact Framework)でSMSを送信する

本記事では、Windows Mobile上の.NET Compact FrameworkでShort Message Service (SMS)のメッセージを送信する方法をご紹介します。 Microsoft.WindowsMobile.PocketOutlook 名前空間の SmsMessage クラスを利用する事で、簡単にSMSメッセージを送信する事が…