アニメイトラボ開発者ブログ

株式会社アニメイトラボの開発者ブログです


アニメイトラボ開発者ブログ

developer.animatelab.com


2016新卒向けの勉強会を開催しました

 この4月で入社二年目を迎えました。エンジニアのとーるちゃんです。 先日、3/18(土)に2016新卒のエンジニアを集めたイベントを開催しました。 今回は、そのイベントの振り返りも兼ねて記事を書かせていただきます。

そもそも何でこのイベント開催したか

 今回、イベントを開催したのは、「他の新卒エンジニアってどんなことをしているのか知りたい」 というのが理由です。 エンジニアの新卒が一人しかいなかったので、周りの新卒と交流してみて、何か自分にとってプラスになればいいなと思って開催に至りました。

実際やってみてどうだったか

 やっぱりこのような場に自分から赴くだけあって、自分に無いものたくさん持ってるなあという感想でした。 例えば、参加者の質問力の高さに驚かされました。イベントでは参加者が5分程度のLT発表をするという場があったのですが、質問結構出てて驚きました。 こういう場でしかも周りみんな初対面の中、こんなに質問出てくるのかーと素直に感心してしまいました。
 後はLT発表者がみんな発表慣れしている感が出ている! よくよく他の話を聞いてみたらこういう勉強会他にも結構参加していますという人や他のイベントで登壇しています、今度講師やるんですというような人がいました。 ここで圧倒的な経験の差を痛感しました。みんな他のイベントで経験値を得たからこそ自信持って発表できるんだろうなあというのを思いました。 というように今回のイベントで他の新卒ってこんな感じなのかーというのを思い知らされました。 恐るべし社外の新卒達という感じでした。

今回のイベントを踏まえて今後意識していきたいこと

 今回のイベントで自分には経験値が圧倒的に足りていないなということを痛感しました。 実は、当日ボランティアで運営のお手伝いをしてもらった先輩にももっと自信持って話そうって言われました… やっぱり自分にとって初めてのイベント運営ということもあって、自信のなさが出てしまったんだろうなあと思います。 なので、こういうイベント毎に参加していって経験値を積んでいきたいです。という二年目を迎えたエンジニアの抱負と振り返りでした。

以下、LTのスライドを掲載したいと思います。

参加者の発表資料

speakerdeck.com

www.slideshare.net

www.slideshare.net

発表の様子

f:id:tonnbonnbo:20170404190628j:plain

【2016新卒エンジニア限定Meetup】を開催します

2016年の4月にアニメイトラボに新卒で入社しました、とーるちゃんと申します。 今回、初めてこの開発者ブログに投稿させていただきます。

早速、本題ですが『【2016新卒エンジニア限定Meetup #1】社外同期との交流を深めて“2年目”を考える』 というイベントを企画しているのでその宣伝です。

詳細は下記をご覧ください。

connpass.com

本イベントは【新卒】という特権をお持ちの方同士で集まり、1年の振り返り会をするというイベントになっております。

同年代の交流の場を作り、同年代のエンジニアがどんなことをしているかの情報収集などに役立ててもらうというのが本イベントの目的です。

LTで話してくれる方を絶賛募集中ですので、我こそはという方は是非ご登壇お願いいたします。

LT以外でも参加者を募集していますので、興味をお持ちの【新卒】の方いらっしゃいましたら是非ご参加いただければと思います。

たくさんのご参加お待ちしております。

アニメイトタイムズが16倍早くみられるようになった話

(※この記事はiOSアニメイトタイムズにのみ言及しています)

 ごきげんよう、開発部のかんがーです。本日は皆様に素晴らしいTwitterアカウントをご紹介するために久々に筆を取っております。
 そのアカウントとはアニメイト百合部( @animateyuribu )でして、毎日新鮮な百合情報を取り入れるとともに、あの本を買っていなかったなど、罪深きことをしないようフォローをさせていただいております。(ここまでがあいさつ)

と、インターネットの歴史を感じる長い挨拶をしてしまいました。

 ところで私達アニメイトラボは先日、ニュースサイト「アニメイトタイムズ」のアプリをリリースさせて頂きました。🎊
リリース記事にてiOSアプリに関しては、Web版と比較し約16倍の表示速度を実現しています。 と紹介をしたのですが、こちらなぜ16倍なのか?と疑問を持たれている方もいるかと思います。今回の記事ではこの件について「iOSの表示速度を16倍とした根拠」に踏み込んで紹介させていただこうと思います。

従来(Web版)のアニメイトタイムズ

 アニメイトタイムズはアニメイトラボが始まるよりもずっと前、2002年2月に産声を上げたサービスでその歴史の中で技術にせよ、サービスにせよ、ビジネスにせよ、求められるものも当時とは大きく変化し、その変化になんとか追いついていこうとしていました。
 そのうちの一つとして今回リリースしましたアプリがあります。現状のWeb版でもスマートフォン向け画面を提供しておりましたが、どうしても現状のシステムでは十分に速度を出すことができませんでした。そこで我々はアプリ化すると同時にユーザーの皆様に「サクサク」と記事を読んでいただけるように大きな変更を加えました。それにより従来の16倍 という形でアニメイトタイムズの記事閲覧ができるようになりました。

比較方法

実装はいずれもSwift3.0で実装。

WebView

 WKWebViewを利用して、http://sp.animatetimes.com/news/details.php の任意記事を表示しました。 時間の測定開始は webView.load(request) する直前として、測定終了をWKNavigationDelegateのデリゲートメソッド func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)が呼ばれたタイミングとしました。

 またiOS 9 WKWebView 主な変更点をざっくりを参考にwebDataStoreを .nonPersistent() としました。
 さらに、How to remove cache in WKWebview?を参考にremoveDataをしました。

ネイティブ

 測定開始を記事一覧画面で記事を選択したときとし、測定終了をUITableViewのreloadDataを実行してCellのレイアウトが終了した時としました。ただし、reloadDataはそのままだと実行時点ではCellのレイアウトは終了していません。そこでUITableView / UICollectionView の reloadData が完了した直後にセルを参照したいを参考にして、GCD(Grand Central Dispatch)でメインスレッドで処理すると明示しました。
 なお、参考先はSwift2時代のGCDでしたので、Swift3のGCD(dispatch_async)を参考にしてSwift3用に書き換えて実験しました。

 また、Alamofireを利用していたので、How to disable caching in Alamofireを参考にして、Disabling the URLCache CompletelyとConfiguring the Request Cache Policyしました。

比較環境

項目 内容
端末 iPhone 7
OS iOS 10.1.1
通信回線 4G(au)

測定結果

WebViewでの表示

f:id:kangar:20161214103341g:plain

ネイティブでの表示

f:id:kangar:20161214175808g:plain

上記のような実験を50回試行した結果が下記のようになります。

WKWebView ネイティヴ
平均(s) 4.641 0.2935
標準偏差 1. 217 0.04311

 この結果の平均を持って「iOSの表示速度を16倍とした根拠」としています。 16倍早くなったアニメイトタイムズはいかがだったでしょうか。是非その速度を実際にアプリを触ることで試してみてください。

iOS版 Android版

(文・かんがー、調査・とぅーさー)