“In connected systems, power is defined by both profound concentration and by massive distribution.” — Joshua Cooper Ramo
それでは、『SwiftのOptionalのベストプラクティス』というタイトルで発表します。 #swtws pic.twitter.com/OJfz2tk4sP — koher (@koher) 2017年4月15日 2 年程前、 Qiita に『SwiftのOptional型を極める』というタイトルで投稿をしました。内容は、 Optional とは何かという説明と、 Optional の使い方を合わせたものでした。 しかし、 Swift 1 だった当時と比べると Optional 周りの状況は大きく変わり、特に使い方の部分が適切ではなくなってきました。また、僕のSwift経験値もたまって、新たな知見も蓄積されてきました。 今回の投稿では、 Swift の Optional 周りを整理し、いつ・どのように Optional を使うべきか、僕の考えるベストプラクティスを紹介します。 全体を通し
Jun 24 2020 , Swift 5, iOS 13, Xcode 11 Swift 5, iOS 13, Xcode 11 In this Swift tutorial, you’ll learn how to use collection protocols to create your own implementation of a Bag collection type. By Brody Eller. Sign up/Sign in With a free Kodeco account you can download source code, track your progress, bookmark, personalise your learner profile and more! Create account Already a member of Kodeco?
特定の型を要素に持つArrayにプロパティやメソッドを追加したい 「特定の型を要素に持つArrayにプロパティやメソッドを追加したい」というケースがあると思います。 例えば、要素がInt型のArrayに対して合計値を取得するtotalというプロパティを追加するケースを考えます。 Swift 3.1 Swift 3.1では以下のようにジェネリックパラメーターと具象型が等しいという制約が書けるようになりました! extension Array where Element == Int { var total: Element { return reduce(0, +) } } let intArray = [1, 2, 3, 4, 5] print(intArray.total) // 15 Swift 3.1以前 これまではextension Array where Element == I
If you haven’t been following the Swift Evolution Process closely, keep reading – this article is for you! In this article, I’ll highlight the most significant changes in Swift 3.1 which will have a major impact on your code. Let’s dive in! :] Getting Started Swift 3.1 is source-compatible with Swift 3.0, so the new features won’t break your code if you’ve already migrated your project to Swift 3.
この記事は Slack Advent Calendar 2016 - Qiita の6日目の記事です。 昨日は S_Shimotori さんの HubotとTypeScriptで翻訳Slack botでした。 Hi, I'm John! 今日はエウレカのiOS開発チームが使っている便利なボットを紹介したいです!Swiftで書かれて、Swiftをビルドするボット、 porygon と呼んでる。 このボットには、Slackでこういうメッセージ(コマンド)を送ると: XcodeのコンパイルからiTunesConnectやCrashlyticsまでデプロイしてくれるボットです!リアルタイムの報告もできる: ビルドはエラーがあった場合、ちゃんとログも送ってくれる: そしてporygonの特徴は、ローカルのMacでも実行できる! porygonみたいなボットが作りたくなってきたかな? Technolo
この三連休はcatch Swift!!連休にあわせて公開です! 2日間のセッションの聞き起こしをまとめました!! 今年の聞き起こしの感想も書いたので少しお付き合いいただけると幸いです。 ごあいさつ niwatakoです。本業は株式会社はてなのiOSエンジニアをしております。 今年も、セッションを聞きながらリアルタイムに記事にする、聞き起こしをしました。初めてご覧頂いた方は、昨年のまとめもご覧いただくと聞き起こしを始めた経緯なども書いています。よろしければご覧ください!ITproにも掲載されました(/・ω・)/ ブログ書くなら!ブックマークするなら! CMです!私がiOSアプリの開発に携わる はてなブックマーク にはSwift特集があります!良い記事を見逃さないように、ぜひご利用ください! 良い記事があったらはてなブックマークでブックマークしましょう!みなさんの素晴らしい記事ではてなブックマ
追記 2020-12-01 この記事も相当古いものになりましたが、 私自身は現在もMVVMのパターンを利用していますが、VM-Vの間ではFluxパターンを活用しています。 iOSアプリにおけるFluxの難しさと開発を加速させる”store-pattern” はじめに 22日目担当のmuukiiです。 最近Swiftを2スペで書くことにハマってます😎 先日KickstaterのiOSアプリがオープンソースとして公開されましたね! GitHub - kickstarter/ios-oss: Kickstarter for iOS. Bring new ideas to life, anywhere. 最初はちら見した程度だったのですが、MVVM + ReactiveCocoaということに気づき興味が湧いたので色々観察していました。 観察した中で良いな!と思ったことが幾つかあったのですが、今回
昨年に続き、3月2〜3日に開催されたtry! Swift Tokyo 2017に行ってきました。 テスト系のセッションが3つあったので、それらについてまとめます。 今年は海外からを含め700人を越える参加者があり、会場になったベルサール新宿セントラルパークの広いホールもこんな感じ(会場の2/3あたり後方から撮影)。 クックパッドアプリのテストを味わう - Tasting tests at Cookpad 初日、クックパッドの松尾さん(@Kazu_cocoa)の講演。全て英語でのプレゼンでした。すごい。 20170302 tryswift tasting_tests from Kazuaki Matsuo www.slideshare.net このセッションでは、UIのテストについて、UIのテストがクックパッドの開発をどうサポートしているかについて語られました。スライドには"Tests"とだ
twitter.com Swiftでは、手作業でモックオブジェクトを作成します。その設計がどのようにユニットテストを書けば良いかという方針を決めています。テストをより表現力豊かにするようモックオブジェクトをより強力にすることはできるでしょうか?モックライブラリから何を学ぶことができるでしょうか?OCMockitoというObjective-C製のモックライブラリを書いてきた私の経験をSwiftの手作りモックに応用してみます。 モックオブジェクトをより便利にする アメリカン・エキスプレスのiOSエンジニアです。Swift環境でモックオブジェクトをどう作るのか なぜ実オブジェクトの代わりに用意するのか? コックは時間を掛けます。常にいるとは限りません。 UnitTestでは偽のコックを使いたいわけです。 料理をテストするのではなく、料理長にWaiterがどのように接したか、契約関係、インタラクシ
twitter.com 関数を完全にテスト可能にするためのものが2つあります。作用の分離と共作用を表面化です。この2つの側面の背景にある理論を探り、どのようにすればテスト容易なコードに導けるかを示します。また、最近オープンソース化されたコードベースを基にKickstarterで我々がどのように実践しているかも紹介します。 テスト可能なコードを書くということの2つの側面 テストについて深く話します テスト可能なコードを書くには?それは表裏をなすものです。 そして関数言語を例にとって、キックスターターで我々がやっていることをお話します。OSSにしたのでみてもらえます。 Contact Me! なぜテストをするか。経験と方法について知ることが必要 潜在バグを潰せたりして良い。先人たちが色々言っている。 私自身コードを書く時に関数的な書き方で書くことは良い試練だと思う。 実装のためにコードを書くの
はじめに Minimal Cake Pattern1とは、株式会社ドワンゴの一部で採用されているDI(Dependency Injection)の手法である。このMinimal Cake Patternは主にScalaで行われている手法であるが、この記事ではこの手法をSwiftに移植することを目指す。 この記事で紹介したソースコードは次のリポジトリに置かれている。 もしこの記事を読んで、疑問や改善するべき点を見つけた場合は、気軽にコメントなどで指摘して欲しい。 Minimal Cake Patternとは? こちらの記事に詳細な解説があるので、まずはこちらを読んでいただきたいが、DIについての知識がある場合は飛ばしてもよい。 Scalaにおける最適なDependency Injectionの方法を考察する 〜なぜドワンゴアカウントシステムの生産性は高いのか〜 SwiftによるMinimal
Swiftの強力な機能であるstaticメソッド制約の紹介と、Kotlin, TypeScript, Java, Scala, C++との比較C++ScalaKotlinTypeScriptSwift 先に結論 Swiftのstaticメソッド制約はちょっとしたシンプルな機能に見えるけど便利で深い Kotlin, TypeScript, Java で同じことをすると冗長で間接的なコードになってしまう TypeScriptのstaticメソッド注入は独特のテクニックで面白い 提示するJavaの実装は「T を new する」方法でもあるので参考にして Scala は間接的ではあるもののKotlinより良い形でかける SwiftはScalaの形をさらにより良くした形とみなすことができる C++はSwiftと同じ事ができるがわかりにくい書き方になってしまう 導入 Swiftはprotocolという
はじめに こんにちは!モバイルアプリサービス部の加藤潤です。 今回はSwift3で大きく変わったGCD(Grand Central Dispatch)のAPIについて、その基本的な使い方を見ていきたいと思います。 基礎知識のおさらい GCDの具体的な使い方に入る前に基礎知識のおさらいをしておきます。 同期と非同期 まずは同期と非同期についてです。 GCDではキュー(queue)という「処理の入れ物」に対して処理を登録することで、適切なスレッド上で処理が行われるのですが、キューに登録する際に以下の実行方式のいずれかを指定することができます。 同期 キューに処理を登録したスレッドが登録した処理が完了するのを「待つ」 GCDのメソッドはsync〜 非同期 キューに処理を登録したスレッドが登録した処理が完了するのを「待たない」 GCDのメソッドはasync〜 上記のように、違いは処理が完了するのを
こんにちは、WantedlyでiOSのエンジニアの杉上です。先日Twitter上で勉強会を行うという斬新な試みにお声がけいただき、Swift Tweets Tweetupに登壇させていただきました。このときに投稿した内容をご紹介します。 リンクSwift Tweets Tweetup#swtwsハッシュタグSwift Tweets 登壇者リストKosuke OgawaさんによるtogetterまとめQiitaのswtwsタグの記事 Tweetupとは 登壇者の皆様メインスピーカー LTスピーカー 登壇内容(登壇順) Swift時代に悩ましいUIViewControllerをどう扱うか susieyySwiftのエラー4分類が素晴らしすぎるのでみんなに知ってほしい koherSwiftの型の限界を超える tarunonSwiftのString(文字列) APIとの付き合い方 mono0926
最近 Qoncept では TensorFlow を使った案件が続いており、その中で TensorFlow を iOS 上で使いたいことがありました。 ぱっと浮かんだ選択肢は次の二つでした。 TensorFlow を iOS 用にビルドして C++ の API を Swift から叩く 学習は TensorFlow / Python で行って、テンソルの計算だけを iOS / Swift でシミュレーションする しかし、前者ついては、まだ TensorFlow を iOS 用にビルドできなさそうでしたしできるようになりました(コメント参照)、たとえできたとしても C++ の API を Swift から叩くのは辛そうです。 TensorFlow がありがたいのは学習時の自動微分等の機能であって、学習済みのモデルを利用するときはただテンソルの計算をしてるだけです。別に学習を iOS 上でやり
I want to test the equality of two Swift enum values. For example: enum SimpleToken { case Name(String) case Number(Int) } let t1 = SimpleToken.Number(123) let t2 = SimpleToken.Number(123) XCTAssert(t1 == t2) However, the compiler won't compile the equality expression: error: could not find an overload for '==' that accepts the supplied arguments XCTAssert(t1 == t2) ^~~~~~~~~~~~~~~~~~~ Do I have d
Swiftにはポインタを表すための型として UnsafePointer とその仲間達があります。CoreFoundationなどC言語のライブラリを使う時などに利用することになります。これらのポインタ型のAPIはとてもよく考えられた素晴… UnsafePointer<T> などについて詳細に説明されています。普通にアプリ書いているとなかなか触れる機会が無いですがいざ使わなきゃいけなくなったときにこういう記事あると良いですね。同じくメモリ周りの濃いめの記事として、Swiftのメモリレイアウトを調べる ・ Swiftのenumのメモリレイアウトの最適化が凄いも書かれていました👀 Swift EvolutionSwift 4メインの開発体制に移行これまでSwift 3.1の開発は master ブランチ上でなされていましたが、1月17日を区切りに swift-3.1-branch ブランチ上で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く