SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2015】セッションレポート

【デブサミ2015】 19-C-3 レポート
現場で使い倒しているから語れる 「Swift」によるアプリ開発のつまづきどころと対応策

  • X ポスト
  • このエントリーをはてなブックマークに追加

iOSでのSwift OSS

 安達氏はSwiftでの開発で、先述のQuickとNimbleのほか、「Alamofire」(HTTP通信用ライブラリ)、「SwiftJSON」(JSONハンドリング用ライブラリ)、「BrightFutures」(非同期処理用ライブラリ)というOSSを使用しているそうです。これらのOSSをプロジェクト配下へ取り込むのに安達氏がとっている方法は、「プロジェクトに移動した上でgit submoduleコマンドを利用する」というもの。その詳細な手順は、安達氏が執筆したブログエントリ「[Swift] HTTP通信OSS Alamofire 導入編 | Developers.IO」に解説されています。

安達氏がSwiftでの開発で使用しているOSS
安達氏がSwiftでの開発で使用しているOSS

 

 ただし、Dynamic Libraryに対応していないiOS 7では、ソースファイルをプロジェクトに入れるといった工夫が必要となるとのこと。この工夫が必要なOSSは、先述のうちAlamofire、SwiftJSON、BrightFuturesの3つで、ソースファイルをコピーするのではなく、ソースファイルへの参照をリンクする形で行っているそうです。「ファイルの追従をgit moduleの更新で極力行うようにしているため、この方法をとっている」(安達氏)

 一方、Quick、Nimbleはテストターゲットのみに含まれるため、テストをiOS 8向けとしDynamic frameworkでプロジェクトに入れているとのことでした。

Moduleの穴

 4つ目のトピック「Moduleの穴」では、最初に、SwiftでNSObjectのクラス名を取得したとき、モジュール名まで含まれてしまう事象への対応方法を紹介。「モジュール名を取り除いたクラス名を取得するユーティリティを作成することで対応した」(安達氏)

 また、MSManagedObjectというサブクラスを用いたテストで実行時に落ちてしまうトラブルがあった際には、@objc()キーワードを用いてObjective-Cから見たときのサブクラス名を変更することで解決できることが紹介されました。

@objc()キーワードを用いてObjective-Cから見たときのサブクラス名を変更することで解決
@objc()キーワードを用いてObjective-Cから見たときのサブクラス名を変更することで解決

 

後方互換性

 最後は「後方互換性」をトピックとして、CI(安達氏の環境ではTravisを利用中とのこと)稼働時のXcodeのマイナーアップデート対応や、Swift 1.2などが取り上げられましたが、ハイライトはSwift言語の作者であるChris Lattner氏の哲学の紹介でした。

 安達氏は、Lattner氏の著書『The Architecture of Open Source Applications』(m-takagi氏により邦訳プロジェクトが進行中)に、「過去の決断も積極的に見直して過去との互換性を気にせずにAPIを大きく変更していく」「過去の決断を躊躇せず再考」「結局のところ、パーフェクトな存在を目指すのではなく、常に向上し続ける事が大切」と、同氏が後方互換性を考慮していないことを示唆する部分があると指摘。「Swiftとは、Lattner氏のこのような考え方に従って向き合っていく必要があると思う」(安達氏)と述べて、このセッションを締めくくりました。

【関連リンク】
「ゲンバのSwift」セッションのスライド
・yad氏(安達勇一氏)の連載「アップルの新プログラミング言語『Swift』を探検しよう」(CodeZine)

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2015】セッションレポート連載記事一覧

もっと読む

この記事の著者

しんや(シンヤ)

2010年末~2013年前半位までの期間で興味のある勉強会に頻繁に参加。参加してきた勉強会のレポートブログとTogetterをひたすらまとめ続け、まとめ職人(自称/他称含む)として暫く過ごしておりました。色々な縁あってDevelopers Summit 2013では『公募レポーター』も務めました。2013年05月『出張ブロガー』を経て2013年08月にクラスメソッド株式会社へ転職。現在は業務(AWS及びその周辺技術を扱う)の...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8554 2015/03/09 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング