IBM Watson Summit 2016 – 「Swiftのオープンソース化がもたらすアプリケーションの未来とIBMの取り組み」に参加してきました!

2016.05.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

おばんです、JOINから二ヶ月が経って初任給が入り、外で飲むお酒とご飯はこんなに美味しかったんだと生の喜びを噛み締めている田中です。

2016/05/24-26開催のIBM Watson Summit 2016
最終日の「Swiftのオープンソース化がもたらすアプリケーションの未来とIBMの取り組み」
というセッションに参加してきました!

会場が写真撮影禁止だったためスライドの写真はありませんが、後ほど公開が確認された時点でこちらにもリンクを貼ろうと思います。

セッション概要

2014年に発表されたSwiftは、最も成長が著しく、最も広く利用されているプログラミング言語の1つです。オープンソース化されたSwiftをIBMは企業利用でのサーバー・サイドの開発言語として成熟させる取り組みを進めています。企業はクラウド上でSwiftを利用することで、エンド・ツー・エンド・アプリケーションの開発を大幅に簡素化でき、生産性を飛躍的に向上します。企業での利用場面の広がりが期待されているSwiftの可能性についてゲストを招いて考察します。

登壇者

このセッションは以下2名の方の交代で行われました。

株式会社サイバーエージェント
iOSエンジニア
鈴木 大貴 氏(写真左)

日本アイ・ビー・エム株式会社
クラウド事業総括 エコシステム・デベロップメント
宋 珠憲 氏(写真右)

13287922_1035643863187350_422746757_o

宋 珠憲氏

なぜswiftなのか

  • Swiftの説明
  • 2015年オープンソース化された
  • サーバーサイドで動くのと、iOS以外のプラットフォームでも動くようになった
  • Linuxで動くようになったことが大きい

Swiftの評判

なぜIBMとSwiftなのか

背景

"SwiftとIBM Cloudの連携で生まれる新たなアプリケーションの開発の可能性を信じて!"
   ↓
その意味とは?

  • その1. サーバーサイド
    iOSだけでなくサーバーサイドで動くことで生まれる新たな価値

  • その2. オープンソース
    コミュニティで形成されたopenswift.orgの重要性

  • その3. ショーケース
    IBM Cloudは、Swiftエンタプライズアプリ構築のためのショーケースになる

IBMとSwift

KITURA

スクリーンショット 2016-05-26 19.14.07

  • swiftでウェブアプリケーションの開発が可能なフレームワーク
  • rubyでいうとrails、PHPでいうとCakeなどにあたる
  • これはオープンソースである

  • IBM Bluemix上だとKituraを基盤にした3-5分で環境が構築できる

OpenWhisk

  • イベント駆動型ランタイム環境
  • Swift, js, Node.jsのアプリが実行可能
  • 各Feedをトリガーにし、登録されている処理が起動
  • 外部のサービスとして、Cloudant, github, watson, slackと連携可能(2016. 3月時点)

鈴木 大貴氏 Swiftで行うアプリ開発 〜Objective-CからSwiftへの移行〜

自己紹介

サイバーエージェントの755のiOSリードエンジニア
GitHubではszk-atmosphereとしてOSSライブラリの開発など行っています。

Swiftに注目する理由

言語特性

  • 型推論とは
    Objective-Cではできなかった型推論ができるようになりました。
    型推論ができなかったことにより、いちいち型を明示的に描く必要がなくなり、冗長化したコードが改善された。

  • Optional型とは
    通常の値に加えて、「値がない」という状態を保持することができる型のこと。
    コンパイル時に静的に解析してエラーを出してくれるので、とても安全に開発ができる。

  • Enumとは
    定数に名前をつけてとり出せる型のこと。
    Raw Value EnumによってEnumに値を持たせることができるようになった。

  • ジェネリクスとは
    Objective-Cにはなかった。
    型の安全を担保しつつ様々な型を持つことができる。

  • 演算子のオーバーロードとは
    +, -などのすでにSwift上で実装されている演算子に通常の挙動とは違う挙動を追加することができる機能。

  • カスタム演算子とは
    独自実装の演算子を追加することができる機能

