コベリンの最近の取り組みとして、業務などで役立ちそうな知見を共有する会を開催することになりました。 そのついでに発表に使ったアジェンダもそのまま公開してしまおうという豪快な企画です。
※ アジェンダをそのままコピペして公開したものなので若干見にくい箇所もあるかもしれませんが、ご了承ください。
- Xcode 13 の新機能を試す by @mironal
- Vim mode
- Cloud Build
- まとめ
- Xcode13とiOS15で起きるクラッシュ @takkumattsu
- M5StickC Plusでビープのボリューム調整をする id:numanuma08
Xcode 13 の新機能を試す by @mironal
ソースコード管理の統合
これを試したかった。
しかしXcode で GitHub 連携しようとしたら対応していない暗号化形式だった
- 僕は GitHub の ssh key を
ED2551
形式で生成している- この形式は GitHub が推奨している
- Xcode からはこの形式は使えずにエラーになった
終了
Column Breakpoints
行単位じゃなくて、列単位でのブレイクポイント。見たほうがわかりやすい。
func getA() -> String { return "A" } func getB() -> String { return "B" } // これが実行されるとき func exec() { _ = getA() + getB() print(getA()) }
従来のブレイクポイント
Column Breakpoint
設定するとこうなる
Closure だとうまく動かない
設定しても実行すると無効になる(解決できないってエラーになる).
$0
でも名前をつけてもそうなる.
大人しくこうやれば止められる.
なんかよくわからん...
Vim mode
最高
Cloud Build
試したい.
まとめ
全然試せない
Xcode13とiOS15で起きるクラッシュ @takkumattsu
現象としてはXcode13にしてiOS15で実行すると一部のlayout周りでクラッシュすることがあった。
内容的には UITableViewCell
を使っているところで Must translate autoresizing mask into constraints to have _setHostsLayoutEngine:YES Xcode
という実行時エラーが出てクラッシュしたというもの。
修正方法
stackoverflowにあるように Layout
を Inferred(Constraints)
からAutoresizing Mask
に変更すると治る
before | after |
---|---|
エラーのヒントが少なくstackoverflowがなかったらかなりハマってた気がする。
M5StickC Plusでビープのボリューム調整をする id:numanuma08
M5StickC Plusは本体にスピーカーを内蔵しているので、ビープ音を鳴らせられる。APIも用意されている。
しかし実際にはボリュームをセットしてもビープ音の音量は変化しない。
UIFlowにも音量変更用のAPIが用意されているし、実際に音量も変化する。
from m5stack import * from m5ui import * from uiflow import * setScreenColor(0x111111) speaker.setVolume(1) speaker.tone(1800, 200)
実際に音を鳴らす部分の実装で、セットしたボリュームが利用されていないことが分かった。
https://github.com/m5stack/M5StickC-Plus/blob/master/src/utility/Speaker.cpp#L21-L24
void SPEAKER::tone(uint16_t frequency) { if(!_begun) begin(); ledcWriteTone(TONE_PIN_CHANNEL, frequency); }
ちなみに、M5Stackのコードではセットしたボリュームが利用されている。 https://github.com/m5stack/M5Stack/blob/511455fd1b0464f33b18455922e44a06e90cc60d/src/utility/Speaker.cpp#L21-L25
void SPEAKER::tone(uint16_t frequency) { if(!_begun) begin(); ledcWriteTone(TONE_PIN_CHANNEL, frequency); ledcWrite(TONE_PIN_CHANNEL, 0x400 >> _volume); }
解決策
M5Stackと同じコードでビープ音を実装すればいい。
#define TONE_PIN_CHANNEL 0 // config.hで定義されている int frequency = 1800; ledcWriteTone(TONE_PIN_CHANNEL, frequency); ledcWrite(TONE_PIN_CHANNEL, 0x400 >> volume);
音量はM5Stackは10段階だが、M5StickC Plusだとスピーカーが小さいためだいたい5段階しか無さそう。10が最小1が最大なのは同じ。
なんでM5StackC Plusのライブラリでボリュームが利用されていないのかは謎。バグ?