Macアプリ初心者：NSMenu について調べてみる


今回は NSMenu について調べてみました。
[前回作成したプロジェクト](https://qiita.com/ynozue/items/da96d8bf1a2e2e1f3da0)でも Cococa アプリを作るとデフォルトでメニューが用意されます。


# 環境
* macOS Mojave：10.14.6
* Xcode：10.3

# 画面イメージ
## Xcode
![Kobito.vLLuIV.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/e62f4ac3-5801-f1e0-a7ec-8df8e42a4c0e.png "Kobito.vLLuIV.png")
<img width="350px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/6ea7f7d8-2460-d324-bd29-52be4f67bbee.png">

## アプリ
![Kobito.F7MXDk.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/fc718aef-6e49-67bb-0dd4-c1548502618f.png "Kobito.F7MXDk.png")

# それぞれの機能の解説
## アプリ名のメニュー
![Kobito.ygjXQ0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/812834d8-cea8-9e82-0ccc-ddfc2fb29252.png "Kobito.ygjXQ0.png")

* About NSTableViewSample：アプリ名やバージョンなどの情報を表示するWindowを表示
![Kobito.Xz4PzZ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/944742c4-13de-4b6b-0c28-52cfcc9470ec.png "Kobito.Xz4PzZ.png")
* Preferences...：環境設定（初期値では Disabled）
* Services：ActivityMonitor などの Development ツールの一覧が表示
![Kobito.Z2mxnN.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/6b32c4b8-551f-56b3-20e0-4628f6d63606.png "Kobito.Z2mxnN.png")
* Hide NSTableViewSample：自アプリを非表示
* Hide Others：他のアプリを全て非表示
* Show All：「Hide」「Hide Others」で隠れたアプリを全て表示
* Quit NSTableViewSample：アプリを終了

## File
![Kobito.PmQmgV.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/c29ebf1b-db6b-a0e1-4e7b-e928d5583adb.png "Kobito.PmQmgV.png")
* New：新規作成（初期値では Disabled）
* Open：ファイルを開く（初期値では Disabled）
* Open Recent：最近開いたファイル（初期値では Clear Menu のみ）
* Close：アプリを閉じる
* Save...：保存（初期値では Disabled）
* Save As...：名前をつけて保存（初期値では Disabled）
* Page Setup...：印刷用？のページの設定、余白など（初期値では Disabled）
* Print：印刷

## Edit
![Kobito.OyDHoN.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/8602f0a9-3a8c-a66e-95cd-d5e131c7d4c2.png "Kobito.OyDHoN.png")
* Undo：元に戻す（サンプルアプリにテキストを入力する機能がないため要調査）
* Redo：やり直す（サンプルアプリにテキストを入力する機能がないため要調査）
* Cut：切り取り（サンプルアプリにテキストを入力する機能がないため要調査）
* Copy：コピー（サンプルアプリにテキストを入力する機能がないため要調査）
* Paste：貼り付け（サンプルアプリにテキストを入力する機能がないため要調査）
* Paste and Match Style：貼り付けてスタイルを合わせる（サンプルアプリにテキストを入力する機能がないため要調査）
* Delete：削除（サンプルアプリにテキストを入力する機能がないため要調査）
* Select All：全て選択（サンプルアプリにテキストを入力する機能がないため要調査）
* Find：検索（サンプルアプリにテキストを入力する機能がないため要調査）
![Kobito.hKK0GB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/b81f0d2a-318e-9c88-fe8f-297208c7535e.png "Kobito.hKK0GB.png")
* Spelling and Grammar：スペルと文法
![Kobito.Doky0y.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/fa4bb7da-0e38-1d1e-a047-c30bc5e94021.png "Kobito.Doky0y.png")
![Kobito.CyBfPK.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/5ddc3d71-171e-12b1-b5bf-8c2739210eae.png "Kobito.CyBfPK.png")
* Substitutions：置換（サンプルアプリにテキストを入力する機能がないため要調査）
* Transformations：テキストを変換（サンプルアプリにテキストを入力する機能がないため要調査）
![Kobito.0n5vqr.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/9b85c35a-358b-afa2-9a6b-37a54ff99827.png "Kobito.0n5vqr.png")
* Speech：テキストの読み上げ（サンプルアプリにテキストを入力する機能がないため要調査）
![Kobito.XneKW4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/30afcb6b-3dd6-3923-4d9b-b88fd6d68a8a.png "Kobito.XneKW4.png")
* Start Dictation...：音声入力
* Emoji & Simbols：絵文字バレット表示
![Kobito.1oqRkB.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/213485ad-e100-881a-339d-79705d16d030.png "Kobito.1oqRkB.png")


## Format
![Kobito.BzrarY.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/76620a24-632c-9e88-ea6a-feff4e7bf2d2.png "Kobito.BzrarY.png")
* Font：テキストのフォント（サンプルアプリにテキストを入力する機能がないため要調査）
![Kobito.HTbG77.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/1292c879-6e97-1417-fcf2-764967c0c60c.png "Kobito.HTbG77.png")
* Text：テキストの属性（サンプルアプリにテキストを入力する機能がないため要調査）
![Kobito.6OrkFD.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/74fe8775-6a1a-fb3c-bb0f-4b715bfd13f5.png "Kobito.6OrkFD.png")

## View
![Kobito.2Ieg0C.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/eec40898-302e-9ec7-106d-0028407a0f6c.png "Kobito.2Ieg0C.png")
* Show Tab Bar：タブバーを表示（初期値ではWindowラベルを表示）
![Kobito.9hYml0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/d299c2ec-2006-93aa-c348-4ef21d0c642a.png "Kobito.9hYml0.png")
* Show All Tabs：全てのタブを表示（初期値では Disabled）
* Show Toolbar：ツールバーを表示（初期値では Disabled）
* Customize Toolbar...：ツールバーをカスタマイズ（初期値では Disabled）
* Show Sidebar：サイドバーを表示（初期値では Disabled）
* Enter Full Screen：フルスクリーン表示

## Window
![Kobito.yzWo2r.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/c87b0a87-77db-0e06-a4b2-f811bb393029.png "Kobito.yzWo2r.png")
* Minimize：最小表示（Dockに格納）
* Zoom：全Window表示
* Show Previous Tab：前のタブを表示
* Show Next Tab：次のタブを表示
* Move Tab to New Window：新しいWindowでタブを開く
* Merge All Window：全てのWindowをタブで表示
* Bring All to Front：最前面に表示
* 開いているWindow一覧

## Help
![Kobito.onEMQW.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203864/5d4e3ec7-0b95-000d-ae21-18f0e66e219d.png "Kobito.onEMQW.png")
* Search TextFiedlds：ヘルプを検索
* NSTableViewSample Help：ヘルプを表示

デフォルトで作成されるメニューでも色々な機能が組み込まれていて便利そうです。
今後はメニューのアクションをどうやって作るかについて調べたいと思います。

よろしければ **いいね** お願いします。