今日 | 05/21 | 05/20 | 05/19 | 05/18 | 05/17 | 05/16 | 全参加数 | |
---|---|---|---|---|---|---|---|---|
総合ランキング(IN) | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 1,034,816サイト |
INポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
OUTポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
PVポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
教育ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 10,904サイト |
プログラミング教育 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 322サイト |
IT技術ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 9,777サイト |
プログラム・プログラマー | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 930サイト |
iPhoneアプリ開発 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 190サイト |
今日 | 05/21 | 05/20 | 05/19 | 05/18 | 05/17 | 05/16 | 全参加数 | |
---|---|---|---|---|---|---|---|---|
総合ランキング(OUT) | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 1,034,816サイト |
INポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
OUTポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
PVポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
教育ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 10,904サイト |
プログラミング教育 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 322サイト |
IT技術ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 9,777サイト |
プログラム・プログラマー | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 930サイト |
iPhoneアプリ開発 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 190サイト |
今日 | 05/21 | 05/20 | 05/19 | 05/18 | 05/17 | 05/16 | 全参加数 | |
---|---|---|---|---|---|---|---|---|
総合ランキング(PV) | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 1,034,816サイト |
INポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
OUTポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
PVポイント | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0/週 |
教育ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 10,904サイト |
プログラミング教育 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 322サイト |
IT技術ブログ | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 9,777サイト |
プログラム・プログラマー | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 930サイト |
iPhoneアプリ開発 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 圏外 | 190サイト |
iPhoneやiPadで使える、遊べるアプリを自分でも作ってみたいなと思った時、 その開発には何が必要なのでしょうか? カンタンにまとめました。 iOSアプリ開発に必要なもの - 世界一シンプルなはじめてのSwiftUIのブログiOSアプリ開発に必要なもの はじまり 毎日使っているあのアプリや楽しめるアプリ、ゲームなど、、iPhoneやiPadではたくさんのアプリを毎日使ってい verysimple-swift.main.jp iOSアプリ開発はとても楽しいです。
Xcode15.0の正式版がリリースされています。 iOS17への対応や、Swiftが5.9になりました。 開発者サイドから見ると特に、Swift5.9からマクロが使えるようになり、 一段と表現力がアップします。 マクロは使い方次第で、全く別の言語も作れてしまうくらいのパワーを持っています。 Swiftのマクロは、コンパイルも拡張することができて、 例えば、あるURLが有効かどうかも、 通常実行時にアクセスをして検出して色んな処理をするところ、 コンパイル時に検出できるような構文も作れます。 今回のアップデートで、iOSアプリ開発がさらに面白くなります。 まとめ htt
Swiftでは、処理をする値や動作の範囲や境界条件などを表現するのも容易です。 リファレンス用に書きました。 【Swift】末尾の値を含む範囲を作る Swiftでの範囲型を使うと、処理する値の範囲や、値が取りうる範囲などを容易に表現す ... verysimple-swift.main.jp 範囲の操作などもあります。 【Swift】範囲の境界へアクセス 範囲型の境界を知りたい場合にはどうし
Swiftでは、型の中に型を定義、配置することができます。これを型のネストと言います。 型をネストすることで、 1. 型の名前が短縮、簡潔にできたり、 2. 名前の衝突を避けることができます。 図書館の本を例に、早速見てみましょう。 struct LibraryBook { enum Status { case available case rent case missing &nbs
無料トライアル実施中!<U-NEXT> U-NEXTより 動画ページ スティーブ・ジョブズがAppleを創設し、iPhoneやiPadによって宇宙にインパクトを与えるまでを追いかけたドキュメンタリーです。BBCの制作によるもので、時代背景の分析や様々な面からのお話が出てきます。スティーブ・ジョブズの強烈な個性の良い面もそうでない面(他からすると)も、多様に語られています。 Appleの共同設立者のスティーブ・ウォズニアックも出て来て話し、当時の状況や、ジョブズから語られていなかったエピソードなども出て来ます。 禅を実践していたことも語られたり、日本を訪れたことについても触れられて
コメントがあることによって、他の人も3ヶ月後の自分もコードを読みやすくなったりします。 逆に、コメントによって、あらぬ混乱が生まれたりすることもあります。一つ、よくない例を実際に見てみましょう。 // MARK: これはマネしたらマズイ例 /* 足し算を行う関数 整数型の引数aと整数型の引数bをとる そして、関数内部でaとbを足し、 その結果を整数型の値で返す。 */ func add(a: Int, b: Int) -> Int { var result = a + b return result } これはコメントがなくても、コードを読めば
【SwiftUI】TODO, FIXME, MARKを付けておく方法
実装に対するコメントとして、やることや修正が必要なこと、気を付けることなどは、TODO、FIXME、MARKを付けておくと、Xcodeのミニマップで後から見つけやすくなります。 import SwiftUI struct CommentExample: View { var body: some View { VStack { Text("Xcodeの") // TODO: やること Text("機能で") // FIXME: 修正すること
Swiftでは、通常のコメントの他に、ドキュメントコメントも付けることができます。ドキュメントコメントは、XcodeのQuick Helpから見ることができるものです。Quick Helpは、関数などを右クリックするか、View → Inspectorsから見ることができます(とても便利です)。 Markdown記法を使うことができ、スタイルの指定も可能です。そして、引数や返り値など関数のインターフェースについての説明もできます。 /** ドキュメントコメントは2種類の書き方が可能です。 /** */で囲むものと、///で始まるものです。 */ /// ドキュメントコメン
Swiftでは、ソースコードにコメントを付けることができます。 コメントは、あってもプログラムの実行に関係のないもので、開発の時の助けになります。 // この行の//以降はコメントとして解釈される // 2行目もコメントにしたければ、また //から始める /* ブロックコメント /* */で囲まれた部分が全てコメントとして扱われる */ 2つの書き方があります。 1. // (スラッシュ)2つの後にコメントを続けるもの。 2. /* */ で囲むもの。 コメントは、実装についてのちょっとしたことやメモを書いたりします。 他の人がコードを読んだり、保守・運用の段階や、コ
【Swift】トレイリングクロージャ(接尾クロージャ)って?
クロージャは、内部で変数を使ったりもできる処理のまとまりですので、行数が長くなることもしばしば。一方、クロージャの意義は、関数の引数として渡せることです。 ですが、そのままクロージャを渡してしまうと、コードがすごく読みづらくなってしまうこともあります。 Swiftではこうしたことへの工夫もされていて、トレイリングクロージャもその一つです。関数の引数の最後がクロージャである場合に使えるもので、可読性を上げることができます。 func trailingTest(num: Int, closure: () -> ()) { // 処理 closure() } /
クロージャは、SwiftUIでも頻繁に使われています。 一部抜粋すると、こんな感じです。 VStack { Text("おはよう") Text("こんにちは") Text("こんばんは") } VStackというのは構造体なのですが、(イニシャライザが)その引数としてクロージャをとっています。このクロージャの型は「() -> Content」型で、引数を持たず、Content型の値を返します。 そして、VStackで渡されたクロージャの中の要素を縦に(Vertic
クロージャの型が推論できる場合には、クロージャの引数や返り値の型を省略することができます。 var doubleCount: (String) -> Int // クロージャの型を定義 doubleCount = {string in return string.count * 2 } doubleCount("ABCD") // 8 クロージャの{ }内が読みやすくなります。 世界一シンプルなはじめてのSwiftUI 合本版: かんたんにiOSアプリを作って、いじってみる SwiftUI入門 amzn.to 1,20
クロージャも返り値を返すことができます。 var withReturn = { var result = 2 * 2 return result } withReturn() // 4 通常の関数のような感じです。 世界一シンプルなはじめてのSwiftUIの基礎編 SwiftUI入門 amzn.to 600円 (2023年09月04日 17:12時点 詳しくはこちら) Amazon.co.jpで購入する
クロージャも引数をとることができます。 var withParam = {(param: Int) in print("引数は\(param)です。") } withParam(3) // 引数は3です。 関数の定義のように、引数名と型名を指定します。 (カンマで区切ると複数の引数も渡せます。) そして、inキーワードで本体部分と分けます。 クロージャの呼び出し時には、引数名は指定しません。ここは関数と異なります。 世界一シンプルなはじめてのSwiftUIの基礎編 SwiftUI入門 amzn.to 600円 (2023年09月04
クロージャも名前が無いだけで、通常の関数のように内部では変数や定数も使うことができます。 var closure = { let swift = "Swift" var msg = "楽しいです。" print("\(swift)\(msg)") } closure() // Swift楽しいです。 変数や定数のスコープも、クロージャの中だけです。 世界一シンプルなはじめてのSwiftUIの次に読む本 SwiftUI入門 amzn.to 600円 (2023年09月03日 23:29時点 詳しくはこちら)
クロージャは関数に渡すことができます。 ですが、Swiftは静的型付け言語ですし、関数の引数には型を指定する必要があり、指定しないとコンパイルが通りません。 関数に渡す時、クロージャの型はどんな型になるのでしょうか? クロージャは名前が無いだけで関数なので、引数もとれるし、返り値も返せます。実は、この部分を型のように指定してあげるのが、クロージャを関数に渡す時のポイントです。 改めて最単純なクロージャを見てみます。 // 引数をとらず、返り値もないクロージャ var closure = { print("クロージャを実行しました。") } このクロージャは引数を持たず
クロージャは、関数型プログラミング言語のコアの部分です。使われ方、表現がいくつかありますので、一つの側面だけでなく、角度を変えたりしながら慣れていきましょう。 とは言っても、原則はシンプル。クロージャはある処理を{ }でまとめたもので、単体で実行もできますし、関数に渡すことができるということです。そのために、クロージャも様々な表現の仕方があります。 最単純なクロージャを見てみます。 var closure = { print("クロージャを実行しました。") } closure() // クロージャを実行しました。 クロージャを変数に代入しています。そして、後か
Swiftに限らず、現代の主要なプログラミング言語では関数型プログラミングのスタイルも導入され、書けるようになっています。C++やJavaもそうです。 Swiftもパラダイムが色々入っていますが関数型言語で、高い表現力を持ちます。そんな関数型でまず間違いなく備わっている仕組みがクロージャです。 クロージャ(closure)というのは、ある処理をまとめたものです。クロージャも引数をとれ、返り値を返せてほぼ関数ですが、一点大きく異なるのは名前が無いということです。その分、定義が簡略化されプログラムの一連の流れの中でなめらかに使えたりします。 そんなクロージャを使うにあたって、関数型の
プロトコルエクステンションで実装を追加すると、採用した型でのその実装は任意になります。そこで実装が再定義されなければ、プロトコルエクステンションの実装がデフォルトとして使われます。 これも見てみるのが早いと思います。 protocol Bicycle { var wheelSize: Int { get } func brake() // ブレーキ } extension Bicycle { func brake() { &nb
すでに存在しているプロトコルに対して、プロパティやメソッドの実装を追加できます。これを拡張(エクステンション)と呼びます。 やり方は、extensionキーワードを使います。 protocol Bicycle { var wheelSize: Int { get } func brake() // ブレーキ } extension Bicycle { func brake() { print("無事止まりました。") } } エクステンションで追加するのは、インターフェースではなく、実装です。 拡張してもプロトコルの使い方
「ブログリーダー」を活用して、古谷正雄さんをフォローしませんか?