Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
JustSystems Corporation
4,628 views
Shaping up ATOK to fit to your iPhone / iPad
Shaping up ATOK to fit to your iPhone / iPad
Read more
9
Save
Share
Embed
Embed presentation
1
/ 49
2
/ 49
3
/ 49
4
/ 49
5
/ 49
6
/ 49
7
/ 49
8
/ 49
9
/ 49
10
/ 49
11
/ 49
12
/ 49
13
/ 49
14
/ 49
15
/ 49
16
/ 49
17
/ 49
18
/ 49
19
/ 49
20
/ 49
21
/ 49
22
/ 49
23
/ 49
24
/ 49
25
/ 49
26
/ 49
27
/ 49
28
/ 49
29
/ 49
30
/ 49
31
/ 49
32
/ 49
33
/ 49
34
/ 49
35
/ 49
36
/ 49
37
/ 49
38
/ 49
39
/ 49
40
/ 49
41
/ 49
42
/ 49
43
/ 49
44
/ 49
45
/ 49
46
/ 49
47
/ 49
48
/ 49
49
/ 49
More Related Content
PPTX
もしSIerのエンジニアがSRE本を読んだら
by
Tomoki Ando
PPTX
ATOK Spark のご紹介とJavaによるプラグイン開発について
by
JustSystems Corporation
PPTX
Device Farm を使ったスマホアプリの自動テスト
by
Kenichi Tatsuhama
PPTX
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
by
Study Group by SciencePark Corp.
PDF
20220113 my seeking_sre_v3
by
Ayachika Kitazaki
PPTX
5分で分かるサイボウズのSRE
by
uchan_nos
PPTX
Kinoma Element 味見の会
by
Shingo Fukui
PDF
オープニング
by
konekto
もしSIerのエンジニアがSRE本を読んだら
by
Tomoki Ando
ATOK Spark のご紹介とJavaによるプラグイン開発について
by
JustSystems Corporation
Device Farm を使ったスマホアプリの自動テスト
by
Kenichi Tatsuhama
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
by
Study Group by SciencePark Corp.
20220113 my seeking_sre_v3
by
Ayachika Kitazaki
5分で分かるサイボウズのSRE
by
uchan_nos
Kinoma Element 味見の会
by
Shingo Fukui
オープニング
by
konekto
What's hot
PDF
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
by
Shuichi Tsutsumi
PPTX
『Zerto7.5』新機能全貌紹介! 統合/分析機能強化で、より最適なレプリケーションが可能に!
by
株式会社クライム
PPTX
Rancherカタログ紹介 Hadoop + Yarn
by
cyberblack28 Ichikawa
PPTX
ストレージサービスからの情報漏えいにサヨナラ
by
Masato Nakamura
PPTX
20150315 realmlt
by
Kenichi Tatsuhama
PPTX
How to Record Screen and Sound of iOS
by
Takao Sato
PPTX
Photon Server Deep Dive
by
Kazumi Hirose
PDF
Flash Professional CS6 の新機能のご紹介 AIR編
by
KinkumaDesign
PPTX
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
by
Yasuaki Matsuda
PDF
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
by
azumakuniyuki 🐈
PPTX
Riot.jsを用いたweb開発 takusuta tech conf #1
by
Keisuke Imai
PDF
UI/UX に影響の大きい watchOS 2 の新機能 3つ
by
Shuichi Tsutsumi
PPTX
Black jumbodogをcoreclrで動かしてみた
by
Yasuaki Matsuda
PDF
JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」
by
Yui Ashikaga
PDF
簡単!自動バックアップ設定でWordPressを安心運用
by
Hidekazu Ishikawa
PDF
ACE 第6回定例会 ショートプレゼン
by
Yui Ashikaga
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
by
Shuichi Tsutsumi
『Zerto7.5』新機能全貌紹介! 統合/分析機能強化で、より最適なレプリケーションが可能に!
by
株式会社クライム
Rancherカタログ紹介 Hadoop + Yarn
by
cyberblack28 Ichikawa
ストレージサービスからの情報漏えいにサヨナラ
by
Masato Nakamura
20150315 realmlt
by
Kenichi Tatsuhama
How to Record Screen and Sound of iOS
by
Takao Sato
Photon Server Deep Dive
by
Kazumi Hirose
Flash Professional CS6 の新機能のご紹介 AIR編
by
KinkumaDesign
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
by
Yasuaki Matsuda
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
by
azumakuniyuki 🐈
Riot.jsを用いたweb開発 takusuta tech conf #1
by
Keisuke Imai
UI/UX に影響の大きい watchOS 2 の新機能 3つ
by
Shuichi Tsutsumi
Black jumbodogをcoreclrで動かしてみた
by
Yasuaki Matsuda
JAZUG 4周年総会 「トラブルから学ぶAzure世渡り術」
by
Yui Ashikaga
簡単!自動バックアップ設定でWordPressを安心運用
by
Hidekazu Ishikawa
ACE 第6回定例会 ショートプレゼン
by
Yui Ashikaga
Viewers also liked
PDF
ジャストシステムJava100本ノックのご紹介
by
JustSystems Corporation
PDF
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
by
JustSystems Corporation
PDF
形態素解析の実装言語Talk パネルディスカッション
by
JustSystems Corporation
PPTX
ジャストシステムの形態素解析技術 その2 機械学習編
by
JustSystems Corporation
PPTX
スマイルゼミの裏側(db編)
by
JustSystems Corporation
PDF
タッグ開発の現場 【エンジニアとデザイナー編】
by
JustSystems Corporation
PDF
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
by
JustSystems Corporation
PDF
Groonga meetup20151129
by
JustSystems Corporation
PDF
BIツールActionista!のインメモリーデータベースIMDB
by
JustSystems Corporation
PDF
BIツールActionista!のOLAP集計エンジンJungarian
by
JustSystems Corporation
PDF
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
by
JustSystems Corporation
PDF
人工無脳バトル 1st STEP 回答と解説
by
JustSystems Corporation
PPTX
ジャストシステムの形態素解析技術
by
JustSystems Corporation
PPTX
Lecture album
by
Khaled Cheriet
PPTX
形態素解析器 売ってみた
by
JustSystems Corporation
PPTX
ピタジョブの裏側 - クローラ・スクレイパ編 -
by
JustSystems Corporation
PDF
Penina Christmas & New Year in the Algarve
by
Penina Hotel & Golf Resort
PDF
Cloud leaflet-aw
by
Tarun Aarya
PDF
Sir Henry Cotton residents rates - Penina Algarve
by
Penina Hotel & Golf Resort
PPTX
narcotrafico
by
ximena albornoz
ジャストシステムJava100本ノックのご紹介
by
JustSystems Corporation
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
by
JustSystems Corporation
形態素解析の実装言語Talk パネルディスカッション
by
JustSystems Corporation
ジャストシステムの形態素解析技術 その2 機械学習編
by
JustSystems Corporation
スマイルゼミの裏側(db編)
by
JustSystems Corporation
タッグ開発の現場 【エンジニアとデザイナー編】
by
JustSystems Corporation
ArrayListをじっくり読んでみた - JavaコアSDKを読む会を社内でやって気づいたこと -
by
JustSystems Corporation
Groonga meetup20151129
by
JustSystems Corporation
BIツールActionista!のインメモリーデータベースIMDB
by
JustSystems Corporation
BIツールActionista!のOLAP集計エンジンJungarian
by
JustSystems Corporation
「訴求ファースト」と「こだわり駆動開発」~教育、医療、もの書き市場で戦うプロダクトマネージャーの考え方~
by
JustSystems Corporation
人工無脳バトル 1st STEP 回答と解説
by
JustSystems Corporation
ジャストシステムの形態素解析技術
by
JustSystems Corporation
Lecture album
by
Khaled Cheriet
形態素解析器 売ってみた
by
JustSystems Corporation
ピタジョブの裏側 - クローラ・スクレイパ編 -
by
JustSystems Corporation
Penina Christmas & New Year in the Algarve
by
Penina Hotel & Golf Resort
Cloud leaflet-aw
by
Tarun Aarya
Sir Henry Cotton residents rates - Penina Algarve
by
Penina Hotel & Golf Resort
narcotrafico
by
ximena albornoz
Similar to Shaping up ATOK to fit to your iPhone / iPad
PDF
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
by
Yoshito Tabuchi
PDF
iPhoneとAndroidのアプリ開発最新潮流
by
Rakuten Group, Inc.
PDF
勘違いだらけのAndroid UIデザイン
by
Nobuya Sato
PDF
Apple信者だったボクは気づくとiPhone嫌いになっていたんだが 〜iPhone 6 Plusへの苦悩の日々
by
Yu Uno
PDF
PF部2011年12月勉強会.androidsola
by
android sola
PDF
Androidを利用した外部機器の制御
by
Takashi Kanamaru
PDF
iPhone アプリ開発の実例
by
Tokyo City University, Ueno Lab.
PDF
Google io2011報告
by
cat kaotaro
PDF
iOS グラフィックス Tips
by
Kaname Noto
PDF
App extension for iOS
by
toyship
PDF
Why android 2011
by
Takashi Ohmoto
PDF
[20140625]wwdc2014 feedback
by
VOYAGE GROUP
PDF
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
by
youten (ようてん)
PDF
Android multiscreen
by
Kazuaki Ueda
PDF
20111114 Ice Cream Sandwich ホットトピック
by
youten (ようてん)
PDF
MatrixEngine SKD説明チラシ
by
ITDORAKU
PDF
Android Develop presentation on 19 Sep 2012.
by
Kazuaki Ueda
PDF
ABC2012 Spring: Android Design for Dummies
by
Nobuya Sato
PDF
“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版
by
kinneko
PDF
ライトニングトーク「延びる携帯電話★刀の如し」 in 日本 Android の会 12月定例会「Android 10周年 & 忘年会 大LT大会」
by
shimay
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
by
Yoshito Tabuchi
iPhoneとAndroidのアプリ開発最新潮流
by
Rakuten Group, Inc.
勘違いだらけのAndroid UIデザイン
by
Nobuya Sato
Apple信者だったボクは気づくとiPhone嫌いになっていたんだが 〜iPhone 6 Plusへの苦悩の日々
by
Yu Uno
PF部2011年12月勉強会.androidsola
by
android sola
Androidを利用した外部機器の制御
by
Takashi Kanamaru
iPhone アプリ開発の実例
by
Tokyo City University, Ueno Lab.
Google io2011報告
by
cat kaotaro
iOS グラフィックス Tips
by
Kaname Noto
App extension for iOS
by
toyship
Why android 2011
by
Takashi Ohmoto
[20140625]wwdc2014 feedback
by
VOYAGE GROUP
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
by
youten (ようてん)
Android multiscreen
by
Kazuaki Ueda
20111114 Ice Cream Sandwich ホットトピック
by
youten (ようてん)
MatrixEngine SKD説明チラシ
by
ITDORAKU
Android Develop presentation on 19 Sep 2012.
by
Kazuaki Ueda
ABC2012 Spring: Android Design for Dummies
by
Nobuya Sato
“夏前にすぐに痩せるRam diet!” もしくは 「老頭児組込みエンジニアの苦悩」 (中継無し) パート1 公開版
by
kinneko
ライトニングトーク「延びる携帯電話★刀の如し」 in 日本 Android の会 12月定例会「Android 10周年 & 忘年会 大LT大会」
by
shimay
More from JustSystems Corporation
PDF
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
PDF
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
by
JustSystems Corporation
PPTX
Selenium WebDriver + python で E2Eテスト自動化
by
JustSystems Corporation
PDF
AWS運用における最適パターンの徹底活用
by
JustSystems Corporation
PDF
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
by
JustSystems Corporation
PDF
最新のJava言語仕様で見るモジュールシステム #jjug
by
JustSystems Corporation
PPTX
ジャストシステムのDevOps実例 今後の取り組み
by
JustSystems Corporation
PDF
JustTechTalk#10windowsアプリでのテスト自動化事例
by
JustSystems Corporation
PDF
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
by
JustSystems Corporation
PPTX
TypeScriptの大規模開発への適用
by
JustSystems Corporation
PPTX
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
by
JustSystems Corporation
PPTX
JavaでインメモリSQLエンジンを作ってみた
by
JustSystems Corporation
PDF
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
by
JustSystems Corporation
PDF
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
by
JustSystems Corporation
PDF
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
by
JustSystems Corporation
PDF
CSSレイアウトでなぜ失敗するか?
by
JustSystems Corporation
PDF
JustTechTalk#10 React開発における自動テスト実践
by
JustSystems Corporation
PPTX
Kotlin is charming; The reasons Java engineers should start Kotlin.
by
JustSystems Corporation
PDF
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
by
JustSystems Corporation
PDF
現役23名のPM:タイプ別マネジメントパターン
by
JustSystems Corporation
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
by
JustSystems Corporation
DDDとクリーンアーキテクチャでサーバーアプリケーションを作っている話
by
JustSystems Corporation
Selenium WebDriver + python で E2Eテスト自動化
by
JustSystems Corporation
AWS運用における最適パターンの徹底活用
by
JustSystems Corporation
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
by
JustSystems Corporation
最新のJava言語仕様で見るモジュールシステム #jjug
by
JustSystems Corporation
ジャストシステムのDevOps実例 今後の取り組み
by
JustSystems Corporation
JustTechTalk#10windowsアプリでのテスト自動化事例
by
JustSystems Corporation
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
by
JustSystems Corporation
TypeScriptの大規模開発への適用
by
JustSystems Corporation
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
by
JustSystems Corporation
JavaでインメモリSQLエンジンを作ってみた
by
JustSystems Corporation
ピュアJavaだと思った?残念androidでした~いつからAndroidをJavaだと錯覚していた?~
by
JustSystems Corporation
「技術内閣制度」〜2年間やってきて得られた事とこれから〜 #devsumi
by
JustSystems Corporation
JustTechTalk#11_スマイルゼミ顧客満足度への貢献
by
JustSystems Corporation
CSSレイアウトでなぜ失敗するか?
by
JustSystems Corporation
JustTechTalk#10 React開発における自動テスト実践
by
JustSystems Corporation
Kotlin is charming; The reasons Java engineers should start Kotlin.
by
JustSystems Corporation
事業に貢献する商品開発と その成長の仕組み作り ~これからのエンジニアに必要とされるスキルとは~
by
JustSystems Corporation
現役23名のPM:タイプ別マネジメントパターン
by
JustSystems Corporation
Shaping up ATOK to fit to your iPhone / iPad
1.
Shaping up ATOK
to fit to your iPhone/iPad 株式会社ジャストシステム 入江賢治 JustTechTalk#01
2.
入江賢治 is 誰? •
2003年度入社、12年目 • ATOK for iOS 開発責任者 • 最近携わったATOK関連商品: – ATOK for Android [Professional] – 開発初期 – ATOK 2014 for Mac
3.
ATOK for iOSのご紹介 •
2014年9月22日発売 • iOS 8から導入されたサードパーティ製キー ボードとして提供
4.
ATOK for iOSの特徴 •
Windows/MacのATOKと同等の高性能変換エンジン 「ATOK EVエンジン」を搭載 – 豊富な語彙から、文脈に応じて最適な変換候補を表示、 長文にも強い • 使いやすさにこだわったキーボードUI – 6/6 Plusの大画面で片手操作できる幅寄せUIに一番乗り。 サイズ・位置までカスタマイズ可能。 – iOS標準に近い使用感の中にカーソル移動・まとめて削除 など、入力を支援する機能を盛り込んだ
5.
本日のテーマ • ATOK for
iOS実現に至るまでの軌跡から、下記に ついてお話します 1. ATOK EVエンジンの実現について 2. ATOK for iOSで苦労した点、得られた知見 キーワードは「シェイプアップ」
7.
ATOK EVエンジンとは • 元々はATOK
for Androidの変換エンジンを新しく しようという話からスタート – 携帯電話やゲーム機向けのモバイル機器に特化し たバージョンの変換エンジンを採用していた • スマホ・タブレットが高性能化、PCに近いスペック を備えるようになった →最新のPC版変換エンジンと統合し、スマホ・タブレット での進化を加速したい
8.
とはいってもATOKデカイ • 参考: ATOK
2014 for Windows – インストール必要容量: 455MB – インストールファイルの容量: 約350MB – 辞書などのデータ類: 約180MB • 候補の生成に使う主なデータだけでも 約111MB →さすがにそのままスマホに乗せるワケには…
9.
とはいってもATOKデカイ • 支配的なのはデータサイズ • 続いてコードサイズ(プログラムサイズ) •
Wi-Fiでアプリをダウンロードできるサイズに 抑えることは必須 – Androidの場合apkで50MBまで
10.
データサイズをシェイプアップ • 使用データをスマホに合わせて最適化 – 変換精度低下を最低限にとどめつつ、データ容量を 大きく削減できる「美味しい」ところから削減 •
使用データをスマホ専用に圧縮 – ATOK EVエンジン専用の圧縮辞書形式を導入 – 圧縮形式を導入したデータについては50%近くまで圧 縮することができた
11.
コードサイズをシェイプアップ • 明らかに無駄なコードばかりでザクザク削れ たわけではなく、地道な削減の積み重ね • 最終的には、nmコマンドでモジュール内の関 数コードサイズを分析、大きいもので削れそう なものがないか探す泥臭いことも…
12.
第一部 〜完〜 →などなどの取り組みで なんとか目標としたサイズに収まりました! ここから動作調整・速度チューニングを経て… – 2014年2月7日 ATOK
for Android [Professional] として発売。
13.
そしてATOK for iOSへ… •
2014年6月3日iOS 8発表。サードパーティ製 キーボードへの対応も発表された。 http://www.apple.com/jp/ios/developer/
14.
そしてATOK for iOSへ… •
2014年6月3日iOS 8発表。サードパーティ製 キーボードへの対応も発表された。
15.
App Extensions • ほかのアプリと連携して同時に動作できる特殊なアプ リ形態 –
Share ー Today – Photo Editing ー Custom Keyboard – File Provider ー Actions – Document Provider • 今まで:他アプリ動作中には、通知処理、音楽再生、 ファイルのダウンロードをバックグラウンドで行うくらい しかできなかった
16.
App Extensions • 調査した結果、色々制約はあるも、ついに IMEとしてiOSにもATOKを提供できそう •
となると iOSにもやっぱり、最新の変換エンジンを搭載 してご提供したい!
18.
iOSにはiOSのちょうどいいサイズ • アプリ容量→100MB未満を目標に – 100MBがWi-Fiなしでインストールできる最大サイズ →MUST –
App Storeで見て100MBを超えているとずっと入れて おくアプリとしては重たい印象 • 音楽やムービーはもちろん、ゲームとかゲームとかゲーム とか最近容量大きいですからね
19.
iOSにはiOSのちょうどいいサイズ • アプリ容量→100MB未満を目標に – 100MBがWi-Fiなしでインストールできる最大サイズ →MUST –
App Storeで見て100MBを超えているとずっと入れて おくアプリとしては重たい印象 • 音楽やムービーはもちろん、ゲームとかゲームとかゲーム とか最近容量大きいですからね • →64bit対応必須でコードサイズを心配したが 32bit+64bitのバイナリでも無事収まった
20.
iOSにはiOSのちょうどいいサイズ • iOS 8対応デバイスの搭載メモリ –
iPhone 4s/iPod touch(5th) 512MB – iPhone 5/5c/5s/6 1GB • メモリ使用量 – もちろん使いすぎてはいけないが、Max数十MBの範 囲なら何とかなるだろう
21.
iOSにはiOSのちょうどいいサイズ • iOS 8対応デバイスの搭載メモリ –
iPhone 4s/iPod touch(5th) 512MB – iPhone 5/5c/5s/6 1GB • メモリ使用量 – もちろん使いすぎてはいけないが、Max数十MBの範 囲なら何とかなるだろう ↓ そう思っていた時期が私にもありました
22.
Retina iPadなど高解像度 デバイスで謎の死が… • 実機で使い込みをしているとクラッシュすることが •
開発中ならそんなこともあるよねとクラッシュログを読 むも、スタックトレースなし なんぞこれ?iOS 8βのバグかな? ↓ 甘 か っ た
23.
ここでApp Extension Programming Guideを確認してみましょう •
https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionCreation.html#//apple_ref/doc/uid/TP40014214-CH5-SW1
24.
ここでApp Extension Programming Guideを確認してみましょう •
https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionCreation.html#//apple_ref/doc/uid/TP40014214-CH5-SW1 意訳)メモリ使いすぎたら コ ロ ス え、そんな物騒な…
25.
アプリの動作を守るためとはいえ…
26.
アプリの動作を守るためとはいえ…
27.
アプリの動作を守るためとはいえ… _人人人人人人人人_ > ATOK 突然の死
<  ̄Y^Y^Y^Y^Y^Y^Y ̄ ※ただしSimulatorでは起きない/実機のみ
28.
メモリはどこへ消えた? • 測ってみた。 (注: 開発中のある時点のものです) 6
plus上でUI、メモリ食い過ぎィィ! (当社比)
29.
メモリはどこへ消えた? • UIおよび描画に関連しそうなオブジェクトが Allocations上位に続々ランクイン。 – なんとかViewとか –
なんとかPainterとか – CG(CoreGraphics) raster dataっていうのも… – CALayerってキーワードが頻出
30.
CALayerって? • CA(CoreAnimation)LayerはiOSアプリ画面表示の基本 となるオブジェクト(※ゲームではOpenGL ESなど例外も) •
UIViewも基本、裏にCALayerを持っている – ボタンなどのコントロールの描画パーツというイメージ • 表示内容に効果やアニメーションを適用できる – 移動・拡大縮小・回転させたり透過させたりしつつ、 階層をもって重ね合わせできる – これらの効果はアニメーションできる
31.
CALayerって? • 表示内容は通常、描画バッファとして持つ – 高速なアニメーションを実現するため –
幅x高さx色深度(RGBAなら4bytes)のメモリ上ビットマップ 画像のイメージ さっきのグラフと 完 全 に 一 致 モデル 解像度 画素数 比率(概算) iPhone 6 Plus 1920x1080 2,073,600 3 iPhone 6 1334x750 1,000,500 1.5 iPhone 5s 1136x640 727,040 1
32.
原因はわかった。でもどうすれば? • 実は、描画バッファを使わずCPU/GPUで画面 に直接描画を行うCALayerもある。 – CALayerのshouldRasterizeプロパティがNO •
描画バッファを使うかどうかのヒント。NOにしても条件 によって描画バッファが使われてしまう。後述。 これだ!全部これでいこう
33.
直接描画する条件の例 直接描画できる例 • 簡易な図形を描画する CAShapeLayer – 直線、直方体、丸など? –
厳密な条件は未判明 • 右記に該当しないCALayer – ぶっちゃけ、ただの四角形。 描画バッファを使ってしまう例 • CALayerDelegateでカスタム描 画するCALayer – paintLayer:inContext: • ベジェ曲線で複雑な図形を描 画するCAShapeLayer • 文字(列)表示 • 画像表示 • 影、一部のアニメーション
34.
じゃあ…と、メモリ使わず GPU酷使してみた結果 • 試しにQWERTYキーボード全体を CAShapeLayerを使いまくってキートップ以外 CoreAnimationに全部ランタイムに描かせるようにして みた – キーが約40個なので キートップのレイヤー・ CAShapeLayer各40個。 角丸影付きくらいなら いけるでしょ?
35.
じゃあ…と、メモリ使わず GPU酷使してみた結果 • メモリ消費量は激減。こうかはばつぐんだ! • 世界は平和になったかと思われた •
しかし、Retina iPadで画面回転など再描画面積が大き くなる操作を繰り返すと… _人人人人人人人人_ > ATOK 突然の死 <  ̄Y^Y^Y^Y^Y^Y^Y ̄
36.
じゃあ…と、メモリ使わず GPU酷使してみた結果 • メモリ消費量は激減。こうかはばつぐんだ! • 世界は平和になったかと思われた •
しかし、Retina iPadで画面回転など再描画面積が大き くなる操作を繰り返すと… _人人人人人人人人_ > ATOK 突然の死 <  ̄Y^Y^Y^Y^Y^Y^Y ̄
37.
再びApp Extension Programming Guideを確認してみましょう •
https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionCr eation.html#//apple_ref/doc/uid/TP40014214-CH5-SW1
38.
再びApp Extension Programming Guideを確認してみましょう •
https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionCr eation.html#//apple_ref/doc/uid/TP40014214-CH5-SW1 意訳)GPUはみんなのもの GPU独り占めしても コ ロ ス
39.
メモリもダメ、GPUもダメ • GPUリソースも制限されてる • GPUキューに描画命令がある程度溜まってし まうと死んでしまう •
先ほどのケースでは画面回転の度にRetina iPadの高解像度の約半分をリアルタイム描画 する高負荷に耐えきれず死亡 ※そんなに複雑な描画でなくてもこの有様
40.
メモリもダメ、GPUもダメ • この件に関してはキー背景の表示内容を自分で 用意してキー背景が同じすべてのCALayerにセッ トすることで何とかしました。 ↓これを共有→ • • •
41.
メモリもダメ、GPUもダメ • この件に関してはキー背景の表示内容を自分で 用意してキー背景が同じすべてのCALayerにセッ トすることで何とかしました。 – テクニックの説明 •
CALayerのcontentsプロパティに画像を設定することで描画 バッファを外部から与えることができる。 • 同一のオブジェクトを複数のCALayerにセットすることで描画 バッファを一つで済ませられる。
42.
CALayerメモリ消費の傾向と対策 • 描画バッファを使わせない – 単純な図形はCALayerのプロパティやCAShapeLayer で描画する。四角形、角丸四角形 (CALayer.cornerRadiusをセット)など。 –
個数の多いものは同じ描画バッファを再利用する。 (CALayer.contentsをセット) • CAShapeLayerだけで頑張るとGPU使いすぎで死ぬ • 影付けやとくにアニメーションは瞬間最大風速が 大きいのでなるべく避ける
43.
Appendix: 動作速度についても、少し • ATOKは大規模なデータを使って変換動作を行う ため、ストレージ速度に強く依存する •
HDDなど、ストレージが遅い環境も考慮して、 ATOKには以下の2つのモードがある – データを一度にメモリに読み込んでしまう – 都度ファイルにアクセスする
44.
Appendix: 動作速度についても、少し • 検証の結果、iPhone/iPadのフラッシュスト レージは十分に高速と判明 –
フラッシュストレージ直接アクセス+OSキャッシュ で現実的な性能を引き出せた ↓ 何とかセーフ
45.
iOS版開発で得られた知見まとめ • iOS 8においてApp
Extensionは使用メモリに大きな制 約がある。 • コアロジックでメモリを使うExtensionでは、メモリ使用 量の瞬間最大風速に気を遣った設計・実装が必要。 – 高性能な変換エンジンを搭載したIMEを作る際などにはご 注意ください • あと、新機種実機はなるべく早く手に入れたい。実機 確認大事です。
47.
かくして • ATOK for
iOSを何とかお客様の元に届けるこ とができました。 • これからも、お客様の声をお聞かせいただき、 iOS上で最高の日本語入力環境を目指してま いります。
48.
Conclusion • ATOK EVエンジンを搭載したATOK
for iOSは、今 後とも最新ATOKの開発成果を搭載し、進化し続 けます。 • いま、最もシェイプアップが必要なのは 私自身です! これからもATOK for iOSをよろしくお願いします
49.
ジャストシステムでは 実力あるスマホアプリエンジニアを募集しています 変化を共に創ろう。 次の当たり前を創り出すために。