20210725のiOSに関する記事は3件です。

プログラミングを始めて1年間で読んだ書籍

概要 これまでexcelやAccessは使用してきましたが,プログラミングには一切触れてきませんでした。 ずっとスマホアプリを作りたいと思っていたので、26歳にしてプログラミングの学習を始めました。 学習の目的は第一にスマホアプリの作成とリリース、第二にアプリエンジニアに転職するためです。 そこで学習も1年経ちましたので、1年間で読んだ書籍を恐れ多くも紹介します。 ベテランの皆様、おすすめの書籍があったらご教授下さい!! 書籍一覧 ・HTML&CSSとWebデザインが 1冊できちんと身につく本 ・デザイン入門教室[特別講義] 確かな力を身に付けられる ~学び、考え、作る授業~ ・確かな力が身につくJavaScript「超」入門 第2版 ・詳細! SwiftUI iPhoneアプリ開発入門ノート[2020] iOS 14+Xcode 12対応 ・絶対に挫折しない iPhoneアプリ開発「超」入門 第8版 ・【Swift5/Xcode12】超入門クイズアプリ開発講座〜自分のアプリをリリースしてみよう〜 ・Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 ・よくわかるAuto Layout iOSレスポンシブデザインをマスター ・App Development with Swift ・キタミ式イラストIT塾 基本情報技術者 HTML&CSSとWebデザインが 1冊できちんと身につく本 プログラミング知識ゼロで一番最初に読んだ本です。 いきなりアプリは作れないと思い、ネットでどの言語からスタートするのが良いか調べていたところ, HTMLが難易度が比較的低く始めやすいとのことでしたので近所の本屋でこの本を買いました。 結果としてHTMLから始めたのは正解でした。この本は事前知識ゼロを前提として書かれていると思います。 デザイン入門教室[特別講義] 確かな力を身に付けられる ~学び、考え、作る授業~ プログラミングの記事なのに2番目で早速プログラミングと関係ない本が出てきました。笑 1番目の本で学んだhtmlでページを書いているうちにどのようなデザインが見やすいのか、自身の勝手なセンスでデザインして良いのかと疑問が出てきました。この本はユーザーインターフェイス等のデザインだけでなく、 PowerPointやKeynoteでスライドを作る時に知識が大いに役立つ思います。 配色や文字サイズ、フォント、余白が読み手に与える印象をわかりやすく解説しています。 "人に見せる資料を作成する全ての社会人"はデザインの基本を身につけるべき!とさえ思いました。 確かな力が身につくJavaScript「超」入門 第2版 HTMLとCSSでページを作成できるようになりましたが、いまいちなんか古臭い、windowsXPを使用していた時代のようなページになってしまうことに気づきました。調べてみると現在のHPはほとんどがJavaScriptというものが使われているようです。この本でJavaScriptの基本やjQueryについて学び、ハンバーガーメニューの実装をしました。 詳細! SwiftUI iPhoneアプリ開発入門ノート[2020] iOS 14+Xcode 12対応 一通りHTMLついて学んだので、ここからアプリ作成にシフトしていきます。 iPhoneとiPadを持っていたので、言語はSwiftにしました。 私はSwiftとSwiftUIの違いもわからずSwiftUIから始めましたが、初心者はAutolayoutとswiftで始めた方が良いと感じます。理由はSwiftUIが比較的新しいものであり、ネットでの情報がSwiftUIよりSwiftの方が多いからです。実際現場での開発もSwiftUIはまだあまり使われていないようなQittaの記事をいくつか見ました。 絶対に挫折しない iPhoneアプリ開発「超」入門 第8版 kindle版で購入しました。 初めてkindleの電子書籍を購入したのですが、重い本を持ち歩かなくて良い(→出張へ持ち運びや電車で読むのに便利!)というメリットの反面、使い勝手が非常に悪く閲覧しにくいという大きなデメリットがありました。具体的には拡大・縮小が思ったように操作できない、拡大しても解像度は変わらない(つまり拡大するとぼやける)という点です。本自体も初心者には非常に良いのですが、内容が先程紹介した「詳細! SwiftUI iPhoneアプリ開発入門ノート」とかなり似通っているのでどちらかの購入でいいと思いました。 【Swift5/Xcode12】超入門クイズアプリ開発講座〜自分のアプリをリリースしてみよう〜 初心者向けにSwift/Xcodeのブログを書かれているsatorikuさんという方の本です。 電子書籍限定です。 ブログの説明が非常に丁寧でわかりやすかったので購入しました。 広告の実装(google AdMob)やリリース方法まで詳しく書かれていました。 Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 初心者向けのアプリ開発の本は本の通りにコーディングすればアプリは完成するのですが、あまり応用が聞きませんでした。オリジナルのアプリの開発としての知識は不十分です。 "〇〇アプリの作り方!"ではなく"プログラミング言語"としてのswiftを学ぶために本書を購入しました。 内容は初心者向けではなく中級者以上と感じました。私のレベルでは理解できない部分も多いですが、内容が網羅されていると感じ、これから何を勉強すれば良いかがわかり非常に満足です。 よくわかるAuto Layout iOSレスポンシブデザインをマスター Amazonで新品が4980円からと高額なので中古で購入しました。(定価は2600円) アプリ開発をはじめていくつか壁がありましたがその一つはAutoLayoutでした。 詳細に書かれていますが、読むに当たって注意点があります。 2016年に出版された本ですのでios10くらいでしょうか。少し古い内容・今では使用されていないものがありますのでこの点を自身で調べて更新する必要があります。 App Development with Swift "App Development with Swift”はSwiftの基礎知識を証明する資格です。 こちらはその資格のApple公式ドキュメントです。電子書籍のAppleBooksのみ配信です。 無料ですが、総1015ページ全て英語の文書になります。 難しい英語は使われておりませんので、TOEIC630点程度の英語力でも概ね理解できました。 キタミ式イラストIT塾 基本情報技術者 転職について情報を調べると、ブラックな情報ばかり目についてしまいます。 Youtubeで転職について語っている方が、「ブラックだとかいう前に入社する前に基本情報技術者くらいは取りましょう。」とおっしゃっておりこの資格の存在を知り取ろうと思いました。 この本はイラストが多用されており、わかりやすい反面ページを食ってしまい内容の割に本が分厚いです。 どんぐり君ときのこ君がほぼ毎ページで親父ギャグを言っています。 今まで名前は聞いたことがあるが、詳しくは説明できないIT用語がたくさん出てきました。 ノート取りながら1周するのに1ヶ月以上かかりました。 まとめ 私はHTML→CSS→JavaScript→Swiftの順で学習をしました。 本の力は偉大ですが、実際何かアプリを作ろうとすると、書籍の知識だけでは絶対に不可能でした。 QiitaやStackOverflow等でネット上から求める情報を調べ出す力が重要ということも学びました。 これがいわゆる"Google力"というやつなのですね。 以上、これからプログラミングを始める方の参考になればと思い、Qitta初投稿でした。 購入総金額:22592円
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ジェネリクス(備忘録)

