κeenです。言語処理系勉強会 Vol.1 に参加してきました。そこでの@omochimetaruさんのSwiftのGenericsとProtocolの実装の話が面白かったので少し感想を。Javaのジェネリクスは型消去で実装されており、全てのジェネリクスを1関数でまかなえます。一方で統一的に扱うために参照型しかジェネリクスに使えず、プリミティブの取り回しに苦労します。C++のテンプレートやRustのジェネリクスは型毎に実装を作るのでどんな型でも扱えますし、高速です。代わりに関数の数が増えてバイナリサイズが大きくなりがちです。Swiftはその中間ようなアプローチを取っていました。Swiftのジェネリクスの話を要約すると、 ジェネリクス関数には値型も全て参照になって渡される。ただし型のメタデータ(Metatype)を渡してゴニョゴニョして失われた型情報(Value Witness Ta

モバイル基盤グループのヴァンサン(@vincentisambart)です。 先日以下のツイートを拝見しました。Swift's stdlib moves to randomly seeded hashing: https://t.co/2T5oRYtD8B— ericasadun (@ericasadun) 2018年3月10日 この変更はSwift 4.1にはまだ入りませんが、4.2か5.0に入るはずです。コードレビューでこの変更が問題を起こそうなコードを指摘したことあるので、ハッシュ値のおさらいをする良いタイミングではないでしょうか。Swiftのことを考えて書いていますが、多くのプログラミング言語にも当てはまります。ハッシュ値はSwiftではhashValueというプロパティが返しますが、多くの言語では単にhashというメソッド・関数が返します。 ハッシュマップ ハッシュ値はハッシュ
本日、はてな教科書に新たにSwiftの教科書を加えました。先進的なプログラミング言語であるSwiftを学習するのに最適な教材です。 「はてな教科書」はもともと、およそ1週間でWebアプリケーション開発の基本を身につけるために、PerlやJavaScript、MySQLなどを用いて実際にWebアプリケーションを作ってみる教材として作られてきました。はてなサマーインターンシップや、はてなの入社時研修に利用されています。最初はWebアプリケーションのための教科書でしたが、はてなでは近年の多様なニーズにあわせて年々内容を更新してきました。はてな教科書はてなサマーインターン2015では新しく様々な内容が追加されましたが、今回はそのうちSwiftに関する部分を先行して公開します。昨日Appleが正式にリリースしたSwift 2を全面的に採用した教科書で、Appleプラットフォームアプリ開発の学習や
本連載は、はてなエンジニアが、はてなのサービスを支えている技術や日頃注目している技術について解説するものです。Appleは毎年WWDCでいくつもの新規技術を発表していますが、筆者はその中でもObjective-Cの進化に特に注目していました。新たに追加されるAPIやサービスの前では、Objective-Cの進化はあまり注目されてきませんでしたが、実はここ数年の間も進化し続けていました。これにはAppleがコンパイラ技術にコミットしてきたことが大きく影響しています。今回は、Appleのコンパイラ関連技術を振り返り、Swiftにどう繋がるのかを解説します。 はじめにSwiftはAppleによって開発された全く新しいプログラミング言語です。WWDC 2014で稲妻のように現れたこのプログラミング言語は、またたく間に世界中のモバイルアプリ開発者の注目を集めました。Swiftは衝撃的な登場だった

WWDC 2015 でSwift 2.0 が発表されました。オープンソース化などのうれしいニュースでも盛り上がっていますが、言語仕様としては try, throw, catch が導入されるという大きな変更がありました。本投稿は、 TheSwiftProgramming Language の新章Error Handling を読み、多少のコードを書いた上での個人的な感想です。 結論から言うと、 try, catch の導入は良い変更だと思えないけど、 try, catch を導入する前提なら考え得る限りベストに近い仕様だった、って感じです。 よかったのは、ErrorType は enum タイプセーフなエラー情報 エラー処理が強制されている(検査例外のような形) try! でエラーを無視できる あたりです。個人的には、 try, catch でなく Either 的なものを公式サ

# !/usr/bin/swift import Foundation typealias Failure = (NSError!) -> Void typealias ResultBlock = (NSData!, NSError!) -> Void /// JSONObjectWithDataの戻り値として使用する enum JSONObjectWithDataResult { case Success(AnyObject) case Failure(NSError) } /// NSDataをJSONオブジェクトに変換し、JSONオブジェクトまたはエラーのいずれかを返す func JSONObjectWithData(data: NSData) -> JSONObjectWithDataResult { do { let json = try NSJSONSerialization.

数日間iOS8/Xcode6/Swiftな環境で色々試してみて、Swiftを使っていて思ったよりがっかりした点が多かったのでちょっとまとめてみようと思います。 動的な処理がSwiftだけでは一切できない [NSObject performSelector:]の類と、NSInvocationがSwiftからは一切呼び出せません。使おうとすると怒られます。objc/runtime.hは試していませんが、同様に直接Swift経由では呼び出せず間にObjective-Cをかます必要があるのではないかと思われます。 @optionalなprotocolが限定的にしか使用できない 具体的には@objc属性を付けないと使えません。しかしながらこのような後方互換性のためだけに存在する属性をいつまでもAppleがサポートするかは疑問が残るというのと、もう一つ以下の様な問題があります。 @objc属性のついた
とりあえずTheSwiftProgramming Language読んで、実際に自分で少し書いてみた感想。 諸事情でAppleにiOSデベロッパーとしてお布施していたので Xcode6beta落として少し書いてみた。プロジェクトスケルトンをswiftで生成できるので、そのコードを眺めたりしていた。 ファーストインプレッション Immutable脳の人が設計したっぽい。 スクリプト言語っぽい構文に、型注釈。これはGoとシンタックス上の設計思想が似ているんだと思う。 基本的にImmutableな設計でありながら、オブジェクト指向を採用しており、Scalaっぽいマルチパラダイム感がある。Scalaの人は好きになりそう。 型推論のおかげで動的型付け言語触ってきた人にも抵抗がない感じになってる。推論のおかげで静的型付け言語が動的型っぽくみえるのはHaskellとかOCaml方面の雰囲気。 LLV
_Swiftはすごい 朝起きたらTLでSwiftという文字が躍り、まさかのスィフト復権かと思ったらWWDCを受けての話で、どうやらアップルが新しいプログラミング言語を投入したらしいとわかった。 ガリバーの宇宙旅行 [DVD](坂本九) たかがアップルの新しいプログラミング言語で何を騒いでいるのだろうとすごく疑問だったが、そんなにみんなObjective-Cが嫌いだったのかと(それにしてはえらく利用されているっぽい)感じたくらいだった。 そうは言っても、とりあえずdeveloper.apple.comを眺めると、SwiftについてはTheSwiftProgramming Languageという本をiTSで無料で配布しているからiBooksで読めと書いてあるので、とりあえず後で読むことにして昼の仕事に戻った。 で、帰って来てSwift本をダウンロードして読むかと思い、ふと気づくと、MSD
2014年06月03日22:00 カテゴリLightweight LanguagesNews why(matters(Swift) > matters(Yosemite + iOS[8])) 「新HWの発表ゼロ!?」なんて言っている場合じゃない。 YosemiteもiOS 8も、さらに次のヴァージョンが出るまで、高々1年半かそこらの問題だけど、Swiftは少なくとも向こう10年、いや言語というものの性格からして何十年に及ぶことなのだから。Swiftってどんな言語? とりあえず、なるべくわざとらしく書いたFizzBuzzの例。 struct Fizz { subscript(n:Int) -> String { return n % 3 == 0 ? "Fizz" : "" } } struct Buzz { subscript(n:Int) -> String { return n %
![why(matters(Swift) > matters(Yosemite + iOS[8])) : 404 Blog Not Found](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f4d363303a3db50aef84bdd5206de136392a19e0c%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttps%253A%252F%252Flivedoor.blogimg.jp%252Fdankogai%252Fimgs%252F5%252F8%252F58fb08a5.png&f=jpg&w=240)
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く