マガジンのカバー画像

Cocoa練習帳

68
iOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swift, C++など
運営しているクリエイター

記事一覧

[SwiftUI]月旅行計画

[SwiftUI]月旅行計画

Mac OS Xが発表された際に、開発者を増やすという目的だと思うが、O'Reillyから『入門Carbon』と『入門Cocoa』という書籍が出版された。今回のCocoa練習帳では、『入門Carbon』のサンプル・アプリケーションをSwiftUIで実装することに挑戦した。

Xcodeで、macOSアプリケーションのSwiftUIプロジェクトを生成する。

以下のCarbonで実装された初期のMa

もっとみる
[Cocoa][Swift]StoreKit 2

[Cocoa][Swift]StoreKit 2

Apple Developerサイトでは、StoreKit 2という説明があるがフレームワークはStoreKitのまま。触ってみた感じは、既存のStoreKitを簡単に扱えるようにしたSwiftで実装されたライブラリだ。レシート検証もやってくれるようで、アプリ内で行う場合は、自力でASN.1でエンコードされたPKCS#7コンテナを解析するコードの実装が必要だったので助かる。

StoreKit 2

もっとみる
[SwiftUI]Appプロトコル

[SwiftUI]Appプロトコル

XcodeでiOSの新規Appプロジェクトを生成すると雛形から作られるのが、Appプロトコルを実装する〜Appクラスだ。

import SwiftUI@mainstruct LandmarksApp: App { var body: some Scene { WindowGroup { ContentView() } }}

計算型プロパティb

もっとみる
[Cocoa][Swift][Xcode]使うXcodeのバージョンを切り替える

[Cocoa][Swift][Xcode]使うXcodeのバージョンを切り替える

自社のアプリケーション開発では、常に最新のOSとXcodeを使用しているので考えることはなかったが、大規模なプロジェクトに参画して仕事をする場合、複数のXcodeをインストールして、切り替えながら使わないといけないことがある。

そんな際に役立つのが、xcode-selectコマンドだ。

複数バージョンのXcodeをインストールする
多くの人に役立つよう、基本的なことから説明する。

常に最新バ

もっとみる
[Android][Kotlin]Androidの設定値について

[Android][Kotlin]Androidの設定値について

指定したターゲット(パッケージ名や利用するサービスの設定)でAndroidアプリケーションをビルドする方法は複数ある。初期のものであったり、それを改善したものであったり。最新の方法だと利点が多いので選択できればいいのだが、歴史が長いソースコードだと、様々な理由から方法を変更できなかったり。

何がベストなのかは状況によって異なるが、まずは知らないことには話にならないということで調べてた方法を列挙し

もっとみる
[macOS][Kotlin]null安全

[macOS][Kotlin]null安全

Cocoa + Objective-C では、nilは許容されるものでnilに対してメソッド呼び出しを行なってもアボートしないが、Javaだとnullアクセスは例外が投げられてしまう。そのような考えの違いが、null安全についても、SwiftとKotlinで差となっているのかな?

JavaではC言語の基本的データ型に相当するのが基本型(プリミティブ型)で、C言語の構造体に相当するクラスはC言語の

もっとみる
[macOS][Kotlin]結果とエラー情報を持つデータ

[macOS][Kotlin]結果とエラー情報を持つデータ

Javaでは結果を関数の戻る値で、エラー情報は例外で、だったが、Androidは例外を勧めていないことは以前から感じていた。Kotlinでは、例外は復旧できない致命的な状況で利用とし、既存のJavaモジュールが投げてくる例外を包み込みResult型があったりしている。

自分でKotlinでプログラミングする際、あえて例外を利用する必要はないと思うので、どんなやり方が合うのか調べてみて辿り着いたコ

もっとみる
[macOS][Kotlin]開発環境を用意する

[macOS][Kotlin]開発環境を用意する

仕事でAndroidアプリケーションをKotlinで開発しているので、macOSでKotlinを試してみる。

KotlinといえばAndroidStudioでAndroidアプリケーションをプログラミングだと思うが、macOS上で動作するKotlinで書かれたプログラムを動かしたいので、開発環境としてIntelliJ IDEAを使うことにする。IntelliJ IDEAはUltimate Edi

もっとみる
[Cocoa][Swift]XCFramework

[Cocoa][Swift]XCFramework

Darwinで採用されています実行形式のバイナリ・フォーマットMach-oは、一つのファイルに複数のアーキテクチャのバイナリが格納できるという素晴らしい特徴があるのですが、同じCPUで異なるシステム向けのバイナリは同時に格納できないという欠点があるようです。以前だと、これで問題はなかったのですが、例えば、iPad OS向けアプリのソースからmacOSアプリを作ることができるUIKit for Ma

もっとみる
[macOS]zshでgitのブランチ名を表示させる

[macOS]zshでgitのブランチ名を表示させる

Mojaveまでは、手動でCommand Line Toolsをインストールしたら設置されるスクリプトを使ってbashでgitのブランチ名を表示させていたが、Catalinaからは設置されないようになったようだ。また、Catalinaからはzshがデフォルト・シェルになったということで、zshでgitのブランチ名を表示させる方法を調べた。

ホームディレクトリ配下に.zshというディレクトリを作っ

もっとみる
[cocoa][swift][kotlin]Cocoa.swift 2019-09に行ってきた

[cocoa][swift][kotlin]Cocoa.swift 2019-09に行ってきた

会場は池袋コワーキングスペース OpenOffice FOREST、サンシャイン側だ。

発表
「NSTextViewにコマンドパレットをつける」キーボードのみで操作できるように、NSTextViewにコマンドパレットをつける仕組みの発表で、CMD + Lで起動し、出現したNSTextFieldに文字を打つと、関連するメニューやコンテンツが選択できるようになるものだ。

「macOS/iOS/An

もっとみる
[cocoa][swift]Tweeting

[cocoa][swift]Tweeting

システム側でのSNS共有のサポートが終了したり、公式のTwitter Kit SDKのサポートが停止するなどで、スマートフォン・アプリケーションにTweet機能を組み込む方法が変わってきているので、今時点のTweet機能を組み込む方法を調べてみた。

- ios
- Social.framework
iOS11から廃止。
- Twitter Kit SDK

もっとみる
[cocoa][swift]NSUndoManager

[cocoa][swift]NSUndoManager

NSUndoManagerの利用は、Swiftで楽になったと思うが、その仕組みが見えにくくなったと思うので、Objective-Cの場合から説明する。

CocoaのUndoとRedoは、NSInvocationというクラスでNSObjectの子クラスとメソッドを保持し、それをNSUndoManager内のスタックで管理することで実現している。

なんらかの操作を行うと、Undoに必要なNSInv

もっとみる
[cocoa][swift]iOSアプリケーション開発入門:はじめの一歩

[cocoa][swift]iOSアプリケーション開発入門:はじめの一歩

開発環境
- mac
- iOS機器

Apple Developer Program
- https://developer.apple.com/jp/programs/
無料でも開発できますが、有料の登録をお勧めします。

参考資料
- 無料の"ブック"アプリのSwift Programming Series
The Swift Programming Language (Ap

もっとみる