・ジェネリクスとは? ・ジェネリクスとは、Swift実践入門(p.236)によると、型をパラメータとして受け取ることで汎用的なプログラムを記述するための機能である。これにより、関数や型を汎用的かつ型安全に記述できる。 ・定義方法 ・ジェネリック関数の場合 func 関数名<型引数>(引数: 型引数) -> 戻り値の型 { 関数呼び出し時に実行される文 } ・ジェネリック型(型引数をもつクラス、構造体、列挙型)の場合 struct 構造体名<型引数> { 構造体の定義 } 型引数として宣言された方は、ジェネリック関数やジェネリック型の内部で通常の型と同等に扱うことができる。 ・特殊化 実際にジェネリック関数を呼び出したり、ジェネリック型をインスタンス化するときには、型引数に具体的な型を指定する必要があり、具体的な型引数を与えて型を確定させることを特殊化という。 配列にString型やInt型を当てはめて使用することができるのも特殊化のひとつである。 var intArray = [1,2,3,] var stringArray = ["a","b","c"] 特殊化の方法はジェネリック関数とジェネリック型それぞれについて大きく分けて二つある。 ・ジェネリック関数の場合 ①引数からの型推論を用いる方法 func someFunc<T>(_ argument: T) -> T { return argument } let someString = someFunc("Hello") //String型 let someInt = someFunc(100) //Int型 ②戻り値からの型推論を用いる方法 戻り値からの型推論で特殊化を行う際には、ジェネリック関数の戻り値の型が型引数となっていて、かつ、戻り値の代入先の型が決まっている必要がある。 func someFunc<T>(_ argument: Any) -> T? { return argument as? T } let someString: String? = someFunc("Hello") //TはString型となる let error = someFunc("Error") //エラー ・ジェネリック型の場合 ①<>内に型引数を明示する方法 struct SomeStringStruct<Some> { let name : Some } let someString = SomeStringStruct<String>(name: "okadai") //String型 ②型推論によって型引数を推論する方法 struct SomeIntStruct<Some> { let num : Some } let someInt = SomeIntStruct(num: 100) //Int型 ・型制約 型制約により、準拠すべきプロトコルやスーパークラスなど、型引数にはさまざまな制約を設けることができる。これにより、型の性質を利用でき、ジェネリック関数やジェネリック型をより詳細に扱うことができる。 ・ジェネリック関数の場合 設けることができる制約 ①スーパークラスや準拠するプロトコルに対する制約 func 関数名<型引数: プロトコル名やスーパークラス名>(引数) { 関数呼び出し時に実行される文 } func isEqual<T: Equatable>(_ x: T, _ y: T) -> Bool { return x == y } isEqual("abc", "def") // false ②連想型のスーパークラスや準拠するプロトコルに対する制約 func 関数名<型引数: プロトコル>(引数) -> 戻り値の型 where 連想型: プロトコルやスーパークラス { 関数呼び出し時に実行される文 } func sorted<T: Collection>(_ argument: T) -> [T.Element] where T.Element: Comparable { return argument.sorted() } sorted([3,2,1]) ③型どうしの一致を要求する制約 func 関数名<型引数1: プロトコル1, 型引数2: プロトコル2>(引数) -> 戻り値の型 where プロトコル1の連想型 == プロトコル2の連想型 { 関数呼び出し時に実行される文 } //この場合は、要素の型の一致を要求している func concat<T: Collection, U: Collection>(_ argument1: T, _ argument2: U) -> [T.Element] where T.Element == U.Element { return Array(argument1) + Array(argument2) } let array = [1,2,3] let set = Set([1,2,3]) let result = concat(array, set) //[1,2,3,1,2,3] ・ジェネリック型の場合 設けることができる制約 ①スーパークラスや準拠するプロトコルに対する制約 struct 型名<型引数: プロトコル名やスーパークラス名> { 構造体の定義 } ・ジェネリック型の型制約付きエクステンション 型の定義では、①スーパークラスや準拠するプロトコルに対する制約しか使用できなかったが、エクステンションでは、②連想型のスーパークラスや準拠するプロトコルに対する制約、③型どうしの一致を要求する制約も使えるようになる。 extension ジェネリック型名 where 型制約 { 制約を満たす場合に有効となるエクステンション } struct Pair<Element> { let first: Element let second: Element } extension Pair where Element == String { func hasElement(containing character: Character) -> Bool { return first.contains(character) || second.contains(character) } } let stringPair = Pair(first: "abc", second: "def") stringPair.hasElement(containing: "e") // true ・プロトコルへの条件付き準拠 ・ジェネリック型の型制約付きエクステンションでは、プロトコルへの準拠も可能。 extension ジェネリック型名: 条件付き準拠するプロトコル名 where 型制約 { 制約を満たす場合に有効となるエクステンション } struct Pair<Element> { let first: Element let second: Element } extension Pair: Equatable where Element: Equatable { static func == (_ lhs: Pair, _ rhs: Pair) -> Bool { return lhs.first == rhs.first && lhs.first == rhs.second } } let stringPair1 = Pair(first: "abc", second: "def") let strinfPair2 = Pair(first: "def", second: "ghi") let stringPair3 = Pair(first: "abc", second: "def") stringPair1 == strinfPair2 // false stringPair1 == stringPair3 // true
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

タプル型について

・タプル型とは? ・タプル型とは、複数の型をまとめて1つの型として扱うことができる型である。 ・タプル型の値をタプルという。 ・タプル型の定義とタプルの生成 // タプル型の定義 var sampleTuple = (Int, String) // タプルの生成 sampleTuple = (1,"Hello") ・要素へのアクセス ・要素へのアクセス方法は3つ ①インデックスによるアクセス ②要素名によるアクセス ③代入によるアクセス ・①インデックスによるアクセス let tuple = (100, "Hello") print(tuple.0) // 100 print(tuple.1) // Hello ・②要素名によるアクセス let tuple = (int: 100, string: "Hello") print(tuple.int) // 100 print(tuple.string) // Hello ・③代入によるアクセス let int: Int let string: String (int, string) = (100, "Hello") print(int) // 100 print(string) // Hello // この方法でも宣言できる let (int, string) = (100, "Hello") print(int) print(string)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む