Iganinのブログ

日頃の開発で学んだ知見を中心に記事を書いています。

【iOS】IBDesignableで画像をscaleAspectFitやscaleAspectFillで表示できるUIButtonを作る

はじめに 通信結果から画像を取得し、その画像をAspectFill(もしくはAspectFit)で設定して、その部分を押下すると詳細画面に遷移するというのはアプリ開発においてよくあるパターンだと思います。 例えば、メディア系のアプリでなんらかの特集をくみ、その…

2019年6月振り返り

6月の振り返り 目標の進捗状況の定期確認です。 体の基礎づくり 目標: ベンチプレス 100kg デッドリフト 150kg スクワット 150kg 実績: ベンチプレス 90kg デッドリフト 105kg スクワット 120kg ベンチプレスの重量が徐々に上がっています。100kgまであと…

【iOS】Place Holder(プレースホルダー)付きのUITextViewを作成する

はじめに 複数行のユーザーインプットを受け付けたいとき、UITextViewをよく使用します。 ユーザーがどのような内容を入力すれば良いかのヒントを与えるためにプレースホルダーの使用を検討することもよくあることだと思います。 ところが、UITextViewにはプ…

【iOS】単位付きのUITextFieldを作る方法とカスタムクラス

はじめに ユーザーからの情報の入力の際にTextViewと並んでUITextFieldはよく使われます。 単位付きの入力にしたい場合は、UITextFieldの範囲外にUILabelを設置する、 入力値に単位をつけ、それを特別扱いするようDelegateメソッド内で 対応するといった方法…

【iOS】SwiftGenで自動生成されるファイル内のStructやenumのアクセス修飾子をpublicにする方法

はじめに SwiftGenはR.swift同様にAssetやImage、Storyboardへのアクセスを、安全にしてくれるStructやenumなどの自動生成ツールです。 例えば、UIImageのインスタンスの生成はSwiftGenを使用すると下記のようになり、タイポによる不具合を防ぐことができま…

【iOS】UITabBarの真ん中のボタンが特殊な見た目・挙動のUIを作成する方法

はじめに InstagramのようにTabBarの真ん中が通常のTabBarItemではなく、押下することでModalで画面が表示されたり、 シートで選択肢が表示されるようなアプリがあります。また真ん中のボタンのデザインがTabBarからはみ出したりしているようなものもありま…

2019年5月振り返り

5月の振り返り 目標の進捗状況の定期確認です。 体の基礎づくり 目標: ベンチプレス 100kg デッドリフト 150kg スクワット 150kg 実績: ベンチプレス 82.5kg デッドリフト 105kg スクワット 120kg 少し重量が上がりました。 デッドリフトで疲れづらくなっ…

【iOS】RawReperesentableを使用してID間の使用ミスを避ける方法

はじめに アプリを作成しているとクラスやStructの一意性の判別のためにidを良く使用します。 例えばUserを定義した場合、その一意性を決めるためにUser.idを定義します。 多くの場合はidはStringかIntで定義するかと思います。 idが一つだけならば良いので…

「Creative Selection Apple 創造を生む力」の感想

読んだ本 Creative Selection Apple 創造を生む力作者: ケン・コシエンダ,二木夢子出版社/メーカー: サンマーク出版発売日: 2019/03/12メディア: 単行本(ソフトカバー)この商品を含むブログを見る なぜ読んだか 私はiOSアプリエンジニアとして3年半ほど企…

2019年4月振り返り

4月の振り返り 目標の進捗状況の定期確認です。 4月は全くもってダメでした。言い訳できません。 体の基礎づくり 目標: ベンチプレス 100kg デッドリフト 150kg スクワット 150kg 実績: ベンチプレス 80kg デッドリフト 100kg スクワット 120kg こちらは特…

【iOS】表示されているテキストをコピーできるUIを作成する簡単な方法

はじめに iOSアプリを作成していると文言の表示に通常UILabelを使用します。 ただ、そのままではラベル上の文言のコピーを行うことができず、利便性の面であまり満足できないような場合があります。 以下で文言をコピーできるUIを作成する方法を記載します。…

2019年3月振り返り

3月の振り返り 目標の進捗状況の定期確認です。 3月はプロジェクトの状況もひと段落し、多少時間に余裕ができました。 ただ、ギリギリの状況で行動していた反動か燃え尽きに近い状態になってしまってもいました。 休息をとって多少回復してきたので引き続き…

「このまま今の会社にいていいのか?と一度でも思ったら読む 転職の思考法」の感想

読んだ本 このまま今の会社にいていいのか?と一度でも思ったら読む 転職の思考法 作者: 北野唯我 出版社/メーカー: ダイヤモンド社 発売日: 2018/06/21 メディア: 単行本(ソフトカバー) この商品を含むブログ (1件) を見る 概要 社会人としてのキャリアを…

