設計原則、SOLIDとかKISSとかが覚えられないので、コードを書いたりしながら確認しやすいようにしたかった。ちょうどこんな記事があったので、真似したり改造してmacOSアプリを作ってみることにした。
会社の行動規範浸透を図るため、メニューバーからいつでも確認できるアプリを作った🤔 - Qiita
アプリのコードはGitHubにあげておきました。
https://github.com/ktanaka117/PrincipleCheatSheet
メニューバーにポップアップを開くボタンを追加する
完成イメージ
解説
このステップまでは、元ネタの記事を真似ればできますので省略します。
会社の行動規範浸透を図るため、メニューバーからいつでも確認できるアプリを作った🤔 - Qiita
Global ShortCutでポップアップを開くようにする
完成イメージ
解説
コードを書いてる最中に、いちいちカーソルをメニューバーにうつしてポップアップを開いて...とするのが面倒だったので、ショートカットで開けるようにしたくなりました。例えば Command + Ctrl + P
を押すと、すぐに開いてくれるみたいな。
グローバルショートカットを実装する方法はいくつかあるようですが、以下の記事を参考に Magnet というライブラリを利用して設定しました。
Macアプリでグローバルホットキーを使用する - Qiita
具体的なコードとしてはこんな感じでショートカットの登録ができます。
// 35 = p
guard let keyCombo = KeyCombo(keyCode: 35, cocoaModifiers: [.control, .command]) else { return }
let hotKey = HotKey(
identifier: "CommandControlP",
keyCombo: keyCombo,
target: self,
action: #selector(togglePopover(_:)))
hotKey.register()
keyCodeは以下で確認しました。
MacOS フルキーボードのキーコード一覧 - Qiita
Xcodeの実行時以外も常駐させる
アーカイブして.app
ファイルとして出力することで、アプリケーション化できます。
アプリケーション化すると、普段使っているXcodeとかその他アプリと同じように起動できるようになって、常駐するようになります。
手順
Product > Archive
でプロジェクトをアーカイブを実行する。アーカイブが完了すると、以下のようにアーカイブ一覧を表示するウィンドウが表示されるので、Distribute App
を押します。
Development
を選んでNext
適当なDevelopment Teamを選んでNext
signingはAutoでやっておきましょう。
最後にExportを押して、Archiveの出力先を選択して終了。
保存したものの内容物がこんな感じです。写真だと一番右にある.app
ファイルを開くと、アプリが常駐してくれるようになります。
ハマりどころ
ライブラリをインストールするのはCocoaPodsを使いましたが、最新のXcodeでのビルドと相性が悪かったのか、エラーが出てハマりました。CocoaPodsのbetaバージョンをインストールすることで解決できました。
詳しくは以下の別記事にまとめました。
macOS向けのxcworkspaceでこんなエラーが出たら: Command PhaseScriptExecution failed with a nonzero exit code - Qiita
感想
はじめてのmacOSアプリが作れたぞ!!!やった!!!!!
普段はiOSアプリを開発しているので、なんとなくの予想でArchiveによるアプリの常駐化までたどり着けました。ArchiveビルドがiOSと違って爆速だったのが感動ポイントでした。