try! Swift 2019復習その6 Cocoa Bindings
MacアプリとCocoa Bindingでより良い開発ツールをつくろう
こちらはワークショップ。英題は"Better Developer Tooling by writing your own Mac Apps with Cocoa Bindings"。「Cocoaバインディング」というのはそういうものがあることすら知らなくて、単純に「macOSアプリでツールをつくる」というところに今興味があるのでこちらをチョイスした。
で、これがめちゃくちゃ便利で、IBでポチポチやるだけで(ほぼコードを書かず)結構な機能のアプリがつくれてしまう。
ツールは開発においてとても重要です。しかし、多くの場合、不格好なHTMLのインタフェースや覚えにくい難解なコマンドラインインタフェースによって、実際の作業はとても面倒です。この問題に対する良い解決策は、素敵なUIでこれらのタスクを解決するプロトタイプのmacOSアプリケーションを開発することです。さらに良いことは、Swiftで書かれているので、チームの開発者の手で簡単に拡張することができます。このようなツールを適用できる分野の例としては、テスト、データ生成、QA、ネットワークシミュレーション、可視化、またはコマンドラインインターフェイスがあります。このワークショップでは、複雑なmacOSアプリケーションを驚くほど速く開発するために、Cocoa Bindingsの概念を利用しています。またmacOSとiOSの間のいくつかの違いに触れ、最後には、あなたのアプリから直接Unixサービスあるいはコマンドラインツールと対話する方法を説明します。ワークショップはいくつかのツールアプリを実装するので、みなさんは基礎となる概念と技術をよく理解することができます。このワークショップの重要なポイントは、不正なbashハックではなく、素晴らしいmacOSアプリを使って日常的なツールの問題を解決できることです。
ちなみに講師はBenedikt Terhechteさんで、本編でもKeypathのためになるプレゼンをしてくれた方。ワークショップも非常にわかりやすく、要領よくツボをついたカリキュラムだった。
以下ワークショップ中に書いたメモを整えたもの:
配列をTable Viewに表示する
以下のようなシンプルなモデルがある。
public class Developer: NSObject {
@objc var username: String = ""
@objc var ticketCount: Int = 0
init(_ username: String, ticketCount: Int) {
self.username = username
self.ticketCount = ticketCount
super.init()
}
}
public struct Model {
static var developers: [Developer] {
return [
Developer("Staltz", ticketCount: 5),
Developer("Chand", ticketCount: 7),
Developer("Da luz", ticketCount: 3),
Developer("Sismanidis", ticketCount: 2),
Developer("Montonen", ticketCount: 4),
Developer("Usalj", ticketCount: 3),
Developer("Röhre", ticketCount: 42)
]
}
}
Cocoaバインディングを用いて、このモデルオブジェクトが入ったdevelopers配列を"Table View"に表示する。
1. IBで、[Objects]配下に"Array Controller"オブジェクトを置く
これにより、アプリ起動時にNSArrayControllerがインスタンス化される。
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/