しめ鯖日記

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

Sequenceプロトコルを使ってみる

Sequenceというプロトコルを試してみました。 Sequenceは配列に使われているプロトコルで、準拠することでforEachやmapなどのメソッドを使うことができます。 実装例は下の通りです。 deferを使ってreturnの後にcountを-1しています。 これで10から1までを順…

Swiftで文字列を一定の長さ毎に区切って配列にする方法

下のように文字を一定の長さで区切って配列にする方法を調べてみました。 "あいうえお" → ["あい", "うえ", "お"] 標準のメソッドは用意されてないようなので、下のように独自のメソッドを追加しました。 extension String { func split(length: Int) -> [St…

SwiftUIで出てくるバックスラッシュの意味を調べる

SwiftUIを使っていると出てくる.記法について調べてみました。 この記法は以下のようにForEachなどで使われます。 struct ContentView: View { var body: some View { let models = [ MyStruct(id: 1, name: "name1"), MyStruct(id: 2, name: "name2"), ] re…

Swiftのassociatedtype再勉強

Swiftのassociatedtypeの仕様を再度勉強しました。 associatedtypeを使うと下のように独自の型(下の例だとMyType)を定義することができます。 protocol MyProtocol { associatedtype MyType } 定義した型は下のようにメソッドの引数や戻り値に使うことができ…

SwiftUIのViewBuilderについて調べてみる

SwiftUIのVStackやHStackでは、下のようにTextを2行並べて書くだけでTextを縦並びにできます。 今回はこの仕組みについて調べてみました。 struct ContentView: View { var body: some View { VStack { Text("AAA") Text("BBB") } } } 上記のコードですが、…

SwiftUIでローカル変数を定義する方法

SwiftUIだとローカル変数の定義でエラーになることが多いので整理してみました。 SwiftUIでのローカル変数定義方法 bodyの中の場合は下のようにreturnを付けることで定義できます。 struct ContentView: View { var body: some View { let a = 1 return Text…

SwiftUIのEnvironment/EnvironmentObjectとはなにか

SwiftUIのEnvironment / EnvironmentObjectという記法について調べてみました。 EnvironmentObjectとは EnvironmentObjectとはObservableObjectを外部から渡したりできるようになる記法です。 宣言は下のように行います。 struct ContentView: View { @Envir…

SwiftUIのsomeキーワードについて調べてみる

SwiftUIでViewを作る時、以下のようにsomeというキーワードが出てきます。 今回はこのキーワードについて調べてみました。 struct ContentView: View { var body: some View { Text("Hello, World!") } } 調査にあたって以下の記事を参考にさせて頂きました…

Today Extensionでウィジェット作成

Today Extensionを使ったウィジェット作成を試してみました。 プロジェクトを作成したらメニューからTargetの作成を行います。 Today Extensionを選択します。 作成するとToday Extension関連ファイルが作られます。 Today Extensionを起動するとHello world…

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…