成長スピード

  • 2014/8 Swift 1.0
    落ちまくり。

  • 2014/10 Swift 1.1
    少し改善された。

  • 2015/04 Swift 1.2
    大きな変更がいくつかあった。
    これまでObjective-Cで定義されていた型をSwiftで扱っていたが、Swift独自の型が実装されたりなど

  • 2015/09 Swift 2.0

    • guard文
    • エラーハンドリング
    • protocol extension
  • 2015/10 Swift 2.1

  • 2015/12 オープンソース化

  • 2016/03 Swift2.2

    • #selector追加
    • ++, --が非推奨になった
    • Cスタイルのforループが非推奨になった
    • enumに@objcがつけられるようになった
      swiftのenumをobjective-Cからはよべなかった。
      けど、@objcつけることによって呼び出すことができるようになった

コミュニティ

  • try! Swift
    • 世界中のSwiftデベロッパーが集まったカンファレンス
    • 開催期間 2016/03/02-04
    • 開催場所 渋谷マークシティ

    • デイリー500人参加 3割海外の人

    • 登壇者33人

    • 約40者のスポンサー
    • トランスレータによる同時翻訳
    • ハッシュタグがTwitterでトレンド入り!

    • try Swift App try! Swiftのアプリ try! Swiftのセッション概要、セッション時間などの情報を見ることのできるアプリ

    • try! Swiftのリポジトリ try! Swiftに関連したソースコードなどが置かれている

モバイルアプリ開発とウェブアプリ開発

Swiftがリリースされた頃はObj-CにかわるiOSアプリ開発を行う言語
   ↓
Kituraのリリースによりウェブアプリ開発にも使えるように
   ↓
もともとウェブアプリエンジニアがSwiftを使ってサーバーサイドアプリ開発をするようになるのではという期待

Obj-CからSwiftへの移行

業務でのSwiftの利用

  • なぜObjective-Cから移行すべきか
    • 型などの面でもより安全なコードになる
    • 冗長なコードを減らせる
    • メンテナンスがしやすくなる
    • 学生もSwiftでiOSアプリ開発を行っている
      今後はSwiftからiOSアプリ開発を始めた人が増えてきて、Swiftでしか書けないという人が増えてくるかも
  • Obj-CからSwiftへ移行する手順の紹介

755での実装例の紹介

  • ログ送信の機構のソースコード紹介
    Enumの有効活用により、入力ミスなどをへらせて安全なコードが書けるという例

  • レイアウト実装紹介

    • viewのパターンがとてつもなく多い例
      AutoLayoutが辛いという話。
      使い回し部分と、一部書き換えが必要な部分のAutoLayoutをコードで書き換えた
      ソースコードが冗長で辛い!!

    • OSSライブラリ、MisterFusionの紹介
      スクリーンショット 2016-05-26 18.45.56

      鈴木氏の開発したAutoLayoutをソースコードで記述するのに見やすく、より簡易に扱うことのできるOSSライブラリ
      MisterFusionを使うと、ソースコードがとても短く見やすくなる(スライド上では約1/3に短くなっていた)
      カスタム演算子を用いて、可読性が飛躍的に向上
      Swiftで書いたけど、Objective-Cでも使える

最後に

Swiftにすることの意義

  • アプリの実行時にエラーが起きにくい文法
  • 冗長なコードの削減
  • コミュニティの盛り上がり

まとめ

Swiftがオープンソース化され、Linux上でのコンパイルが可能となってからサーバーサイドSwiftの可能性は界隈ですぐに話題になりました。
それ以来サーバーサイドSwiftのフレームワークは数多く登場しましたが、IBMが開発するKituraは自前のクラウド基盤と連携し、より手厚い環境での開発が可能であるというお話で、今後のサーバーサイドSwiftの発展に大きく寄与するものだろうと確信しました。

iOS開発におけるSwiftの話では、Objective-CとSwiftを比較しながらなぜSwiftが良いのかという要素が説明されていて人に説明する時にとても参考になる内容だと思いました。
実際のプロダクトにおける実装例や、特に今回であればViewのパターンが多い中でのコードによるAutoLayoutの工夫の話は、普段iOSでSwiftを書いている自分にとって参考になって面白かったです。

今後もSwiftのより良い発展に期待大です!

参考リンク