try! Swift2017に参加しました!気になった発表3選!

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

こんにちは。あすかです。Housmartでは普段Swiftで開発していることもあり、 try! Swift TOKYOというSwiftのカンファレンスに参加して来ました!

try! Swiftは世界中のSwiftディベロッパーが一堂に会し、Swiftに関する知見を共有するカンファレンスです。参加人数は、昨年の約1.5倍の733人だったそうですごい熱気に包まれていました!会期は2017年3月2日-4日の3日間、うち2日、3日は招待講演とライトニングトーク、4日はハッカソンが開催されました。

 try! Swiftの様子 すごい熱気です!

今回参加の目的

中古マンション売買サービス「カウル」

HousmartはReTech(不動産テック)スタートアップで、中古マンション売買サービス「カウル」をメインのサービスとして運営しています。このサービスを使うことで中古マンション売買の際、ユーザーの方が自分でマンションデータベースから中古マンション物件情報、相場、新築価格、売買事例、間取りを確認し、見学に行くことができます。

また、メインのサービス以外にも、ユーザがマンションの情報を検索できるカウルライブラリー、マンション購入のノウハウを載せたマンションジャーナルというメディアの運営をしています。

これらのサービスでアプリ開発を行っており、①開発で使っている言語のトレンドを知りたい、②面白い発表から学びたいと思いカンファレンスに参加しました。

カンファレンスのネームプレートが可愛かったです。当日の名前投票で「RIKO」ちゃんに決定

今回は、カンファレンスにて気になった発表を3つ紹介させていただきます。

try! Swift全体の構成

まず、全体の構成についてです。カンファレンスでの発表は全部で約32個で、内容は以下のような構成でした。

 try! Swift2017の講演・ライトニングトークの内容構成図

サーバーサイドSwiftや機械学習・DeepLearningの話が結構でてきた印象でした。プロダクト作り全体のドラマティックな話、ReactNative開発のメリット・デメリット比較、Swift on Android話などもあり、Swiftだけでない話題も豊富でした。

気になった発表3つ

①Client-Side Deep Learning by Shuichi Tsutsumi

堤(@Shu223)さんのクライアントサイドで行うディープラーニングのプレゼンが印象的でした。

ディープラーニングは強力なコンピューティングパワーが必要なので、従来はモバイルデバイスでやるものではなかったのですが、iOS 10でMetal Performance Shadersフレームワークに追加された畳み込みニューラルネットワーク(CNN)のAPIにより、クライアントサイドのGPUで学習済みCNNの計算を行えるようになったというお話でした。

つまり「ユーザの手元で」「オフラインでも」昨今の進化がめざましいディープラーニングの成果を利用できるようになったということでカウルアプリでも使えると面白いなと思いピックアップさせていただきました。堤さんのLTでは実装のオーバービューと、デモを見せていただきました。

②Realmを使ってコラボレーションアプリを作る by Marius Rackwitz

このプレゼンでいうコラボレーションアプリというのは、Google Docs/Slack/JIRA等の複数のユーザーが同時進行で作業をすることができるアプリのことでした。

  1. Realmの利点
    ・オブジェクト思考で書け、クラスを実装するように書ける
    ・React NativeやXamarinにも対応しているので、クロスプラットフォーム
    ・すべての環境で同じデータを使いまわせるので、バックアップがとれる
    ・トランザクション管理をしているので、リアルタイムの共同編集ができる
    ・サーバー、モバイルの両方でRealmを採用すれば、アプリからJSONを排除することが可能

  2. Realmの通知機能
    ・プロパティの変更、オブジェクトの変更、コレクションの変更、ファイルの変更など、様々な変更に対して通知を行える
    ・イベントハンドリング

  3. アクセス権の管理
    ・Admin Realm, Management Realm, Permission Realmなどの特別なRealmを使えば、アクセス権の管理が可能

とのことで、3の内容が特に興味深かったです。

 

③クックパッドアプリのテストを味わう by KazuCocoa

クックパッドでは、テストの項目でUIテストが一番多くなってしまうらしく、UIテストを自動化することでクラッシュレート減少に成功したという事例について紹介いただき大変参考になりました。

  1. Cookpadアプリの状況
    グローバルアプリと日本アプリの2つがあり、統合はまだしておらず、UIコンポーネントは複数大きく変えているそうで、だいたい10万行ぐらい。以前は2週間、最近は1ヶ月毎にアップデートしている状況。

  2. kano-model という品質モデル
    ・Attractive – Must-be Qualityの2つのパラメータ
    ・Diachronic Quality for mobile

  3. UIテストのやり方
    まず、テストを書いてからリファクタリングを行うそうです。マニュアルテストは簡単に出来ますが、ユニットテストは時間がかかります。しかし、理想はその逆です。 そこで、Cookpadでは2015年-2017年にかけてUIテストの自動化を行い、クラッシュ率を下げ続けたそうです。

  4. UIテストの書き方
    ①シナリオを書く
    ②シナリオをRubyコードに変換
    ③Appiumで実行

XPathはOSのフレームワークにかなり依存していて、テストをUIレベルからメソッドレベルに移動することが大事とのことでした。

クックパッドでは、数ヶ月前にSwiftを実装し始めたらしく、テストがあるので安心してSwiftの実装出来るようになったそうです。このような工夫でクラッシュ率の低い安定したサービスを提供していきたいと思いました。

参加して感じたこと

① Twitter(@tryswift)投稿やSlackが活発で、発表の後に会場外でも登壇者へのQAコーナが用意されていて、とても交流しやすい雰囲気でした。 (@k_katsumiさん、運営者のみなさんありがとうございます!)