try! Swift Tokyo 2019 に参加しました

はじめに 3/21(木)- 3/23(土)に開催されたtry! Swift 2019に参加してきました。 try! SwiftはSwift関連の技術に関する技術カンファレンスです。 www.tryswift.co 今年はベルサール渋谷ファーストで開催されました。 3/21(木) - 3/22(金)はセッション…

XCodeのコンソールに出力されるCloudFirestoreのindex生成URLがうまく機能しなかった

はじめに CloudFirestoreを使用してFirestore.firestore()でqueryを生成しデータアクセスをする際に、whereFieldやorderでデータの絞り込みや順番を変更することができます。この際に、指定条件によってはIndexの生成をコンソール経由で下記のように提案され…

ML Study Jams : Machine Learning 初心者向けトレーニングプログラム の振り返り

はじめに [ML Study Jams] (https://events.withgoogle.com/ml-study-jams-japan-2019-01/)はGoogleにより提供されるMachine Learningのトレーニングコースです。 2月13日 - 3月3日の期間で開催されるオンライントレーニングコースであり、参加者には無料のQ…

2019年2月振り返り

2月の振り返り 目標の進捗状況の定期確認です。 2月はにわかに業務負荷が高まり、プライベートの時間確保が難しくなりました。 隙間の時間をいかに活用するか、多忙な時期でも活動を続けられる精神的、肉体的なタフネスをいかにつけるかが課題だと感じていま…

「オペレーティングシステムの仕組み」の感想

読んだ本 オペレーティングシステムの仕組み (情報科学こんせぷつ)作者: 河野健二出版社/メーカー: 朝倉書店発売日: 2007/10/01メディア: 単行本購入: 2人 クリック: 19回この商品を含むブログ (6件) を見る 題名通りオペレーティングシステムに関する書籍で…

SwiftにおけるArraySliceについて

はじめに SwiftではArrayに対して、その配列の部分配列を取得しようとするとArrayではなくArraySliceが返却されます。 なぜArrayでないのか、ArraySliceを使用する理由はなんなのか気になったので調べてみました。 環境設定 以下の環境を使用しています。 Xc…

DroidKaigi2019に参加しました

はじめに 2/7(木)- 2/8(金)に開催されたDroidKaigi 2019に参加してきました。 その感想になります。 本文 DroidKaigiはAndroid関連の技術に関する技術カンファレンスです。 ベルサール新宿グラントで開催されました。 ざっとセッションを見渡すと、以下…

Swiftにおける Voidと空Tuple - ()

はじめに 本日、UZUMAKIさん主催の「iOSアプリ設計パターン入門」の勉強会に参加しました。 【朝活】「iOSアプリ設計パターン入門」勉強会 by UZUMAKI #3 - connpass 内容はMVVMアーキテクチャに関してでしたが、議論の中でVoidや()の扱いに関して面白いもの…

2019年1月振り返り

1月の振り返り 目標の進捗状況の定期確認です。 1月は年末年始に罹患したインフルエンザに続き、細菌性の扁桃炎になり 41度以上の高熱を久しぶりに体験しました。 瀕死の中もがき苦しみましたが、なんとか生き残れました。そんな一年のスタートでした。 体の…

IBOutletCollectionについて

はじめに InterfaceBuilderの要素をコードと紐づけるために、IBOutlet、 IBActionが使われます。 ただ、複数の共通要素に対してはIBCollectionを使用すると便利です。 自分用のメモをかねて、IBCollectionに関してまとめます。 環境設定 以下の環境を使用し…

Codableに準拠したStructでネストされたプロパティをフラットにする際のTips

はじめに Codableに準拠したStructやClassにおいて、ネストされた値をDecodeの際にフラットにしたいとします。 例えば以下のようなJSONに対して、下の階層の値であるaddress.nameを上位の階層のaddressNameとして扱いたい場合などです。 一般的にはこのよう…

FlutterでローカルDBを扱う方法

はじめに FlutterでローカルDBを扱う方法について、 sqflite を使用したsqliteデータベースを扱うやり方を記載します。 環境設定 以下の環境を使用しています。 flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (C…

「マーケット感覚を身につけよう」の感想

読んだ本 マーケット感覚を身につけよう---「これから何が売れるのか?」わかる人になる5つの方法 作者: ちきりん 出版社/メーカー: ダイヤモンド社 発売日: 2015/02/20 メディア: 単行本(ソフトカバー) この商品を含むブログ (28件) を見る 概要 本書では…

2019年の目標

年末にインフルエンザA型に罹患し、年明けを40度近い熱でうなされて過ごすという、かなり苦しい走り出しとなった2019年ですが、今後のために今年の目標を書いていきたいと思います。それにしても、年越しと同時に命が消えるという結末にならずに良かった、年…