技術
はじめに Swiftで使用されるstructは定義したプロパティにしたがってイニシャライザメソッドが自動生成されます。 例えば下記のようにUserを定義した場合に自動でイニシャライザが生成されます。 struct User { var id: Int var name: String } // init(id: …
はじめに サーバーからのPush通知を実行するためには、サーバーにDeviceTokenの文字列を保持し、そのDeviceTokenを指定してAPNs(Apple Push Notification Service)に通信を行う必要があります。DeviceTokenはregisterForRemoteNotifications()の実行によって…
はじめに In App Purchaseを実装する際にApp Storeに課金Productを登録し、アプリからそのプロダクトの情報を取得します。 具体的には、下記のようにSKProductsRequestを作成し、取得したい課金プロダクトのIdentifiersをSetで指定、通信結果を func product…
はじめに サービスで使用するEmailアドレスやPasswordなどをアプリから入力する際に、アプリ側でValidationをかけることがあります。 そのような際に行う対応として直感的には以下のようにするかと思います。 extension ViewController: UITextFieldDelegate…
はじめに 9/5(木) - 9/7(土)に開催されたiOSDC 2019に参加しました。今年も昨年同様に早稲田大学 西早稲田キャンパスで開催されました。 今回は昨年に引き続き2回目の参加です。9/5(木)が前夜祭、9/6(金) - 9/7(土)がDay1 Day2という位置付けで今年はお…
はじめに Kotlin Fest 2019に参加してきました。本当はもっと早く書きたかったのですが、日々に忙殺される中、気づけば2週間ほどたってしまっていました。 Kotlin Festは「Kotlinを愛でる」をビジョンに掲げたKotlin言語に関するカンファレンスです。今年は…
はじめに チュートリアル画面などで、画面全体を半透明な黒いUIViewでおおい、一部分をハイライトして、なんらかの説明文言を表示するといったことがあるかと思います。 この際に、ハイライトしたい部分にUIImageなどを上から重ねるのも手としてはありますが…
はじめに UITableViewを使用する際に繰り返しの要素はsecitonやcellを用いて表示することが多いかと思います。 主にこれらがUITableViewのメイン要素となり、各sectionのサマリや補足情報をsectionHeaderViewやsectionFooterViewに記載します。 そして、繰り…
はじめに Push通知はサービスユーザーに情報を送る上でとても有効な手段です。最近では、Firebase の Cloud Messagingの登場により、キャンペーンのプッシュや固定文言の定期PushはFirebase側で取り扱うことができるようになりましたが、ユーザー個別に動的…
はじめに 画面のモーダル遷移を実現するUIViewControllerのpresent(viewControllerToPresent: UIViewController, animated: Bool, completion: (() -> Void)?) や dismiss(animated: Bool, completion: (() -> Void)?) では completionがあり画面遷移完了後…
はじめに 通信結果から画像を取得し、その画像をAspectFill(もしくはAspectFit)で設定して、その部分を押下すると詳細画面に遷移するというのはアプリ開発においてよくあるパターンだと思います。 例えば、メディア系のアプリでなんらかの特集をくみ、その…
はじめに 複数行のユーザーインプットを受け付けたいとき、UITextViewをよく使用します。 ユーザーがどのような内容を入力すれば良いかのヒントを与えるためにプレースホルダーの使用を検討することもよくあることだと思います。 ところが、UITextViewにはプ…
はじめに ユーザーからの情報の入力の際にTextViewと並んでUITextFieldはよく使われます。 単位付きの入力にしたい場合は、UITextFieldの範囲外にUILabelを設置する、 入力値に単位をつけ、それを特別扱いするようDelegateメソッド内で 対応するといった方法…
はじめに SwiftGenはR.swift同様にAssetやImage、Storyboardへのアクセスを、安全にしてくれるStructやenumなどの自動生成ツールです。 例えば、UIImageのインスタンスの生成はSwiftGenを使用すると下記のようになり、タイポによる不具合を防ぐことができま…
はじめに InstagramのようにTabBarの真ん中が通常のTabBarItemではなく、押下することでModalで画面が表示されたり、 シートで選択肢が表示されるようなアプリがあります。また真ん中のボタンのデザインがTabBarからはみ出したりしているようなものもありま…
はじめに アプリを作成しているとクラスやStructの一意性の判別のためにidを良く使用します。 例えばUserを定義した場合、その一意性を決めるためにUser.idを定義します。 多くの場合はidはStringかIntで定義するかと思います。 idが一つだけならば良いので…
はじめに iOSアプリを作成していると文言の表示に通常UILabelを使用します。 ただ、そのままではラベル上の文言のコピーを行うことができず、利便性の面であまり満足できないような場合があります。 以下で文言をコピーできるUIを作成する方法を記載します。…
はじめに 3/21(木)- 3/23(土)に開催されたtry! Swift 2019に参加してきました。 try! SwiftはSwift関連の技術に関する技術カンファレンスです。 www.tryswift.co 今年はベルサール渋谷ファーストで開催されました。 3/21(木) - 3/22(金)はセッション…
はじめに CloudFirestoreを使用してFirestore.firestore()でqueryを生成しデータアクセスをする際に、whereFieldやorderでデータの絞り込みや順番を変更することができます。この際に、指定条件によってはIndexの生成をコンソール経由で下記のように提案され…
読んだ本 オペレーティングシステムの仕組み (情報科学こんせぷつ)作者: 河野健二出版社/メーカー: 朝倉書店発売日: 2007/10/01メディア: 単行本購入: 2人 クリック: 19回この商品を含むブログ (6件) を見る 題名通りオペレーティングシステムに関する書籍で…
はじめに SwiftではArrayに対して、その配列の部分配列を取得しようとするとArrayではなくArraySliceが返却されます。 なぜArrayでないのか、ArraySliceを使用する理由はなんなのか気になったので調べてみました。 環境設定 以下の環境を使用しています。 Xc…
はじめに 2/7(木)- 2/8(金)に開催されたDroidKaigi 2019に参加してきました。 その感想になります。 本文 DroidKaigiはAndroid関連の技術に関する技術カンファレンスです。 ベルサール新宿グラントで開催されました。 ざっとセッションを見渡すと、以下…
はじめに 本日、UZUMAKIさん主催の「iOSアプリ設計パターン入門」の勉強会に参加しました。 【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #3 - connpass 内容はMVVMアーキテクチャに関してでしたが、議論の中でVoidや()の扱いに関して面白いもの…
はじめに InterfaceBuilderの要素をコードと紐づけるために、IBOutlet、 IBActionが使われます。 ただ、複数の共通要素に対してはIBCollectionを使用すると便利です。 自分用のメモをかねて、IBCollectionに関してまとめます。 環境設定 以下の環境を使用し…
はじめに Codableに準拠したStructやClassにおいて、ネストされた値をDecodeの際にフラットにしたいとします。 例えば以下のようなJSONに対して、下の階層の値であるaddress.nameを上位の階層のaddressNameとして扱いたい場合などです。 一般的にはこのよう…
はじめに FlutterでローカルDBを扱う方法について、 sqflite を使用したsqliteデータベースを扱うやり方を記載します。 環境設定 以下の環境を使用しています。 flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (C…