第20回コベチケの会 🎉

コベリンの最近の取り組みとして、業務などで役立ちそうな知見を共有する会を開催することになりました。 そのついでに発表に使ったアジェンダもそのまま公開してしまおうという豪快な企画です。

※ アジェンダをそのままコピペして公開したものなので若干見にくい箇所もあるかもしれませんが、ご了承ください。

最近の知見 @mironal

yaml の list は merge(join)できないけど、 xcodegen だとできる

yaml の map はマージできる.

https://yaml.org/type/merge.html

しかし list(array)はマージできない. 議論はされているが今はできない。

https://github.com/yaml/yaml/issues/35

でも xcodegen で dependencies の配列を2つの target で共有したかった。一方の target にだけ追加すべき dependencies があった。

どうするか?

XcodeGen の Target Template を使う.

XcodeGen では HogeTemplate という機能が色々あるが、どれも map だと merge、 list だと join する動きになっている。

よってコレを使うことで共通の dependencies だけ定義した Template を作っておけばやりたいことができる。

使う側 target 側は複数の template を指定できるので template を細かく分けておくこともできそう。

image.png (84.8 kB)

mac の複数ファイルのリネームの話

こんなファイルたちがあるとき

image.png (7.5 kB)

一部の文字列を置換

  • _- にするとか
  • imageimg にするとか

image.png (64.8 kB)

Prefix or Suffix を追加

image.png (41.4 kB)

連番にする

image.png (55.1 kB)

Charts、Androidで出来てiOSでできない問題多い... @takkumattsu

前回のChartsで角丸したい...に続き新たな問題を対応したので展開

角丸させた棒グラフを含む複合グラフを表示させたい

複合グラフで角丸対応するはCombinedChartRendererを設定するのだがその設定がうまく出来ない。

理由はCombinedChartRendererのsubRenderersに外からrenderersを設定できそうなIFになっているが、dataセット時にcreateRenderersが呼ばれ初期化されてしまいうまく動かない AndroidはcreateRenderersが公開されていてカスタムできるのでこんなことをする必要はないけどiOSは出来ないのでCombinedChartRendererを継承して対応する必要があった

複合グラフの角丸対応

https://gist.github.com/takkumattsu/36c1acb5a2dd8fc0c500b125d2872553

let render = CustomCombinedChartRenderer(chart: chartView, animator: chartView.chartAnimator, viewPortHandler: chartView.viewPortHandler)
let newRenderers: [DataRenderer] = [
    CustomBarChartRenderer(dataProvider: chartView, animator: chartView.chartAnimator, viewPortHandler: chartView.viewPortHandler),
    LineChartRenderer(dataProvider: chartView, animator: chartView.chartAnimator, viewPortHandler: chartView.viewPortHandler),
    CandleStickChartRenderer(dataProvider: chartView, animator: chartView.chartAnimator, viewPortHandler: chartView.viewPortHandler),
    ScatterChartRenderer(dataProvider: chartView, animator: chartView.chartAnimator, viewPortHandler: chartView.viewPortHandler),
    BubbleChartRenderer(dataProvider: chartView, animator: chartView.chartAnimator, viewPortHandler: chartView.viewPortHandler)]
render.customRenderers = newRenderers

グラフの開始メモリ、終了メモリを設定すると棒グラフが表示されない

何も設定せずにグラフ表示をするとX軸のグラフの開始は一番左端から一番右端になる

左右にスペースを開けたいと思った時は axisMinimum axisMaximum を設定することで変えることができるようになっている

しかしaxisMaximumを設定すると

image.png (42.5 kB)

となってしまう。本当は↓としたい

image.png (8.8 kB)

調べるとissueが上がっていて https://github.com/danielgindi/Charts/issues/4819 ライブラリの中を修正しないと直せないぽくてPRがでている https://github.com/danielgindi/Charts/issues/4819

ただ何故かこのPR本家に向けられていなくてマージはされなさそう...

利用する場合はforkして使うしかないという悲しみ

Chartsについて

ChartsはAndroidのMPAndroidChartと同じ仕様で動かせるチャートのライブラリで確かにIFとかは同じ感じで使えるのだがちょいちょい挙動が違ったりするのでハマるポイントが多かった...

グラフで表現できるものはいっぱいあるのでいいライブラリではあるんだけどね...