My Favorite Things - Coding or die.

とある技術者の経験記録、的な。

swift

Quick/Nimbleで独自Matcherを自作して、テストコードの可読性を上げる

さて今年も終わりに近づいてきました。 この記事はモバイル 自動化 / 自動テスト Advent Calendar 2017の17日目の記事です。 実はアドベントカレンダーの参加は今回が初めてだったりするのですが、まぁそれはどうでも良いですよね。 Tl;Dr Quick/Nimbleで、…

try! Swift 2017 Tokyo に参加してきた - 1.全体を通して振り返る

はじめに 参加してきました。 https://www.tryswift.co/tokyo/jp 家に帰ってから記事を書くまでがカンファレンスです、という名言を最初に聞いたのはXP祭りだったでしょうか? そんなわけで今回も個人的な感想を書いていきたいと思います。 おそらく長くなる…

Swift3 例外メモ(try、try!、try?、do-catch)

try?の仕組みとか曖昧になってしまったのでメモ。 例外のスロー 例外をスローする関数はthrowsを宣言(書く位置は引数宣言の直後) スローする例外はErrorプロトコルを実装している必要がある enum MyError: Error { case notFound case fail(String) } func…

Vagrantfile: Ubuntu14.04 で Swift製Webフレームワーク「Vapor」を使える状態にする

Swift製のWebフレームワークである「Vapor」をUbuntuに入れてみた。 github.com せっかくなのでVagrantfileを書いてみた。(たぶんこれが一番楽だと思います) ちなみにVagrantについてはドットインストールの動画が分かりやすいです。 http://dotinstall.co…

Swift3: バージョン番号を楽に比較する

なんか面倒だったので書いた。 これがSwift使いの戦い方。たぶん。Swiftコンパイラに詳しくないけど、こういった構造体でラップするだけのコードって最適化後はゼロコストになるのかしら? (Haskellのnewtypeはゼロコストだったはずだけど)

Advanced Swift メモ - 8. Error Handling

8. Error Handling Swiftにはいくつものエラーハンドリングの仕組みがある。 Optional、はシンプルだがエラー情報は返せない。 Assertion、はバグを早期発見するために利用できる。 例外、はOptionalと違い詳細なエラー情報を持てる。 CollectionTypeのfirst…

Advanced Swift メモ - 2. Introduction (1)

Advanced Swift を読んでのメモ。 www.objc.io 英語レベルは低いので間違っている箇所は普通にあると思います。 Swiftはあなたが選択したプログラミング言語と似ているように見える。 低レベルなビット操作(とパフォーマンスチューニングができる点)は、C…

Carthageコードリーディング::3日目

さて3日目。 前回は「VersionCommand」まわりの実装を見た。 今回は実際にコマンドを実行している周りを見ていく。 エントリポイント(復習) 1日目でも触れたが、エントリポイントであるmain.swiftの以下でhelpコマンドをデフォルトに実行している。 regist…

Carthageコードリーディング::2日目

今回は一番簡単であろう「version」コマンドを見ていく。 VersionCommand 登録 前回も触れたが、main.swiftでCommandRegistryに各コマンドを登録している。 // main.swift let registry = CommandRegistry<CarthageError>() registry.register(VersionCommand()) 「version</carthageerror>…

Carthageコードリーディング::1日目

Swift力を上げるために、Swiftで書かれたパッケージマネージャ「Carthage」のコードリーディングを始めてみる。 github.com 準備 まずはGitHubリポジトリをclone。 $ git clone https://github.com/Carthage/Carthage.git 次に依存ライブラリをインストール…

Swiftソースのメソッド名とかの数を数えるスクリプト

Rubyの勉強がてら。自分用なので適当。