はじめに Firebaseを勉強したので、簡単なToDoリストを作ってみます。 方針 ・設計手法は、クリーンアーキテクチャを採用 ・データの管理は、FirebaseのRealtime Databaseを採用 前提知識 ・Firebaseの導入方法 ・Firebaseによる認証方法 ・FirebaseによるRealtime Databaseの使い方 ゴール ユーザごとにToDoリストを管理するアプリを作ります。 画面構成は、ログイン画面、ToDo一覧画面と、ToDo登録画面です。 (会員登録機能、ログアウト機能については、割愛します。) (1)ログイン画面 ・メールアドレス、パスワードを入力し、ログインボタンを押下すると、ToDo一覧画面へ遷移する (2)ToDo一覧画面 ・ToDo一覧を表示する ・該当行をタップするとToDoを完了済みとする(取り消し線で消す) ・プラスボタンを押下すると
また、人それぞれ見解が多少異なると思うので、同じタイミングであろうとも色々な方が書かれてみるのも面白い題材かなとも思っています( ´・‿・`) それではiOSアプリ開発に必要な要素ごとにつらつらと書いていきます。それぞれ語りすぎるとボリュームが増えすぎるので、あえてなるべく浅めに書いていきます🐶 高性能なMacマシンを確保まず、技術的なこと抜きに一定以上の性能のMacマシンを用意するのが良いです。取っ掛かりの勉強目的などならともかく、中規模以上のアプリを作る場合低スペックマシンでは著しく非効率です。 大体以下のようなイメージで、これ未満だと早めにマシン変えた方が幸せになれると思っています。 2–3年以内に買った20万円以上程度のMacBook Pro: 許容範囲iMac 5K: 良い感じiMac Pro: 一般的なiOSアプリ開発ではオーバースペック気味でコスパは微妙かも🤔会社で、交渉
この記事について 「Swift5.0のキャッチアップをまだできてない...! 」という方に向けて、Swift5.0のアップデートについてまとめたチートシートを作りました。 今回23個もの項目があるので、なるべくスマート✨かつ爆速🔥でキャッチアップしちゃいましょう! なるべくシンプルな説明になるよう心がけています。内容の詳細については、公式ドキュメントを参考にするのが良いと思います。 今回載せる画像自体の転用は自由ですのでご自由にご利用ください。 全体の内容がまとまったスライドはこちらです 筆者の理解も完全ではないので、訂正がありましたらご指摘いただけると幸いです。mm 目次 全体的なアップデート 標準ライブラリのアップデート 言語仕様/コンパイラのアップデート 1. 全体的なアップデート ABI Stability 2. 標準ライブラリのアップデート 1. Stringの特殊文字 2.
It seems like every major app out there has a chat feature, and yours should be no different! This Firebase tutorial will show you how to add real-time chat to your app. However, creating a chat tool can seem like a daunting task. There are no native UIKit controls specifically designed for chat, and you need a server to coordinate and store the conversations between users. Fortunately, there are
Evolutionary Architecture - Discovering Boundaries @DevTalks 24
概要 TextViewの行間は、StoryBoardでは変更できないようです。 TextView.attributedTextにstyleを追加します。 けっこう面倒ですね。 @IBOutlet weak var textView: UITextView! override func viewDidLoad() { super.viewDidLoad() let style = NSMutableParagraphStyle() style.lineSpacing = 40 let attributes = [NSParagraphStyleAttributeName : style] textView.attributedText = NSAttributedString(string: textView.text, attributes: attributes) } 関連資料 ios
概要 UIViewControllerにUITableViewと広告バナーを貼るのは至極簡単なのですが UITableViewControllerに広告バナーを貼るのはかなり遠回りをしなければならなかったので どうしてもUITableViewControllerでバナー入りの画面を作りたい!という方の為に方法を書きます。 やりたかったこと UITableViewControllerの下に広告バナーを差し込みたかった。 UITableViewのスクロールは広告バナーの上までにしたい。 何が面倒だったか ベースがUIViewではなくUITableViewなのでself.view addSubViewをするとスクロールにUIViewが追従してしまう 広告バナーの上までをスクロール領域にする UITableViewにaddSubViewするとUIViewに罫線が入ってしまう などなど…これら全てを
こんにちは。テクノロジーチームの @tdkn (てどこん) です。 最近は iOS アプリの開発を担当させてもらっていて Swift 3 を書きまくる日々を過ごしています。 ネイティブアプリの開発スキルが上昇中。ありがたいことです! さて、今回は iOS のアプリを開発して行く上で、 「レイアウトもコードベースで書きたい派」のあなたに超絶便利かもしれない SnapKit の使い方を紹介したいと思います。 Interface Builder何それ、美味しいの SnapKit って何? 皆さんは iOS のユーザーインターフェースをどのように構築していますか? View の frame に対して、寸法や位置を頑張って計算して直接値を設定していますか? AutoLayout を使えば、View 階層に属する各 View について、 それぞれに課された制約 (Constraint) を満たすよう、
循環参照するか、しないかの切り分け 循環参照するか、しないかの切り分けはエンジニアが考慮する必要があります。この切り分けはObjCと同様なので、ここでは詳細には触れません。 ちなみに、Xcode6 Beta5のSwiftではコンパイルワーニングで循環参照を知らせてくれません。とはいえ循環参照のコンパイルワーニングはObjCでも全部網羅されていないので、最終的にはエンジニアが考慮する必要があるのはかわらないのですが。 対象の変数をweakで対応し、実行時に変数がnilになる可能性の切り分け そもそも、実行時に循環参照する対象の変数がnilになる可能性で判断ではなく、対象の変数定義がOptional定義かどうかで判断できないか 常にOptional定義かどうかで判断できないのではと思っています。例えばselfはself!としてunwrapしてアクセスしないので、selfはOptionalではな
追記について 追記が増えたので以下の記事を新たに作成しました。こちらと合わせてご参照ください。 Swiftの循環参照問題におけるunownedとweakの使い分けについて はじめに クロージャーは定義したスコープの定数や変数をキャプチャすることができます。このキャプチャのおかげでインスタンス変数を定義して、値を保持する必要がなくケースがあるので便利に活用しています。ただキャプチャ値を利用する場合は、循環参照を考慮したコードを記述する必要があります。循環参照に陥ると双方のインスタンスがメモリ上から開放されず、メモリリークの原因になります。 クロージャの循環参照と回避方法 クロージャが循環参照をしている例です。 selfがクロージャを強参照し、クロージャがselfを強参照して循環参照に陥っています。 HTMLElementインスタンスはasHTMLプロパティで() -> Stringクロージャ
Swiftでクロージャを使うコードを書いていると,よく @escaping とか weak / unowned といったワードを目にすることがあります. なんとなく「コンパイラに怒られたら付ける」とか「参考にしたコードに書いてあったから付ける」などとしてしまっていたのですが(反省),ちゃんと意味を調べてみてもなかなか理解ができませんでした. そこで,参考にした記事と私が動作確認したコードを示し,「こう考えたら私は理解できた」というメモを残しておきます. なお,概念の理解を優先しているため,用語や表現の正確性は無いかもしれません. 参考にした記事 Swift 3 の @escaping とは何か - Qiita "Weak, Strong, Unowned, Oh My!" - A Guide to References in Swift — KrakenDev 環境 Swift 3.1 X
Swiftではクロージャー内でselfを使う時には[unowned self]を使わないとメモリリークが発生する事があります。
Swiftのクロージャが循環参照をつくりメモリリークする例を理解するためにサンプルコードを書いてみました。 Xcode 11.1 (Playgrounds), Swift 5.1 で動作を確認しています。 1. クロージャが強参照(strong reference)することによる循環参照 class CalorieCalculator { let name: String let weight: Float init(name: String, weight: Float) { self.name = name self.weight = weight print("\(self.name) is initialized") } deinit { print("\(self.name) is deinitialized") } // 遅延格納型プロパティ(lazy) lazy var go
概要 NavigationControllerが絡んでくると画面間の値の受け渡しが少し複雑になるので、この記事では様々な状況におけるViewControllerとNavigationControllerとの相互関係についてまとめてみました。 今回は画像のような NavigationController(1) -> FirstViewController -> SecondViewController -> NavigationController(2) -> ThirdViewController という構成を想定します。 ちなみに、FirstViewControllerからSecondViewControllerへはShow、SecondViewControllerからNavigationController(2)へはPresent ModallyのSegueが繋いであります。 以下 F
2019年2月27日、恵比寿ガーデンプレイスザ・ガーデンホールにて、「Cookpad TechConf 2019」が開催されました。Cookpadのエンジニアやデザイナーがどのようにサービス開発に取り組んでいるのか、またその過程で得た技術的知見について公開します。プレゼンテーション「〜霞が関〜 クックパッドiOSアプリの破壊と創造、そして未来」に登壇したのは、クックパッド株式会社エンジニアの三木康暉氏。講演資料はこちら クックパッドiOSアプリの破壊と創造、そして未来 三木康暉氏:こんにちは、「@giginet」です。今日は、クックパッドのiOSアプリを例に、巨大で歴史のあるアプリの開発効率をどうやって改善していくかというお話をします。どうぞよろしくお願いします。 (会場拍手) クックパッドのiOSアプリは多くのユーザーさんがいらっしゃる一方で、巨大で歴史のあるアプリです。最初のコミットは
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く