9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swift入門してライブラリを公開するまでの記録

Posted at

概要

iOS9/Xcode7のリリースが間近に迫った頃、そろそろSwift導入に向けて動きたいなぁと思ったときに勉強を初めて、何かしら成果物を出すまでの記録しておく。

前提

  • わたしは会社員プログラマー(時間はたくさんは取れない)
  • 普段はiOS/Android/Ruby on Railsでスマホアプリを開発している
  • Swiftは業務では導入されておらず、Objective-Cがメイン言語

入門してから成果物をアウトプットするまでの期間

10日くらいだと思います。毎日少しずつ書籍/資料で勉強&サンプルコードを実行しておいて、最後の3日くらいでバッと成果物を作った。

勉強に利用したツール/書籍/資料

まずどこから手をつけようかといった時に、ざっとSwiftの概要をつかむために幾つかの資料/書籍をまずは読んでいった。自分が読んだものは以下。

選んだポイントとしては、あまり古いともう使い物にならなそうなので、少なくともSwift1.2以上に対応しており、かつ意識的に更新されているものを選びました。

  • [The Swift Programming Language (Swift 2)]
    (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/)
  • 基本的にはリファレンス的に使いました。実際に手を動かしてわからない事があった時にこの資料に立ち返って、「ふむふむ、なるほど」をするための資料。
  • Swift離陸ガイド
  • 比較的新しく、更新も頻繁に行われているのでKindleに入れて朝の電車でパラパラめくりながら出社した。ただ、サンプルコードが少ない。時間のある時に読んでおき「あーこんなことあったなー」と思い出す種を作るための書籍。

あとは、自宅や休み時間などにXcode7 Betaを使ってサンプルコードをコピペ実行してく日々だった。

成果物

結果として Migrator というアプリのアップデート時のMigration処理をハンドリングするライブラリを作ったので、CocoaPodsで公開した。

ライブラリの実装自体は以前から、MFMigrationManagerを参考にしてObjective-Cで自身の必要な仕様を含める形でカスタムして実装していたのをSwiftに移植した。

などなど、今後もよく使っていくであろう部分を意識して仕様に取り込んで実装していった。

Swiftで実装をした感想

今回、Swiftを使って数日間プログラムを書いてきた感想はこんな感じ。

  • コンパイラがいちいち注意してくれるのである程度安心して書ける
  • 普通にアプリ実装する上ではそんなにObj-C時代と大きく変わることはなさそう
  • むしろObj-C時代の知見が生きてすんなりSwiftも身につけられそう
  • Xcodeが不便
    • Refactor機能が動いてくれなかったり
    • CleanしてBuildし直さないと他のクラスからメソッド補完できないとかが何度もありかなりイライラした
    • Obj-Cの時のように参考となるコーディングガイドラインがないのでこれでいいのか?みたいに思う時もある
  • まだまだ覚えていくこと多そうなのでどんどん取り入れて効率的にプログラムしたい
9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?