②最前列で聞き起こしをして登壇もしているniwatakoさんのコミュニティへの貢献度がすごいと思いました。(niwatakoさんありがとうございます!)

Read more

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

日本語でのサジェストの難しさとElasticsearchを用いた実装例

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

このエントリは Elastic stack (Elasticsearch) Advent Calendar 2016 の17日目の投稿です。

こんにちは。Housmartの高松です。今回のテーマは Elasticsearchを使った日本語でのサジェスト です。

Elasticsearch便利ですよね。個人的には今から検索関連の機能を作るならElasticsearch一択だと思っているのですが、こんな便利なElasticsearchを使っても、実用レベルの日本語のサジェスト機能を実装するのはちょっと難易度が高いです。

今回は実務での経験をもとに、なぜ日本語でのサジェストが難しいのか、Elasticsearchを用いた実装はどうすれば良いのかについて書いていこうと思います。

Read more

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

エンジニアが自由研究に時間をかけるべき理由

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

ここ数年でWebエンジニアを取り巻く環境は劇的に変わったと思う。
具体的に言うと、知的好奇心とやりがいを求めて仕事を選ぶことが当然になったように感じる。

Webエンジニアを取り巻く変化

5年半前、私が新卒で就職した時はまだ、エンジニアでも長時間労働はあたりまえで、エンジニアはビジネスサイドが考えた要件に従ってサービスを実装する人だ、という認識が強かったように思う。
一緒に大学院を卒業した優秀な友人たちはみんなメーカーか大手SIerに就職し、それこそWeb企業を就職の選択肢に入れている人はめずらしかった。

Read more

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

【スタートアップ創業期】プロダクトの0→1を実現するKPI管理方法

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

こんにちは!Housmart 宮永です。

今回は不動産系スタートアップである弊社のKPI管理方法についてお話します。

以前のブログでも紹介致しましたが、弊社ではサイトのトラッキングを徹底し、あらゆるサービス指標を数値化できる状態にしております。
(過去記事「スタートアップのための「お金と時間がかからない」ログ分析基盤」)

しかし指標は眺めているだけではサービスは改善されません。
サービス指標の進捗を追って、課題を見つけ改善していく必要があります。(KPI管理)

Read more

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

スタートアップ UX設計の舞台裏 ~ペルソナ・カスタマージャーニーマップ編~

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

Housmartの高松です。

みなさんのサービスはUX設計をしっかりと出来ていますか?

現在カウルでは、さらなる使いやすいサービスを目指してUXの再設計を行っています。
今回はその一部として行ったペルソナの定義、カスタマージャーニーマップの作成などを具体例をもとにご紹介します。

実際のサービス設計では結構抜けてしまいがちなUX設計のフェーズ。ペルソナやカスタマージャーニーマップなど知識としては知っているけど、自分のサービスで実践をしたことがない!という方も多いのではないでしょうか。

Read more

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

ちょっとの工夫でスムーズに!iOSアプリ開発のコツ9つ(コーディング・デザイン編)

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

ショッピングアプリでの経験やiOSガイドライン(またはマテリアルデザイン)から学んだiOS開発のプラクティスをまとめてみました。
弊社より8月30日にリリースしたカウルのアプリ開発でとった対応も併記しています。

iOSアプリ開発で意識すべきポイントは、チームやコミュニティの中では共有されているものの、まとまった情報を得ることがなかなか難しいかと思います。
これから企業でiOSアプリを初めて開発するエンジニア な方々の参考になれば幸いです。

「サービス・システム設計」の観点から新規アプリ開発において意識すべきポイントはこちらの記事にまとめています。
「iPhoneアプリを作り始める前に考えておきたい5つのこと」


Read more

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

【2016年夏】iPhoneアプリを作り始める前に考えておきたい5つのこと

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

「iPhoneアプリ作る前に考慮しておくべきことってなんだろう?」
こんな疑問を開発前に持つ方向けに、「サービス・システム設計」の観点から新規アプリ開発において意識すべきポイントをまとめました。

また、弊社より8月30日にリリースしたカウルのアプリ開発でとった対応も併記しています。
過去に携わっていたショッピングアプリでの経験や、先輩アプリエンジニアの方々に教えていただいたことをベースとしています。

企業でiOSアプリを初めて開発するエンジニア作る機能・スケジュールを決めるプロダクトオーナー といった方々の判断の材料になれば幸いです。

エンジニア視点でのスムーズなiOSアプリ開発のためのポイントはこちらにまとめています。
ちょっとの工夫でスムーズになるiOSアプリ開発のコツ9つ(コーディング・デザイン編)


Read more

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

スタートアップエンジニアって何に時間を使っているの?

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

こんにちは!
Housmartの宮永です。

スタートアップのエンジニアはリソースの都合もあるので 「何でもやる」というのが一般的認識かと思います。
弊社エンジニアもその一般的認識に違わず、何でもやる集団です。

何でもやるエンジニアの3人です。左から松江、宮永、高松

でも「何でもやるんです。」では曖昧すぎて、どういう仕事をしているか全然イメージわきませんよね。

ということで、実作業を全て記録しているという弊社の特徴を活かして 今回は実作業時間をベースに弊社エンジニアがどんな業務をどういう割合で行っているのか紹介します。


Read more

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

なぜdevelopブランチは必要なの?

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

「Gitのブランチ構成どうしましょうか?」
「とりあえずdevelop切ってやっていきますね。」

そのdevelopブランチ本当に必要でしょうか。
developブランチだけ使われていて、masterが全く使われていなかったりしないでしょうか。


Read more

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