しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

SwiftUIを触ってみる

SwiftUIで簡単なUIを作ってみました。 まずはXcode11で新規プロジェクトを作成します。 テンプレートは「Single View App」を選びました。 プロジェクト構成は以下のようになっています。 Xcode11からはSceneDelegate.swiftというファイルが追加されています…

Googleのデータポータル(旧DataStudio)でアプリの新規ユーザーをグラフ化

先日の記事でFirebaseのデータをBigQueryに追加しました。 今度はBigQueryのデータをデータポータルというツールを使ってグラフ化してみようと思います。 www.cl9.info データポータルとは データポータルとはGoogleの提供しているデータをビジュアライズ化…

FirebaseのデータをBigQueryに入れて分析する

Firebase単体だと見づらいデータが多いのでBigQueryに入れて分析してみました。 今回はFirebaseとBigQueryを連携して新規ユーザー数を取得するところまでやります。 ドキュメントは下URLになります。 Firebase 向け Google アナリティクスのデータを BigQuer…

iOSでアプリ内課金したのに反映されないという問い合わせが来た時の対応策

タイトルのような問題が起きたので、その原因と対策について調べてみました。 起こったこと iOSでアプリ内課金したのに反映されない もう一度購入しようとすると、「このアイテムは購入済みです。無料で再入手しますか?」と出て来るが、「OK」を押しても反映…

docker runで起動したコンテナを削除する

docker runで生成したコンテナの削除方法です。 まずは下コマンドでコンテナ一覧を表示します。 -aオプションを付けることで起動中でないコンテナも表示する事ができます。 docker ps -a 下のようにコンテナ一覧が出てきます。 最後にコンテナIDを指定してrm…

MacにDockerをインストールして起動する

今更ですがDockerを触ってみました。 Dockerのインストール Mac版のインストールはdocker storeから行います。 ページ右上の「Please Login To Download」ボタンからログインしてDockerをインストールします。 Docker Store DockerでHello World インストー…

imgToAsciiでAAを自動生成

imgToAsciiというJSのライブラリで画像をAA化してみました。 github.com 使い方 ライブラリはimgToAscii.jsの1ファイルのみで、100行くらいのシンプルなライブラリです。 <script src="./imgToAscii.js"></script> 下のように画像を指定してdisplayメソッドを呼び出すだけでAAを表示する事ができます…

Invalid Document Configuration. という警告が出たときの対処法

Xcodeで下のような警告が出たので調べてみました。 WARNING ITMS-90737: "Invalid Document Configuration. Document Based Apps should support either the Document Browser (UISupportsDocumentBrowser = YES) or implement Open In Place (LSSupportsOpe…

iOS12のショートカット アプリを使ってみる

iOS12のショートカットというアプリを使ってみました。 ショートカットとは 様々なiPhone上の行動を自動化できるアプリです。 「特定ワードをTwitterでつぶやく」「クリップボードの内容をメモ帳に入力する」など色々なことができます。 もともとはWorkflow…

Xcode10のStoryboardでUILabelやUIButtonを配置する方法とショートカット

Xcode10からオブジェクトを選ぶ場所が大きく変わってたのでメモ。 オブジェクトを選ぶ場合、Xcode上部の丸いアイコンをクリックします。 クリックするとオブジェクト一覧が出てくるので、ここからオブジェクトを選択します。 メニューから選択することもでき…

ロゴ生成サービス、Free Logo Generator Onlineを試してみる

こちらの記事で紹介されていたサービスを試してみました。 note.mu 今回は自分の運営している「体重管理アプリ」のロゴを作ってみます。 体重管理Fittで人気の体重管理ダイエットをhiroki sugimotoヘルスケア/フィットネス無料 使い方 TOPページは下の通り…

【Swift】VoiceOver対応について調べてみる

VoiceOverについて調べてまとめてみました。 VoiceOver(ボイスオーバー)とは VoiceOverとはiPhoneの視覚障害者の方向けの機能です。 画面を音声で読み上げることで画面が見えなくてもiPhoneを使うことができます。 VoiceOverをONにするとタップしたボタンやC…

RailsとCarrierWaveで画像アップロードを実装する

CarrierWaveというGemを使って画像のアップロードを実装しました。 今回はUserモデルのimageというプロパティーに画像をセットする実装をします。 github.com CarrierWaveのインストール CarrierWaveを入れる前にImageMagickをインストールします。 Macの場…

【iOS11】設定アプリ内にある自分のアプリの設定画面へ遷移する

