In this talk, we'll go over some practical recommendations for building cross-platform Swift code, from development environment to testing and continuou…
今回は、タイトルの通り、西方夏子さんが書かれた「Swift+Core DataによるiOSアプリプログラミング」を拝読させていただいた感想を書かせていただこうと思います。 はじめに 今回この記事を書くに至った経緯としましては、マイナビブックスさんにて、読者モニター募集のキャンペーンをやっていまして、 応募させて頂いた所、当選したとご連絡を頂き、本の出版日の前にモニターとしてPDFを頂きました。 モニターの条件として、SNS等で感想をシェアするということでしたので、このblogに感想を書かせていただき、自分のTwitter等で拡散させていただこうと思います。 以下、拙いですが、私が読んだ書評となります。 書評 書かれているのはCoreDataのことだけじゃない まず、この本では、単にCoreDataのことについてズラズラ書いているものではなく、 UIKitの基礎から、実際にCoreDataを
海外事業向けのiOSアプリケーション開発を担当している西山(@yuseinishiyama)です。クックパッドは現在、海外複数カ国に向けてサービスを展開しています。 主にObjective-Cで記述されたアプリケーションを全面的にSwiftに書き換える機会があったので、その際に得た知見や書き換えるに至った動機を共有します。 書き換えに至るまでの経緯 この項では、書き換えに至るまでの経緯について説明します。 Objective-C期 アプリケーションの開発は2014年7月頃にスタートしました。Swiftの発表直後でしたが、時期尚早ということもあり、Objective-Cで実装することになりました。 Objective-C、Swift混在期 2014年10月頃から、Swiftへの段階的な移行のために、新規のコードをSwiftで書くようになりました。Swiftの記述力や、ヘッダと実装を行き来しな
このブログでは昨年末の振り返りエントリー位でしか触れていませんでしたが、SwiftでJSONのデコードを簡単かつ型安全に行うことができるHimotokiというライブラリーを昨年の5月から開発しています。 github.com ikesyo.hatenablog.com 先々週にはなりますが、その最新バージョンの1.5.0をリリースしました。 Release 1.5.0 · ikesyo/Himotoki · GitHub このバージョンには以下のような変更が含まれています。 Linuxでのビルドをサポート(Swift Package Managerは1.4.0でサポート済み) build関数をカリー化関数からクロージャーを返す関数に変更(Xcode 7.3/Swift 2.2からの警告に対応) build関数を非推奨に変更(Swift 2からは特に使う必要がない) Extractor.va
はじめに 2016年2月22日(日本時間23日未明)、IBMのクラウドプラットフォームBluemixがSwiftに対応したことを発表しました。加えて、Kituraと呼ばれるSwiftのWebアプリケーションフレームワークがOSSとして公開されました。 IBMによるSwift関連の取り組みはオフィシャルサイトとGithub上のリポジトリで確認することができます。 https://github.com/IBM-Swift https://developer.ibm.com/swift/products/kitura/ なぜIBMはSwiftを選ぶのか? Swift@IBMのQuestions and Answersで、What is Swift?という問いに対して、以下のように答えていることから、Swiftを将来性のあるプログラミング言語と捉えて、自社のプロダクトに採用しているのだと思います。
RxSwiftをちょっとずつ読んでる。最初はちょっと継承構造が激しい印象を受けたけど、基本的に関数型のワードに疎い自分でもとても読みやすいです。 Rxの不思議を理解していくと、アプリケーション内の別のパラダイムと仲良くする方法を考えるときのヒントになったり、まだ見ぬ応用が待っている予感がします。 ObservableとSink Rxは、関数型言語の知識や並行処理の知識がなくても普通に使えるため、まずはその辺の事柄に目をつむり、 Observable がどう作用しているか理解するところから見ていきます。 さて、 Observable のオペレーターメソッドはなにをしているんでしょうか。 Observable に生えている map やら flatMap やらの各オペレーターメソッドは、新しいObservableを作って返しますが、このとき返るのはもちろん、オペレーターごとの挙動がカスタマイズさ
今回のエンジニアブログ担当の山下です。 先日AppleのSwift Blogを眺めていたところ、 「Nullability and Objective-C」という気になる記事を見つけました。 もしかするとObjective-CでもSwiftのような安全なコーディングが出来るようになるのでは…!?と 若干の期待をしつつ試してみました。 nullableとnonnull Objective-Cの新しい言語仕様ではnullableとnonnullの2つの注釈が追加されています。 それぞれnilやNULLが入る可能性のあるもの、入れることが認められないものを意味します。 注釈は*記号の後に記述します。 nullを許容しないプロパティの例を以下に示します。 @interface ObjCClass : NSObject @property NSString * __nonnull string; @
Swift製でRailsライクなフレームワークが出たっぽいです。 その名もSwifton! Swift on Railsの略のようです! 略したらRailsは消えたのかな(´・ω・`) ということで、ちょっと触ってみました。 【公式github】 https://github.com/necolt/Swifton インストール 手元の環境がubuntuだったのでubuntuでやります。 最新のswift(3.0-dev)がいるようなので、ソースからコンパイルします。 $ cd /usr/local/ $ wget https://swift.org/builds/development/ubuntu1510/swift-DEVELOPMENT-SNAPSHOT-2016-02-08-a/swift-DEVELOPMENT-SNAPSHOT-2016-02-08-a-ubuntu15.10.
本記事ではDevelopers.IO 2016 セッションB-3でRealm 岸川克己氏に発表いただきましたSwiftで書かれたコードのパフォーマンス・チューニングのレポートをお届けします。 はじめに 今回しない最適化の話 アルゴリズム メモリ 言語機能をつかった最適化の話をします。 自己紹介 Realmで働いています。 是非この後もRealmについて聞きに来てください。 SQLiteより高速で使いやすいです。 最適化の前に 早すぎる最適化は諸悪の根源である(Knuth先生: Art of computer Programming の著者) 最適化の前に計測する 可読性とのトレードオフ UITableViewとかでキャッシュをクリアするとかもあるある ソフトウェア 80 / 20 ルール (20%の実行コードが80%の実行時間を占めている) ありとあらゆるところを最適化しても効果は得られな
まだ荒削りですが、お披露目してもいいところまで来たので。 https://github.com/dankogai/swift-pons 売り口上 これでSwiftでも GMPとか外部ライブラリなしで任意精度整数(BigInt)や任意精度分数(BigRat)や任意精度浮動小数点数(BigFloat)が使えるようになります。 外部依存がないので、Xcodeでなくてもswiftcがあれば使えます。もちろんOS XだけでなくてLinuxもサポート その任意精度数も、四則演算以外の演算を最初からサポートしています。整数は素数判定できますし、任意精度実数は<math.h>の関数を使えます。 これだけでもかなりハッピーになれます。 でも本当のウリは、そこじゃないんですよ… 承前: 古き良きCの時代 例えばman powとしてみます。こんな答えが返ってくるでしょう。 SYNOPSIS #include <
2016 - 02 - 16 KotlinとSwiftを比較してみる - 基本文法編 プログラミング Kotlin1.0が正式リリースされた ので、せっかくなので言語仕様がかなり似てる、しかし微妙に違って混乱しやすいKotlinと Swift の文法を比較してみました。 基本的な文法はもちろんNullSafeの?もよく似ていますが、ちょっとが違って混乱しやすいです(※自分も絶賛混乱中w) Frameworkや基礎 API 部分はまた別です。 今回はとりあえず基本文法です。Optionalは厄介なのでまた別途 基本文法 クラス宣言 Kotlinは宣言と一緒に コンストラクタ もかけるのが特徴ですね。ただView周りだと 複数 必要でやらないことも... Kotlin class ClassName([変数名 : 型]...) : SuperClass([スーパークラスのコンストラクタ) {
iOSアプリのビルドに時間がかかるようになったので、ビルド時間を計測して問題の有る箇所を修正したのでその方法を記す。 ビルド全体の時間の計測 まずビルド全体でどれだけ時間がかかっているかを計測した。 ターミナルで以下のコマンドを実行することでXcodeでビルドした時にかかった時間が表示されるようになる。 これを実行してXcodeをリスタートする。クリーンした後ビルドを行うと、以下のようにビルド時間が表示される。小さいサンプルアプリなので4.324秒である。 このビルド時間が長い場合はさらにファイル毎、メソッド毎の時間を計測する。 ファイル毎のコンパイル時間の計測 (この後で説明するメソッド毎の計測方法でファイル毎の時間も得られるので、この項は読み飛ばしても問題ない) ファイル毎のコンパイル時間を計測するにはxctoolを利用する。プロジェクトルートフォルダで以下のコマンドを実行する。
Quickでテストを書くと、SwiftとObjective-Cで書かれたプログラムがどう動作しているか楽に確認できます。 ところが、有用なテストはQuickを使わなくても書けます。 役に立つテストが書けるようになるには、Quickのようなフレームワークの使い方を覚える必要はありません。 このディレクトリにあるファイルは、QuickかXCTestかを問わず、 「役に立つ」テストとは何か、そしてどうやってそういったテストが書けるか、 それを拙文ながら説明しようとしています。 目次: (テストについて事前知識がまったくない方は、順に読んでいくことをオススメします。) Xcodeでテストを用意しましょう: アプリのコードがテスト・ファイルから参照できない場合や、 その他スムーズにテストが動かない場合はこのファイルを読み返すといいかもしれません。 XCTestで役に立つテストを書く方法:Arrang
FunctionalReactiveProgramming(FRP)の勉強中です。 まだ正直なところ『なるほど,分からん』という状態ですが RxSwiftをおっかなびっくり触ってみた結果を整理しようと思います。 (触ってみたら動いたレベルなので他に良い使い方があるかも......です) 1. RxSwiftとは? ReactiveX(Reactive Extension)という,FRPを実現するためのライブラリのSwift実装です。 Swift実装以外にもJavaScriptやJava,C#など様々な言語で実装されたライブラリがあるようです。 (AndroidだとRxAndroidとかあるみたいですね) RxSwift 2. どんなことが出来るの? 分かりやすいポイント(というか自分が現状で理解できた範囲では) 「データバインド」と「Promiseパターン」を簡単に実現できるようになります
今日からRxSwiftはじめる方へ。 最初の導入 概念理解 まずはstream(observable)の理解 【翻訳】あなたが求めていたリアクティブプログラミング入門 Cold,Hotについて http://qiita.com/toRisouP/items/f6088963037bfda658d3 コードを触る RxSwift https://github.com/ReactiveX/RxSwift まずはplaygroundを触りながら理解。 playgroundの日本語訳がこちらにまとめられているのであわせて。 http://tiny-wing.hatenablog.com/entry/2016/01/02/161322 オススメサンプル ./RxExampleの中にいい感じのサンプルが入ってるので探す。 githubのapiとページング GitHubSearchRepositorie
RxSwiftを触り始めて2週間ほど経ちました。 近頃はObservable型を使った複数処理の連結実行が便利!?と感じています。 上手く使えば、処理同士を疎結合に保ちながら連結実行できるようになり、 保守性向上に大きく寄与しそうです。 今回は、その辺りを少し整理して書いてみたいと思います。 (例によって試したら動いた!レベルなので他の良い方法があるかも......です) 1. この記事で解決したい課題 まず、今回の記事で解決したい課題を書いてみます。 「指定したURLにリクエストを投げて、返却されたHTMLデータをファイル保存する」 という処理をRxSwiftのObservable型を使って綺麗に実装することを考えます。 この処理を実装しようとした場合、まず以下の2つの処理を分けて実装し、 それらを組み合わせる方式で実現しようとするのではないでしょうか? 引数で渡されたURLにリクエスト
はじめに 以前触ったことがあったObjective-C製のReactiveなライブラリとしてReactiveCocoa(RAC)がありますがObjective-Cで書かれてることもあって、マクロごりごりで組まれていてSwiftで書くとあまり書きやすいイメージがありませんでした。 なので今回は、よりSwiftの世界に歩み寄ったReactiveなライブラリということでRxSwiftを体験してみました。 そもそもRxSwiftとは? RxSwiftとはReactiveX (Reactive Extensions)のSwift実装のライブラリで、よく名前を耳にするReactiveProgramming(RP)をSwiftの世界で実現してくれるものです。 ReactiveXはSwiftだけでなく様々なプログラミング言語でライブラリが存在しており、他のプラットフォームでもその概念を持ち込むことが可能で
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く