トレタ開発者ブログスマートフォン用の表示で見るトレタ開発者ブログ飲食店向け予約/顧客台帳サービス「トレタ」、超直前予約アプリ「トレタnow」を開発・提供するスタートアップ企業です。Swift開発部の@horimislimeです。さんとiPadアプリ開発をさせてもらっています。先日トレタはメジャーアップデートとなるver5.0.0で、飲食店従業員の方が店内のテーブル配置を作成し、空間的にテーブルを見ながら予約を取れる「テーブルレイアウト」機能をリリースしました。この機能の詳細や、開発にあたっての想いは弊社ブログのエントリも御覧ください。ブログトレタとして大規模なアップデートとなるver5.0.0でしたが、その裏ではiOS開発チームとして新しいチャレンジもありました。それが以下の二点です。Swiftと新しいパラダイムの導入これまでのトレタには無かったUIの実現まずiOS開発チーム内でこの新機能からSwiftを導入し、合わせてMVVM風な設計を取り入れつつ実装を進める方針を取りました。このテーブルレイアウト機能は予約を入れたりテーブルの空き状況を確認するコアとなる画面(前述の画像を参照)と、お店のレイアウトを作成する設定画面の2つに分かれています。さんが、設定画面を自分が担当しそれぞれSwiftでほぼ全て実装しました。ふたつめに、自分が担当した設定画面ではこれまでトレタでやった事がなかったインタラクティブなUIを実装しました。具体的には以下のように指でテーブルの絵をなぞって簡単にレイアウトを作成できる設定画面です。今回はiOSチームとして行ったSwift導入とMVVMな設計への移行と、じぶんが担当した設定画面を作る上でやった事について紹介します。Swiftの導入トレタでは夏頃からSwift導入の話は上がっていたものの、WWDC2015で発表された2.0の内容は1.xから劇的な変更が加えられており、導入のタイミングを伺っている状態でした。そこに今回の大型アップデート実施が決まり、着手のタイミングが10月頃とXcode7正式リリースに重なったので、キリ良く今回からSwiftを導入する事になりました。おかげで1.x系からの移行コストもゼロに。新しい設計とライブラリの導入トレタのアプリは一見シンプルなように見えますが、飲食店での様々なオペレーションに対応するため各画面でかなり多くの機能を提供しています。そのため、どうしてもプレゼンテーション層のコードが分厚くなりがちという問題を抱えていました。この現状を打開する一手として、iOSチームではSwift導入に加え今後の機能開発ではMVVM風な設計を導入することにしました。View-ViewModelのつなぐライブラリにはSwiftBondを使っています。その他、トレタの古いコードではAPIレスポンスとModelプロパティのひも付けを独自のコードでやっていた為、今回SwiftでModelを実装する部分からObjectMapperを使い始めています。テーブルレイアウトではお店の1F、2Fといった複数のレイアウトを作成できるよう、タブ型のUIを採用しています。この部分ではTZStackViewを使って動的に増減するタブUIを実装しました。心地よいUIの実現を目指して指でテーブルを動かしてレイアウトを作成する設定画面はプレゼンテーション作成ツールと似た要素を持っているため、PowerPointやKeynoteといったアプリの挙動を参考にしています。ControlsやDribbbleを漁ったりもしました。他にもawesome-iosやawesome-ios-uiといった最近流行りの(?)ライブラリやUIのキュレーションリポジトリにも目を通し、参考にできそうなものを試しつつ実装を進めて現在のUIに落ち着いています。型安全で堅牢なコードを書けるSwiftならではのメリットに加え、MVVMでViewModelにプレゼンテーションロジックを集約したり、新しいライブラリを導入するといった試みによりバグにも素早く対応できテスタビリティの高いコードになっています。タイトなスケジュールの中で新技術や慣れないUIを手探りで作るためハマった点も多いです。結果としてメンテナンスしやすいコードを残す事ができ、実際5.0.0のリリース直後に実施したパッチアップデートも素早くこなすことができました。さいごに大型アップデートの裏側で我々iOSエンジニアが取り組んできた事について紹介しました。トレタでは現在こうした新機能追加をただこなすだけでなく、コードの問題を解決するために新しい技術を取り入れたり、エンジニアからも細かいUI・UXの提案を出しながらこだわりを持って作っています。そんな弊社ではiOSエンジニアを始め他の職種も絶賛募集中です。モノづくりが好きな人、最新技術を試しながら最高のプロダクトを作っていきたいという人、もしトレタに興味が湧いたら話を聞きにきてください。2017に参加してきましたiOSエンジニアの高です。去年に引き続き、今年もiOSDCに参加し...2017-05-30トレタにおけるBigQueryの活用法についてサーバーサイドエンジニアの芹沢です。対応しましたiOSエンジニアの高(@y_koh)です。開催しました開発部の堀見です。トレタで開発者ブログ始めます。»トレタ開発者ブログ飲食店向け予約/顧客台帳サービス「トレタ」、超直前予約アプリ「トレタnow」の開発メンバーによるブログです。Blogスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。