Swift Advent Calendar 2015 で勉強してみる(5日目)
Swift プログラミング
Swift Advent Calendar 2015 が暖かい感じに盛り上がっていて好きだったので、自分もこれを眺めながら Swift をあれこれ勉強してみることにしました。
その5日目です。
そこで、開催されている4つの Swift Advent Calendar の内容を拝見して、そこからいろいろ浮かんだことを綴ってみようと思います。
- Swift Advent Calendar 2015
- Swift その2 Advent Calendar 2015
- Swift その3 Advent Calendar 2015
- Swift(一人) Advent Calendar 2015
Swift Advent Calendar
Swift Advent Calendar の5日目は ohkawaさん の Swift の構文解析の流れを超ざっくり追ってみる というお話でした。
そういえば Swift がオープンソース化された頃合いでしたね。
自分はまだオープンソースの恩恵というものがどの程度か計り知れていないのですけど、それからすぐに Swift のソースコードを見たい という場面がちらほら出てきたりして、それってオープンソースが齎すメリットのほんの一角に過ぎないのでしょうけど良かったような心地がし始めました。
そうは言っても、ちらっと見てもまだまだぜんぜんコードの意味を汲み取ることはできない感じで。
Swift の構文解析コードの話
この日の Advent Calendar 記事はそんな自分にとっても嬉しい、Swift のコードから シンボルの意味を解析してカラーコードを出力する テストコードについての紹介だそうでした。
これを見たら自分も Swift のソースを読むとっかかりを得られるかもしれない。そんな期待を抱きつつ、早速 Advent Calendar 記事を読み進めてみることにしました。
実際に読んでみると、読む中で出会った用語ですとか、読む上で必要な関数がまず紹介されて、その上でテストコードの流れをひとつひとつ丁寧に紹介していく流れがとても嬉しい感じでした。
そしてザクザクと話が進んで、コードの意味は分からないながらも、ざっくりと感覚の入り口的なところが体験できたかな?みたいなところで話が終わりました。
継承関係の話のところ
ところで Advent Calendar 記事内の 継承関係
のところで 肝心の doSyntaxColoring 関数を呼び出しているのはどこでしょうか
というところの趣旨が上手く汲み取れませんでした。
テストコードを読んでいくと、この main
関数の処理の中で呼ばれているように思えます。試しに Xcode で呼び出し元を検索してみてもそこからしか呼び出されてない感じがします。
とりあえず doSyntaxColoring
関数が実行されると、その中で ide::SyntaxModelContext
を作ってその walk
メソッドに ide::SyntaxModelWalker
を継承した PrintSyntaxColorWalker
のインスタンスを渡すことで、構文構造を辿る処理にテスト独自の処理を追加しているかもしれない、そんな風に辿れるようにも思えました。
外側の流れだけを見ながら綴ってみたので、それで何かが解るかどうかは判りませんけど。
所感
最後の まとめ
のところに記されている テストケースから追っていくのはとっつきやすくて GOOD だと思いました
というところは、確かに良い感じかもしれないと思いました。
実際に自分が先日にソースをちょっと読んでみようとあれこれ眺めてみたときに、漠然としたコードの海でどこから着目したらいいかが掴めなかったので。
こういう こんな風に接してみるといい感じかも
みたいな話も楽しいですね。
自分は特に第三者が作った大規模なソースコードに触れる機会がほとんどなくて、こういうとっかかりみたいな情報があると、そこから何か自分なりのやり方を見つけられそうな予感がしました。
Swift その2 Advent Calendar 2015
Swift その2 Advent Calendar 2015 の5日目は pebble8888@githubさん の XVim swift 応用編 というお話でした。
そもそも XVimProject/XVim というのは Xcode で Vim の操作を実現するためのプラグイン だそうです。そして Vim といえばターミナル上でも動作するテキストエディターで、入力モードの切り替えながら高度なテキスト編集ができるもの、と言ったら良いのでしょうか。
Swift での応用
Xcode で Vim の操作を実現するプラグインで Swift 独特のことってなんだろうと思ったのですけど、具体的にはたとえば型の定義を開きたいときに Swift での定義と Objective-C での定義のどちらかを選択したい需要があるとのことでした。
自分はぜんぜん Xcode の外に出ないので分からないのですけど、コード編集は Vim を好んで使うみたいな人も多い様子なので、そういう人には嬉しい機能なのかもしれないですね。
Advent Calendar 記事内にその機能を組み込むための方法が記載されているので、興味のある方はご覧になると良いことあるかもしれません。
Swift(一人) Advent Calendar 2015
Swift(一人) Advent Calendar 2015 は全日を shimesabaさん が埋め尽くすという素晴らしさですけれど、その5日目は Swift がオープンソース化されたので標準ライブラリにメソッド追加してみる というお話でした。
これまたなんとも興味深いお話です。
追加したのが SequenceType
への uniq
メソッドとのことで、単純に Set
を使うじゃダメだったのか…という疑問も思わず湧いてみたりしましたけれど、そういう疑問は好奇心の前には愚問です。
所感
やっていることはとっても単純で、こんな風にして ビルドして実行してみる という流れを体験できるという面で、とても楽しい記事に思いました。
そして遊び感覚でこのやり方を真似してみると、思った以上に達成感を味わえるかもしれません。