勝手に2016年振り返りメモ
たまの大晦日なので、ツイッターのタイムラインを振り返ってみました。
長い割にたいした内容も無いので、暇なときにのんびり読むのをおすすめします。
動作を確認した環境
環境 | 情報 |
---|---|
Xcode | 8.2.1 (8C1002) |
iOS | 10.2 |
Swift | 3.0.2 |
Date | 2016/12/31 |
まとめ
1/20
バッククオートでselfに代入できるのはおそらくバグだとアップルの人の回答。その上でこの提案が受け入れられたら、普通にselfにguard節で代入できるようになる。 https://t.co/MVT7iEO5Pu https://t.co/MGYfn6YcHB
— kishikawa katsumi (@k_katsumi) 2016年1月20日
現在の環境で実験してみると、Swift 3で普通に使えることが判明。自分で使うことは無いと思うけど。
2/13
なるほど( ´・‿・`)
— mono( ´・‿・`)🐶🍎📱⌚️ (@_mono) 2016年2月12日
> なぜもっと簡潔に、整数でインデックスできるようにしないのでしょうか。これは、Swift的に、そのオペレーションにはコストがかかるという事実を補強しているのです。https://t.co/Bl63LdwMN3 via @POSTDcc
言いたいことはすごくよくわかる・・・ けど、現実問題としていちいちIndexを扱うのは面倒だから、Intでアクセスできるようにラップしちゃう。
文字数の話は、年末にQiitaで再燃してたっけ。
2/18
すごく面白いネタだけど・・・ これのすごさがちゃんとわかるのは、SwiftのGenericsとProtocolではまったことのある人だけのような気が。/Swift - Introducing PONS = Prot - Qiitahttps://t.co/owrkb5e3Gl
— See.Ku (@See_Ku) 2016年2月18日
個人的には、今年のQiitaでトップクラスに面白い記事だと思うんだけど・・・ あまり一般受けしないネタなんだろうか? 公式で取り込んでも良いレベル。名前はちょっとアレだけど。
2/24
Realm Browserに、直接パスを指定してファイルを開く手段が見つからない。いや、まさか、これが無いって事は無いと思うんだけど・・・
— See.Ku (@See_Ku) 2016年2月24日
Realm BrowserでRealmのファイルを開く方法。結局、Finderでディレクトリを開いて、ファイルをダブルクリックする方法に落ち着いたけど、これが正解なんだろうか?
2/27
既存クラスへのextensionが複数のモジュールで被ったとき、明示的に使い分ける方法が今のSwiftにはないと思うんだけど・・・ ここは、誰も問題にしてないんだろうか? extensionだけ昔ながらにprefixをつけるべきなのかな。
— See.Ku (@See_Ku) 2016年2月27日
ずっと頭を悩ませている、フレームワークにおける命名問題シリーズ。今年だけで、このネタでいくつつぶやいたんだか。結局、考えてても答えが出ないんで、試しにすべてのPrefixを排除してみる(ただし、Class名は除く)。これで問題が出るようなら、また復活させよう。
2/27
あとは、メンバーがHashableだけのタプルは自動でHashableになってほしいけど・・・ これは、Swift 3.5ぐらいか?
— See.Ku (@See_Ku) 2016年2月27日
試してみた・・・ これは、未だに出来ないのね。
2/27
TDDは好きだし、重要な開発スキルだと思うけど、TDD原理主義になるのは良くない。TDDが向いているケースは「これから書くプログラムの入力と出力が明確であること」「テストコードの書き方が事前に想像できていること」の2点。片方がNOなら、「プログラムが先、テストコードは後」でOK。
— Junichi Ito (伊藤淳一) (@jnchito) 2016年2月27日
すごく良い意見・・・ 問題になるのは、テストコードを後にすると、書く気が失せるって事ぐらいで。この問題の解決方法は未だに発見できてない。
3/3
Issue #12 https://t.co/GCcrwlyCIy written by @jesse_squires
— Swift Weekly Brief (@swiftlybrief) 2016年3月3日
SE-0026として、Abstractを追加する話が提案されて・・・ 結局、先送りになりました、と。個人的には欲しい・・・ というか、必要な機能だと思うんだけど、実際に導入されるのがいつになるかは不明。
それまでは、assertionFailure()を多用しようかな、と。
3/23
Swiftのinit()でsuper.init()を省略できる条件って、どこかに明記されてたっけ・・・
— See.Ku (@See_Ku) 2016年3月23日
イニシャライザを継承するときの話では無くて、継承したイニシャライザの中で『super.init』を呼び出す話。
自分が調べた範囲でわかったのは、overrideしたイニシャライザの中でselfを使う場合は、それまでにsuper.initが必須。selfを使わないならsuper.initが無くてもビルド可能、と。
この動作はどこにも明記されてない気がするんだけど・・・ 省略なんて考えなくて、毎回ちゃんとsuper.initを書くのが正解なんだろう。たぶん。
3/24
今のSwiftの場合、publicを付けるしか無いからこの問題は解決できないんだよなぁ。protectedがアクセス制御的に意味が無いって意見も理解できるけど、現実問題として欲しくなる事もあるって事で。
— See.Ku (@See_Ku) 2016年3月24日
定期的に欲しくなるProtectedの話題。これだけコード補完が万能の時代になってくると、候補に邪魔なものがあるだけで鬱陶しくなるわけで。・・・どうにかなりませんかね?
3/24
たまに欲しくなる機能シリーズだと『public private(set)』って響きが美しくないから、readonlyって書くと代わりになって欲しかったり。
— See.Ku (@See_Ku) 2016年3月24日
これもまさに、定期的に欲しくなる機能シリーズ。10年後も同じ事を書いてるような気がするけど。
4/13
『RawValueがStringのenumの場合だけ、protocol extensionでデフォルトの実装を用意する』って、出来てみれば普通のコードだけど意外と手間取ったのでメモ。 pic.twitter.com/PZfPeTxSvD
— See.Ku (@See_Ku) 2016年4月13日
メモ。
9/25
そもそも、一番大事なのは、『好きにすれば良い』って事だったりしますが。
— See.Ku (@See_Ku) 2016年9月25日
座右の銘。実際には方言っぽく(?)『すきにしぃ』って発音。
9/27
RealmのNSDateの話。すぐに公式のドキュメントが出るだろうと思ってたけど、Qiitaあたりに自分でまとめた方が良いかな・・・
— See.Ku (@See_Ku) 2016年9月27日
未だに、日本語の公式ドキュメントは出ていない・・・
10/3
そろそろSwiftに『superのメソッドを呼び出す必要があるかどうか』を示す属性が出来ても良いと思う。
— See.Ku (@See_Ku) 2016年10月3日
たまに、これがあると便利だろうと思うんだけど・・・ 『先頭で呼ぶ』『最後で呼ぶ』『どっちでも良い』とか、場合分けがいろいろ必要になって逆に面倒かな? ドキュメント化で逃げるのが正解なのか。・・・それはそれで、90年代から進歩してないような気もするけど。
10/16
* Genericsでデータ型にバリエーションを持たせた場合、共通の基底クラスを素直に表現できない
— See.Ku (@See_Ku) 2016年10月16日
* Abstractを表現できない問題を回避する方法はあるけど、あまり美しくない
『素直じゃ無い』とか『美しくない』って部分は、見なかったことにするのが正解なのかな・・・
ここ2ヶ月ぐらい悩んでた問題がこのツイートにまとまってる。結局、Class階層+Genericsの合わせ技で・・・ つまり、以前と同じやり方に落ち着いたけど。
ちなみに、Abstractの代替手段としては、PropertyとしてOptionalなClosureを持たせる方法を考えていた・・・ もう少し簡単にweak selfが使えるようになったら、これでもよかったかなぁ。いや、やっぱりだめか。
12/16
Namespace専用の構文が欲しいなぁ。ClassやStructを使えば、実質的に同じことは出来るけど。
— See.Ku (@See_Ku) 2016年12月16日
Swiftでプログラムを書いてる人は、慣れてる人ほど何の違和感も無く、structを名前空間の代わりに使ってると思うけど・・・ 冷静に考えると、これって変では? という話。
12/23
ExtensionありのProtocolを適用してから継承したときの動作は、明瞭性に反してる気がするなぁ。この部分は、早めにどうにかして欲しかった。Swift3で変わらなかったってことは、この仕様のままで押し通すんだろうか? pic.twitter.com/F9pafmazhD
— See.Ku (@See_Ku) 2016年12月23日
この問題、どこかで見覚えがあると思って探してみたら・・・ 約9ヶ月前に見てた。まさか、いまさら・・・ Swift3になってから、罠にはまるとはorz/Swiftのプロトコルエクステンションの罠 - Qiitahttps://t.co/r3zocYXOx1
— See.Ku (@See_Ku) 2016年12月23日
現在のSwiftで、一番わかりにくくて使いにくいのがこの点では・・・ 本当にこの仕様で押し通すんだろうか? それとも、どこかのタイミングでこっそり直すのか?
最後に
4月から9月まで間が空いてるのは・・・ Swift 3が来るまで、他のことをやってたってのがわかりやすいですね。では、よいお年を。