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がインスタンス化される。

ここから先は

1,331字 / 5画像
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/