6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Global Shortcutで覚えにくい設計原則を確認しやすくするポップアップMacアプリを作った

Last updated at Posted at 2018-12-22

設計原則、SOLIDとかKISSとかが覚えられないので、コードを書いたりしながら確認しやすいようにしたかった。ちょうどこんな記事があったので、真似したり改造してmacOSアプリを作ってみることにした。
会社の行動規範浸透を図るため、メニューバーからいつでも確認できるアプリを作った🤔 - Qiita

アプリのコードはGitHubにあげておきました。
https://github.com/ktanaka117/PrincipleCheatSheet

メニューバーにポップアップを開くボタンを追加する

完成イメージ

スクリーンショット 2018-12-22 18.15.10.png

解説

このステップまでは、元ネタの記事を真似ればできますので省略します。

会社の行動規範浸透を図るため、メニューバーからいつでも確認できるアプリを作った🤔 - Qiita

Global ShortCutでポップアップを開くようにする

完成イメージ

アニメーションはこちらのTweetから。

コードを書きながらも確認可能。
スクリーンショット 2018-12-22 18.14.42.png

解説

コードを書いてる最中に、いちいちカーソルをメニューバーにうつしてポップアップを開いて...とするのが面倒だったので、ショートカットで開けるようにしたくなりました。例えば 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を押します。

スクリーンショット_2018-12-22_18_30_41.png

Developmentを選んでNext

スクリーンショット_2018-12-22_18_33_01.png

適当なDevelopment Teamを選んでNext

スクリーンショット_2018-12-22_18_33_09.png

signingはAutoでやっておきましょう。

スクリーンショット_2018-12-22_18_33_12.png

最後にExportを押して、Archiveの出力先を選択して終了。

スクリーンショット_2018-12-22_18_33_22.png

保存したものの内容物がこんな感じです。写真だと一番右にある.appファイルを開くと、アプリが常駐してくれるようになります。

スクリーンショット 2018-12-22 18.38.08.png

ハマりどころ

ライブラリをインストールするのはCocoaPodsを使いましたが、最新のXcodeでのビルドと相性が悪かったのか、エラーが出てハマりました。CocoaPodsのbetaバージョンをインストールすることで解決できました。
詳しくは以下の別記事にまとめました。

macOS向けのxcworkspaceでこんなエラーが出たら: Command PhaseScriptExecution failed with a nonzero exit code - Qiita

感想

はじめてのmacOSアプリが作れたぞ!!!やった!!!!!

普段はiOSアプリを開発しているので、なんとなくの予想でArchiveによるアプリの常駐化までたどり着けました。ArchiveビルドがiOSと違って爆速だったのが感動ポイントでした。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?