try! Swiftで学んだこと

私のスキル的に、1発表に対して実際に取り込めるのは1〜2個が限界なので、学んだことが少ないのは申し訳ない。

一番学んだことは、海外からの出席者が居るカンファレンスなんだから英語出来たほうが良かったねということ。HiNative Trekの今月のテーマが「カンファレンスでの会話」らしいので受講を開始しました。

続きを読む

Realm + 高さが可変するTableViewの考察

f:id:yoneapp:20160229102101p:plain

何度か、Realm + 高さが可変するTableViewにチャレンジしてみて、自分の中で最終的にこんな感じかなと思ったのでサンプルを作成してみました。アドバイス頂けると嬉しいです。

GitHub - yoneapp/RealmTableViewSample

高さを計算する処理が重く、バックグラウンドに逃したいがRealmはスレッドをまたげないのでバックグラウンド処理において、どう書けばいいのかについて悩み続けています。

ここに至った経緯を記します。現在、四個目です。

一個目

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat にて text.boundingRectWithSize を使用して高さを計算する。もちろん text.boundingRectWithSize をMainThreadで実行すると重い。

二個目

バックグラウンドで text.boundingRectWithSize を実行する。もちろん、Realmを使っているので落ちる。また、上手くごまかせたとしてもデータが書き換わった時に対処しにくい。

三個目

全てのデータをRealmから取り出し、普通のオブジェクトにしてしまう。この場合、Realmの遅延評価による高速性を犠牲にする。また、データが何千件もある場合に処理に時間が掛かる。更新にも時間がかかる。

四個目

仮想のCellを作成して、そこで高さ計算を行う。Realmオブジェクトに識別子を付け、仮想のCellと結びつける。仮想のCellの計算が終わってない場合は、仮のセルを表示しておく。

仮想のCellは、現在表示されてるCellのプラスマイナス5個ぐらいを常にバックグラウンドで計算するようにする。

実際にRealmのデータが削除された場合でも、データがない場合は仮のセルが表示されるのでクラッシュせずに動作します。

五個目

RealmのSlackで質問させて頂いた所、複雑なことをしなくても UITableViewAutomaticDimension で解決できるとアドバイス頂きました。実際の所、高さ計算はそんなに重くないようでした。estimateHightを合わせて使えば、計算されるセルの数も限定できるので簡単に実装することができそうです。

WebからiOSアプリを開く技術調査

URLSchemeでアプリの有無によって挙動を変える(iOS9対応版) | astone.jeez.jp によると、現在はURLに応じて上手く切り替えるのは、うまく動かない可能性が高いようだ。

SmartNews(SmartBanner)

最もスマートな純正ソリューションだが、WebViewで表示されないのが痛い

f:id:yoneapp:20160223004428p:plain

続きを読む

JavaScriptグラフ適当分類メモ

JavaScript Graphing Library Comparison
グラフ比較サイトだけど多くて選別できない

多機能

D3.js - 日本語ドキュメント
難しそう

Data Visualization - Gallery of Interactive JS Charts | ZingChart

jQuery Widgets & Controls - ASP.NET MVC Controls – IgniteUI

vis.js - A dynamic, browser based visualization library.
リアルタイムグラフやタイムラインが面白い

plotly.js | JavaScript Graphing Library

JavaScript Charts and Maps | amCharts

http://js.devexpress.com/WebDevelopment/Charts/

アニメーション

Chartist - Simple responsive charts

おしゃれアニメーション

Contour Overview

真面目おしゃれ

http://metricsgraphicsjs.org/

n3-charts

おしゃれ

Canvasで超可愛いグラフが作れる!「Chart.js」の紹介 | 株式会社LIG 

まじめ

Palantir - Plottable.js

Beautiful HTML5 JavaScript Charts | CanvasJS

Highmaps JavaScript Maps | Highcharts

GitHub - codesuki/react-d3-components: D3 Components for React

dimple - A simple charting API for d3 data visualisations

Multiple plots sketch - jagracar

Vega: A Visualization Grammar

Cubism.js

シンプル

Chart Gallery  |  Charts  |  Google Developers

3D座標

GitHub - frewsxcv/graphosaurus: 3D graph viewer powered by WebGL (three.js)

http://timechart.toolset.io/

サムネイル

Sparky

組織図

Caprica Software Limited

yFiles for HTML - HTML5 / JavaScript Diagramming Library

ネットワーク

Cytoscape: An Open Source Platform for Complex Network Analysis and Visualization

GitHub - anvaka/VivaGraphJS: Graph drawing library for JavaScript

Sigma js

ヒートマップ

heatmap.js : Dynamic Heatmaps for the Web

地図

DataMaps

おまけ

[Google Charts]グラフに注釈を付加する

potatotipsでPUSH通知の許可UIに関して発表してきました

potatotips #26 (iOS/Android開発Tips共有会) - connpass で発表して参りました。運営スタッフの方や会場提供のSupershipさんありがとうございました。

発表資料

www.slideshare.net

Twitterの反応

続きを読む