タグ

SWIFTに関するhikazohのブックマーク (128)

  • Swiftの演算子を理解する - Qiita

    Swiftの演算子についてまとめてみます。 Swiftの演算子は関数 +-*/==??と言った演算子は全て関数です。 public func +(lhs: Int, rhs: Int) -> Int public func -(lhs: Int, rhs: Int) -> Int public func *(lhs: Int, rhs: Int) -> Int public func /(lhs: Int, rhs: Int) -> Int public func ==(lhs: Int, rhs: Int) -> Bool public func ??<T>(optional: T?, @autoclosure defaultValue: () throws -> T) rethrows -> T struct MyStruct { let id: String } func ==(lh

    Swiftの演算子を理解する - Qiita
  • どこよりも分かりやすいSwiftの"?"と"!" - Qiita

    swiftはオプショナルが便利! と、swiftがリリースされてから言われてますがswift初心者からすると厄介極まりないです。 ?と!の使い分けが分からずとりあえず"?"をつける、ソースコードを書いていたら急にXcodeに怒られ、エラーに導かれるままに"!"をつける... こんな経験がある方がいるのではないでしょうか。 この記事はそんなオプショナルがフワフワした状態を脱却することを目的としています。 (そのため、あまり深い部分は扱いません...) 細かく項目を区切っているため多く見えますが、サクサク読めるはずです。頑張って読んでいただければオプショナル型を理解できると約束します。 時間のない人はまとめだけ見ていただければと思います。 ◼︎ 読了時間 オプショナル型と非オプショナル型 (4分) オプショナル型と非オプショナル型の違いを示します オプショナル型 (6分) オプショナル型"?"

    どこよりも分かりやすいSwiftの"?"と"!" - Qiita
  • 第34回 The value of the property | gihyo.jp

    プロパティの(価)値 前回予告したとおり、今回はカジュアルな話題です。題して“⁠The value of the property⁠”⁠。「⁠プロパティの値」とも「プロパティの価値」とも邦訳できますが、その双方の意味を込めています。 しかしそもそも「プロパティ」って何でしょう? iOSの辞書によると(図1⁠)⁠、「⁠財産」「⁠不動産」「⁠属性」「⁠所有権」そして一周回って「プロパティ」と出てきますが、いずれも共通しているのは「固有の何か⁠」⁠。たとえばファイル。ファイルの内容が「値」なら、ファイル名や更新日時などのメタデータは「プロパティ⁠」⁠。「⁠固有値」という訳がよさそうなのですが、この言葉は数学における“⁠eigenvalue⁠”という言葉に「取られて」しまったおかげか、ITの世界では「プロパティ」というカタカナで落ち着いたようです。 図1 iOSの辞書でプロパティを検索 値の中の値

    第34回 The value of the property | gihyo.jp
  • Swift 4におけるオブジェクト間での相互作用

    はじめに 第2回まではSwift 3、4でのプログラムの新しい書き方や追加されたよく利用する新しい機能について説明しました。第3回のテーマは「実際にアプリ内の画面を動かす際の処理」です。iOSアプリで動的な画面を表示するための基的な処理である、パラメータの受け渡しとデリゲートについて、サンプルを用いて説明します。また、パラメータの処理に関して、Swift 3以降で仕様の固まった新しい文法も紹介します。各項目で説明する内容についてのSwiftのバージョンは【】内に記します。 連載はアプリ開発の最初に知っておくべき基的な事柄の説明をメインテーマとしています。内容によっては、Swift 4以前のバージョンに触れることや、Swift自体の言語仕様などには説明が及ばないこともご了承ください。連載以上の各種情報は末尾の参考文献等を参照してください。 対象読者 記事は、次の方を対象にしています

    Swift 4におけるオブジェクト間での相互作用
  • 第33回 ゆくXくるX | gihyo.jp

    iPhone Xの購入 稿を読者のみなさんがお読みになるのは年末年始ですが、その1月前の執筆現在、今年出る予定のApple製品は、HomePodが延期されてあますところiMac Proだけとなりました。最大の目玉であるiPhone Xも、品不足で来年になるかと危惧したものの、筆者の手元に届いており(写真1⁠)⁠、animojiがはかどっております(図1⁠)⁠。 写真1 iPhone Xラインナップ 図1 animoji iPhone Xと言えばホームボタンがなくなったことと、「⁠全画面-顔面センサー=鬼ディスプレイ」のほかにも、体価格がついに$1,000の大台に乗ったことも話題となりました。ストレージ256GBの上位機種にいたってはMac Bookとほとんど値段が変わりません。それだけの価値はあるのでしょうか? できることを列挙するのであれば、MacBookiPhoneの足元にも及び

    第33回 ゆくXくるX | gihyo.jp
  • Xamarin.iOS の Swift バインディングライブラリを作る - Qiita

    Xamarin Advent Calendar 2016 17日目です。 以前から僕はネイティブバインディング関連の記事をいろいろ書いてきました。 Xamarin.iOS でバインディングライブラリを作る Xamarin.iOS のネイティブバインディングを活用して既存の Objective-C 資産を流用する 新しくなったObjective SharpieでCocoaPodsのバインディングライブラリを作る 今回もネイティブバインディングです! Swift が使われるようになってしばらくたち、CocoaControlsに新しく出てきている今風の UI ライブラリはほとんど Swift 製になりつつあります。 Swift を使う場合、Swift のサポートライブラリ(ランタイム?)が必要となり、Swift で作ったアプリはデバッグ実行やアドホック配布はできるけどストアに上がらない…!という

    Xamarin.iOS の Swift バインディングライブラリを作る - Qiita
  • Swiftでブロックチェーンを実装してみる - Qiita

    『ブロックチェーンがどのように動いているのか学ぶ最速の方法は作ってみることだ』 『ブロックチェーンとは』みたいな記事を読んで概念はわかったつもりでも、「わかったような気がする」止まりで腹落ち感までは得られず、いつか自分で実装してみたいと思っていました。1 でも難しそうだし、業とは関係ない(→時間が割けない)ので永遠にやらなそうだなぁ。。と思ってたら、こんな記事を発見。 ブロックチェーンを作ることで学ぶ 〜ブロックチェーンがどのように動いているのか学ぶ最速の方法は作ってみることだ〜 - Qiita なんとグッとくる副題でしょう2。記事の冒頭だけざっと読んだところ、なんか、サッとできそうだぞ・・・!と。実装量でいえば1日もかからなそうです。 Pythonはわからないので、Swiftで書いてみました。 以下、元記事のステップに沿ってSwift実装を載せていきます。引用記法の部分は元記事より引用

    Swiftでブロックチェーンを実装してみる - Qiita
  • [Swift] あると便利だったextension達 記法編 | DevelopersIO

    はじめに モバイルアプリサービス部の中安です。 最近ブログを書けていなかったので、小ネタを少しばかり・・・。 アプリを作ってきた際に、あるとなかなか便利だったextensionをボチボチとご紹介していければと思っています。 アプリの目的に合わせてやりかえる必要があったり、もっとよい実装があるかもしれませんが、何かの役に立てば光栄です。 今回は文字列の記法編です。 APIのキーやパラメータ、DBの論理名、その他諸々とスネーク記法を使ったり、キャメル記法を使ったりというシーンは多いかと思いますが、 そういう時に記法の変換を行ってくれるメソッドを準備しておけば色々と助かることも多いでしょう。 文字列をアッパーキャメル記法に 念のための説明ですが、「アッパーキャメル記法」とは単語の最初の文字を大文字にして、単語間には何も入れない(アンダースコアやスペースがない)記法のことです。 Swiftのクラス

    [Swift] あると便利だったextension達 記法編 | DevelopersIO
  • [Swift 4] privateとfileprivateの挙動が変わりますよというお話 | DevelopersIO

    はじめに モバイルアプリサービス部の中安です。 Swift3でスコープの改変が行われ、「private」に加えて、「fileprivate」というスコープが加わりました。 Swift4ではさらにスコープの改変が行われるそうで、fileprivate の役割がまた少し変わってきます。 自分も忘れてしまわぬよう、しっかりと予習復習をしておこうとブログにしたためることにしました。 Swift3での挙動 fileprivate は、簡単にいうと「同一ファイル内であればアクセスできる」というスコープとして登場しました。 ファイルひとつをモジュールとして考えたときに、その内部では隠蔽されなくてよいだろうという考え方なんだろうと思います。 つまりは、別のクラスや構造体などであっても、その同一ファイル内であれば見ることができるということですね。 具体的にソースで見てみます。 class Hoge { pr

    [Swift 4] privateとfileprivateの挙動が変わりますよというお話 | DevelopersIO
  • ARKitのサンプルコード集「ARKit-Sampler」を公開しました - その後のその後

    iOS 11のリリースと同時に、ARKitのサンプル集「ARKit-Sampler」をオープンソースで公開しました。 ARKit Sampler ソースコードは GitHub に置いてあるので、ご自由にご活用ください。 https://github.com/shu223/ARKit-Sampler 使用言語はSwift 4.0です。 ARKitのサンプルは公式のを含めいろいろ出てますが、ARKit-Samplerでは「余計な実装を混ぜずに、できるだけシンプルな実装で伝える」というところに気をつけています。もともとは書籍執筆のために用意したものなので、とくに序盤のサンプルはシンプルで意図が汲みやすいと思います。 ビルド方法 ここから Inceptionv3.mlmodel をダウンロードして mlmodels フォルダ配下に置く Xcode 9 でビルドしてiOS 11端末にインストール 基

    ARKitのサンプルコード集「ARKit-Sampler」を公開しました - その後のその後
  • AudioQueueを使って m4a (AAC) で録音する Swift 3.0 のサンプルコード - yuumi3のお仕事日記

    現在の仕事で作ってるiOSアプリの中に、マイクからの音をm4a (AAC) で録音する機能が必要なので、 適当なサンプルコードはネット上に在るだろうと思い探したのですが、案外みつかりませんでした。 なぜ見つからないかというと 今回はいろいろな理由から、安易な AVFoundation ではなく AudioQueueを使う必要があった Objective.c のサンプルは見つかるが、Swiftは少ない、さらに Swift 3.0 のコードは絶望的 また録音フォーマットが PCMのものばかり オーディオ周りが好きなiOS(mac OS)プログラマーは少ないの? 私もオーディオ周りの知識は極めて低い Google先生が教えてくれたのは以下でした Appleの Audio Queue Services公式ドキュメント コードは Objective.c ですが、確実に信頼できる情報 Swift

    AudioQueueを使って m4a (AAC) で録音する Swift 3.0 のサンプルコード - yuumi3のお仕事日記
  • Swift 3 でジェネレータを作ったり、遅延評価してみる - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me Swift でのジェネレータの取扱いや遅延評価については,ymyzk 先生の Swift でジェネレータを作ったり、遅延評価してみる において解説されているが,2015年5月の記事であり,Swift のバージョンも1.2だった頃の記事なので,改めて書くことにした. 2017年7月16日現在,Xcode 9.0 beta 上では Swift 4.0 がサポートされているが,手元の環境は Xcode 8.3.3 であるため,Swift 3.1 をベースに解説する.Apple の先走りで,ドキュメントのリンク先が一部 Swift 4 に関するものになっている部分があるが,記事の理解にあたって質的な違いはないはずである. これまでの流れ Ruby の Enumerator でジェネレータを作ったり、遅延評価してみる -

    Swift 3 でジェネレータを作ったり、遅延評価してみる - ryota-ka's blog
  • 2017年の夏、Swiftをどうやって学ぶか - Hatena Developer Blog

    Xcode 9 betaがリリースされ、Swift 4(とSwift 3.2)の足音が聞こえてくる。このタイミングで、今こそSwiftを学ぼうと考えるのは、なんら不思議なことではない。しかしながら、いざSwiftを学ぼうとしても、どうするのがよいのか、最初は見当もつかないことだろう。ではプロフェッショナルとしてSwiftを利用しているプログラマーたちは、どのようにして学んできたのだろう。 学び方は人それぞれであり、正解はないと考えている。 私の場合は、最初にざっくりと学び、手を動かして慣れ、ようやっと体系的に学ぶという手順を踏むことが多い。 最初のフェーズでは、何が出来るか自分の道具箱には何が追加されるのかと知るためであり、次のフェーズは実際に道具を使ってみて使い方を覚えるフェーズと言える。 そうして道具箱全体が見渡せるようになってきたところで、体系的に学ぶことで効率良く学ぶことが出来ると

    2017年の夏、Swiftをどうやって学ぶか - Hatena Developer Blog
  • iOSでの動画処理における「回転」「向き」の取り扱いでもう混乱したくない - Qiita

    AV Foundation を用いて動画処理を行う(=カメラ入力をリアルタイムに処理する)プログラムを書いていると、回転・向きの取り扱いで混乱してしまうことが度々あります。 関連しそうなプロパティやら何やらが多すぎてややこしい、となんとなく思ってるけど洗い出してみればそうでもないのかも、とも思うので、ドキュメントに目を通しつつ、コード書いて実機で挙動を確認したりもしつつ、いったん整理みようと思った次第です。 AVCaptureDevice の position による向きの違い AVCaptureDevicePosition には Back と Front があって、要はバックカメラ(背面カメラ)か、フロントカメラか、の違い。 バックカメラの場合は、 return AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) gu

    iOSでの動画処理における「回転」「向き」の取り扱いでもう混乱したくない - Qiita
  • [Swift 3.1] 全ての数値型に失敗可能変換イニシャライザーが追加されました | DevelopersIO

    数値型に新しくイニシャライザーが追加された こんにちは。モバイルアプリサービス部の加藤潤です。 Xcode 8.3、Swift 3.1が正式にリリースされましたね! Swift 3.1では全ての数値型に失敗可能変換イニシャライザーが追加されました。 proposalはSE-0080が該当します。 Proposed solutionにある通り、数値型にinit?(exactly:)という失敗可能イニシャライザーが追加されました。 // Conversions from all integer types. init?(exactly value: Int8) init?(exactly value: Int16) init?(exactly value: Int32) init?(exactly value: Int64) init?(exactly value: Int) init?(ex

    [Swift 3.1] 全ての数値型に失敗可能変換イニシャライザーが追加されました | DevelopersIO
  • [Swift] Swinjectを使ったDependency Injection | DevelopersIO

    はじめに こんにちは。 最近生後7ヶ月の娘を見た人から「眉毛が垂れててお父さんそっくりですね〜」と言われるのが定番になっている加藤です。 さて、今回はSwiftのDIフレームワークであるSwinjectの話です。 DIとは DIはDependency Injectionの略で、日語では「依存性の注入」と訳されます。 「DIとは何か」を説明した記事は山ほどありますが、ここでは一番端的に表現している記事を見つけたので引用します。 “依存性注入とはインスタンス変数にオブジェクトを与えるということです。当にただそれだけです。” - James Shore Swiftにおける現実的なモックより引用。 つまり、あるオブジェクトが依存しているオブジェクトを外から渡してあげることを意味します。 依存しているオブジェクトを中で作らずに外から渡してあげることで、オブジェクト同士を柔軟に組み合わせることが可

    [Swift] Swinjectを使ったDependency Injection | DevelopersIO
  • 新しいアプリを作るときによく使うSwift Extension集 - ZOZO TECH BLOG

    iOSエンジニアの庄司 (@WorldDownTown) です。 最近、業務で新しいiOSアプリを立て続けにいくつか開発する機会に恵まれました。 そんな中、いくつもアプリを使っていると、どのアプリでもよく使う処理があぶり出されてきます。 そういう処理はSwiftのExtensionとして別ファイルに書き出し、他のアプリへも切り出しやすいように個別のFrameworkにして管理しています。 Frameworkの管理については過去のこちらの記事を参考にしてみてください。 今記事では、最近の開発でよく使ったExtension集をご紹介します。 Swift標準ライブラリ Date private let formatter: DateFormatter = { let formatter: DateFormatter = DateFormatter() formatter.timeZone = N

    新しいアプリを作るときによく使うSwift Extension集 - ZOZO TECH BLOG
  • クックパッドのiOSアプリ開発を加速させるスクリプト群 - クックパッド開発者ブログ

    こんにちは、技術部モバイル基盤グループの茂呂(@slightair)です。 今回は、ちょっと地味ではありますが、クックパッドのiOSアプリ開発を支えているスクリプト群について書きたいと思います。 日々iOSアプリ開発を行うとすれば、Xcodeまたはその他のお気に入りのエディタでコードを書き、ビルドと実行を繰り返して開発を進め、アプリが完成したらサブミット、めでたくリリースという流れになると思います。 場合によってはこうした開発の所々をサポートするツールを使うこともあるでしょう。クックパッドでもいくつかのツールを使っていますし、場合によっては自作することもあります。 ツールを導入することで解決できることであればそれでよいですが、もうちょっと気の効いたことをして欲しい、リリースフローなど自分たちのアプリ開発の進め方の都合で発生する繰り返しタスクを省力化できないか、というような比較的小さな問題を

    クックパッドのiOSアプリ開発を加速させるスクリプト群 - クックパッド開発者ブログ
  • Swift 3 マイグレーション - クックパッド開発者ブログ

    技術部モバイル基盤グループの ヴァンサン です。 西山が 以前紹介したように 、クックパッドでは 2014 年から Swift を使っています。長い間、海外向けのアプリや みんなのお弁当 だけに使われていましたが、去年の5月から、 クックパッド iOS アプリ の開発にも Swift を使うようになりました。歴史のある iOS アプリなので Objective-C でのコードの方がまだ多いのですが、いまは既存の画面の変更を除いて新しいコードが Swift で書かれています。既存の画面を Swift で書き直すこともあります。 Xcode 8.0 がリリースされてから数ヶ月 Swift 2 を使っていましたが、去年の12月のリリース直後に Swift 3 へのマイグレーションをしてから、開発で Swift 3 を使っています。2017年2月1日にリリースされた 17.1.1.0 が Swif

    Swift 3 マイグレーション - クックパッド開発者ブログ
  • 使うと手放せなくなるSwift Extension集 (Swift3版) - Qiita

    extension UICollectionView { func register<T: UICollectionViewCell>(cellType: T.Type) { let className = cellType.className let nib = UINib(nibName: className, bundle: nil) register(nib, forCellWithReuseIdentifier: className) } func register<T: UICollectionViewCell>(cellTypes: [T.Type]) { cellTypes.forEach { register(cellType: $0) } } func register<T: UICollectionReusableView>(reusableViewType: T.T

    使うと手放せなくなるSwift Extension集 (Swift3版) - Qiita