iPhoneの設定アプリには、下のように自分のアプリの設定ページが用意されています。 今回はここへ直接遷移する方法について調べました。 自分のアプリの設定画面への遷移方法 遷移方法は下の通りです。 if let url = URL(string: UIApplicationOpenSettingsU…

Railsでcrontabを管理できるwheneverというGemを使ってみる

Railsを使っていると「日時バッチ」「1時間に一度の処理」など定期的に実行したいタスクが出てきます。 管理方法としては普通にcrontabに書き込んだりJenkinsなどを使ってそれらのタスクを管理する方法があります。 しかし可能ならRailsプロジェクト上で実行…

「アプリ開発のためのUX講座」まとめ

「アプリ開発のためのUX講座」という動画講座がとても面白かったので、学んだ事や感想をまとめてみました。 動画はSchooの有料会員限定ですが、資料は下URLから見る事ができます。 schoo.jp そもそもUXってなにか? 授業で初めて知ったんですが、実はUXはISO…

はてなブログの過去記事にカテゴリーを付ける

はてなブログの過去記事にカテゴリーが全然付いてなかったので付ける事にしました。 カテゴリーなしは百記事以上あるので少しでも楽になるように工夫しつつ実施しました。 まずはエントリー一覧ページに移動します。 https://blog.hatena.ne.jp/llcc/llcc.ha…

LAContextのbiometryTypeがnoneになる問題

iOS

LAContextクラスのbiometryTypeプロパティーを使うと端末が指紋認証に対応しているか顔認証(FaceID)に対応しているかを判定する事ができます。 LAContext().biometryType == .faceID LAContext().biometryType == .touchID LAContextのbiometryTypeで起こっ…

UnityでスクリプトからTexture2Dを読み込む(C#)

UnityでSpriteのTextureをスクリプトで動的に変更する方法です。 Textureの配置場所 読み取りたいTextureはResourcesフォルダに入れる必要があります。 詳しくは下ページのResourcesに載っていました。 docs.unity3d.com Textureの読み込み Textureの読み込…

はてなブログのSSL対応でカスタムシェアボタンが動かなくなった時の対策

タイトルの通り、はてなブログのSSL化でカスタムシェアボタンが動かなくなったので対策を書いていきます。 利用させて頂いたカスタムシェアボタンは下サイトのものです。 www.yukihy.com SSL化で発生した問題 下のようにはてブ数とFacebookのシェア数がずっ…

【アプリ開発】AppLaunchPadでアプリのスクショを作ってみる

iOS

AppLaunchPadというWEBサービスを試してみました。 theapplaunchpad.com これはAppStoreやGooglePlayに掲載するおしゃれなスクリーンショットを簡単に作れるものです。 有料限定のテンプレートも多いのですが、下のような画面を簡単に作る事ができます。 App…

UITableViewのprefetchDataSourceについて調べてみる

iOS

iOS10からUITableViewのprefetchDataSourceというプロパティーが追加されてたので調べてみました。 prefetchDataSourceとは prefetchDataSourceはUITableViewの高速化に使うプロパティーです。 下のようにUITableViewDataSourcePrefetchingに準拠したオブジ…

NokogiriのインストールでERROR: cannot discover where libxml2 is located on your system. please make sure `pkg-config` is installed.というエラーが出た時の対策

Nokogiriをインストール中に表題のエラーが出た時の対処法です。 メッセージは下の通りです。 current directory: /Users/xxxxxx/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/nokogiri-1.8.3/ext/nokogiri /Users/xxxxxx/.rbenv/versions/2.5.1/bin/rub…

【Swift】Dateの日付のみを扱う方法を考える

iOS

iOSアプリ開発ではDate型があるのですが、これは日付型のみを扱う事ができません。 そのため「RealmなどのDBから特定日付のレコードを取り出したい」という時に開始日と終了日を指定する必要があって結構めんどくさいです。 class History: Object { @objc d…

DOFavoriteButtonでアニメーション付きお気に入りボタンを実装する

iOS

DOFavoriteButtonというアニメーション付きのボタンを実装できるライブラリを試してみました。 github.com DOFavoriteButtonのインストール CocoaPodsでインストールしました。 本家はSwift4に対応してないようなので、fumiyasacさんのSwift4対応フォークリ…

【iOS】CMSampleBufferGetImageBufferがnilを返す時の対処法

iOS

AVFoundationを使うと端末のカメラで撮っている映像をUIImageとして取得する事ができます。 その際にCMSampleBufferGetImageBufferというメソッドを使うんですが、これがnilを返した時の対処法です。 func captureOutput(_ output: AVCaptureOutput, didDrop…

C#のプロパティーの書き方

基本的なところですがC#のプロパティーの書き方について調べました。 プロパティーは下のように2種類の書き方があります。 class MyClass { public int myProperty1 = 0; public int myProperty2 { get { return 0; } set { int myValue = value; } } } それ…

UnityのUpdateとFixedUpdateの違いを確認する

Unityのフレーム毎に呼ばれる関数はUpdateとFixedUpdateがあります。 今回はこの2つの違いを確かめてみます。 UpdateとFixedUpdateの違い 2つはFixedUpdateは1秒間あたりの呼び出し回数が固定、Updateは端末の状態によって変わることがあるという違いがあり…

LICEcap for Macで画面が真っ黒になるのでGIPHYに乗り換えた

LICEcapで作られるGifが下のように真っ黒になる現象に遭遇しました。 再インストールしても直らないのでGIPHYというアプリに乗り換えました。 GIPHY Capture. The GIF MakerGiphy, Inc.VideoFree GIPHYとは GIPHYはおもしろGifをアップロードするサービスで…

【C#】UnityのEnumを変数化した時に is less accessible than field エラーが出たとき対策

下のようなコードでis less accessible than fieldエラーで出た時の対処法です。 enum GameType { Type1, Type2 }; public class MyScript : MonoBehaviour { public static GameType gameType = GameType.Type1; } enumがpublicでないことが原因だったので…