KHCorderをDocker for Mac 構築手順方法 完全版【M1、M2対応／GitHub ssh 接続手順込み】

# KHCorderをDocker for Mac 構築手順方法 完全版【M1、M2対応／github ssh 接続手順込み】

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/59f786d0-e7f9-1f77-6c44-21f5d4e8d65a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/b0ef9082-244d-0a3f-4aaf-1a8a96348b96.png)



この記事でわかること
・何も環境構築がされてない状態から（0から、0の状態から）、Docker for Mac（M1）にKHCorderの環境を構築する手順
・gitへのssh接続方法
・秘密鍵、公開鍵作成手順

特に、1から環境を構築する方におすすめの記事です！気に入ってくださったら、「ストック」「お気に入り」してくれると、モチベにつながります！




## 目次
1）　なぜ、KHCorderをDocker for Macに構築する必要があるのか
2）　KHCorder構築全体の流れ
3）　事前準備（brew install／SSH接続するための公開鍵（Public key）と秘密鍵（Secret Key））の作成など
4)　KHCorder Docker for Mac への構築

### 1、 なぜ、KHCorderをDocker for Macに構築する必要があるのか
 　「なぜ、KHCorderをDocker for Macに構築する必要があるのか」その答えは、KHCorderがApple Sliconに対応していないから。Rosetta(https://ja.wikipedia.org/wiki/Rosetta )を持ちいることにより、M1でもIntelの環境で動かすことができるが、重いし、時々動かなくなる時もある。それならば、せっかくDocker（https://aws.amazon.com/jp/docker/ )という素晴らしい、仮想環境を最も簡単に作ることができるものがあるなら利用しよう！という感じである。
　さらに、Dockerのような仮想環境構築プラットフォームの利用は最近、急増しているらしい。理由としては、Dockerを構築するプログラムを書くことができれば、そのプログラムを使ってどのパソコンにも構築することができるからである。完璧な環境構築を、その環境を構築したプログラムさえ入手すれば、エンター1回で構築が終わる。環境構築なんてパスの設定とか、ディレクトリの配置変えたりとかかなり時間がかかるものを一瞬で終わるのは本当に魅力的である。
　　話を戻すが、Docker for Macを用いることで、KHCorderがM1 MacBookで簡単に使うことができるようになる。

### 2、KHCorder構築全体の流れ

KHCorderの構築手順は以下の通りである。最初の状態としては、一切何もしてない状態。
① 事前準備（homebrew／Docker／xQuartz）
② 公開鍵、秘密鍵作成
③ githubへのSSH接続（github 「SSH Key」への設定）
④ KHCorderのインストール（どこのディレクトリに置くとかも説明するよ）
⑤ Dockerの起動（docker-compose、どこのディレクトリで起動するかも説明するよ）
⑥ 


### 3、事前準備（brew install／SSH接続するための公開鍵（Public key）と秘密鍵（Secret Key））の作成など

#### ---homebrew　インストール---

　homebrewとは、簡単に言えば、自分のPCにないパッケージをインストールする際に、パッケージの導入をお手伝いしてくれるものである。とりあえず入れておくと、色々なインストールがコマンド一つで出来上がるのでオススメ。ちなみに、現在のhomebrewは【M1チップに対応している】ので、とりあえずhomebrewのサイト（https://brew.sh/index_ja ）に行って、インストールをしよう。
　おそらくサイトに飛ぶと以下のようなコマンドが出てくるはず。以下のコマンドは、/bin/bash にhomebrewをインストールするという意味合いなので、どこのディレクトリで実行しても大丈夫。

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"


#### ---Docker for Mac インストール--

　Dockerは、上記で説明した通り、仮想環境構築プラットホームである。KHCorderは、windows用のアプリケーションなので、Mac Bookに入れることは色々な手作業が必要となるため、めんどくさい（KHCorderの公式ホームページで、4000円くらいで、導入してくれるアプリが販売されている）ため、今回は「無料」かつ「自分のパソコンを汚さない」ことができる。Dockerを使ってKHCorderを使っていく。
　Docker for Mac は、公式サイト(https://www.docker.com/products/docker-desktop/ )でダウンロードする。

<img width="400" alt="mojikyo45_640-2.gif" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/629c69bb-764b-d050-3d2e-330c046e9fad.png>

　M1、M2の方は、ここの【Apple Chip】をクリック！！　ダウンロードしたら、会員登録をしておく。


#### ---xQuartz インストール---

![スクリーンショット 2022-10-26 15.58.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/4fcddb88-e62e-4f9d-8208-bc1e34d5ab55.png)

　xQuartzとは、MacBookに、windows製アプリケーションを表示するためのアプリケーション。この　xQuartzをインストールしないと、kHCorderをインストールして、Dockerに構築しても、表示されないので注意！自分も最初は、このアプリ怪しすぎる、、、！って思ったけど、インストールして実際に使ってるので、大丈夫です。

    Username@MacBook-Pro ~ %brew install xquartz

　早速、homebrewを使ってインストールする。インストールを行うディレクトリに関しては、ターミナルを最初に開くと移動するディレクトリ（base）で行った。

    Username@MacBook-Pro ~ % cd

　上記のコマンド（cd）をターミナルで入力すると、（base）のディレクトリに移動することができる。基本的に、KHCorderのインストールもこのディレクトリで行う。（どこにインストールしたのか忘れてしまうことを防ぐため！！）

　xQuartzのインストールが終わったら、xQuartzを起動する。起動しても最初は、画面に現れないので、出てこなくても焦らないでほしい。
<img width="400" alt="mojikyo45_640-2.gif" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/35814bee-5ae9-a532-c6da-d3595232a23b.png>
　xQuartzをクリックして、起動させると、上のリンゴマークのすぐ右に、「xQuartz」と表示されるので、開いて、「環境設定」を開く。
<img width="400" alt="mojikyo45_640-2.gif" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/c9a36102-c20e-99fc-afea-a5fd03d17205.png>
　環境設定を開いたら、「セキュリティ」に移動し、「接続を認証」、「ネットワーク・クライアントからの接続を許可」の両方に、必ず両方にチェックマークをつけて、パソコンを再起動する。このパソコンの再起動を行わない限り、一生、xQuartzは表示されない！！必ず再起動すること！

　再起動後、再びクリックした時に、ターミナルのような「xterm」と記載されているウィンドウがひらけば、設定完了の合図。

#### ---秘密鍵、公開鍵の作成---

　KHCorderがGitHubに公開されているため、GitHubに接続しインストールする。(https://github.com/ko-ichi-h/khcoder)
　GitHubにターミナルから接続するためには、「秘密鍵・公開鍵」という自分のパソコンとGitHubを繋ぐものを作らなければいけない。詳しくは、検索してほしい。これから秘密鍵と公開鍵を作成するのだが、秘密鍵は絶対に公開しないように。公開されてしまうと、あなたのパソコンに誰もがアクセスできる状態になってしまい非常に危険となる。絶対に公開しないように！！
　秘密鍵は、自分のMacに置いておき、公開鍵だけをGitHubに登録する。

    $cd　        #一番最初の初期のディレクトリに移動する。（以下のコマンドを確実に実行するため。）
    $cd ~/.ssh　 #鍵を作成するフォルダに移動する。
　次に、秘密鍵、公開鍵を作成する

    $ssh-keygen -t rsa
　上記のコマンドを実行すると以下が要求される

    $ ssh-keygen -t rsa
    Generating public/private rsa key pair.
    Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):　#ここに入力すると秘密鍵と公開鍵の名前を変えることができるが、後で設定が複雑になってしまい接続できなくなるので、ナニもしない。
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
　ここでは、特になにも入力せず、ひたすらEnterを押すこと。

#### ---GitHubへのSSH接続---
　作成した秘密鍵をGitHubに接続していく。（GitHub：https://github.co.jp/ ）←登録必須
　画面右上のアイコンをクリックし、「Setttings」、「SSH ando GPG keys」のページに移動する。
　<img width="400" alt="mojikyo45_640-2.gif" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/cd57249d-7936-be33-ac9f-dd9ac8bd164c.png>
　右上の「New SSH key」をクリックすると、「Title」と「Key」が出現するので、タイトルは任意のものを入力する。「key」には、公開鍵の中身をコピペする必要があるので、ターミナルに移動して、以下のコマンドを実施する。
    
    $ pbcopy < ~/.ssh/id_rsa.pub
    # もし上のコマンドが実施できない場合、以下のコマンドを実施
    $ cd
    $ cd ~/.ssh/
    $ vi id_rsa.pub # エディターが開かれるので、その中身を全てコピペする。→中身はいじらないように！！
    # エディターを閉じるためには、「esc（エスケープ)→大文字の「ZZ」を入力すると閉じる。

　公開鍵を取得することができたが、先ほどのGitHubの画面に戻り、「Key」にペーストを行う。この時に、改行や空白が入るとエラーになってしまうので、気をつけていただきたい。以下のコマンドを実行して、接続できたら設定は完了。万が一以下が実行できなくて、zsh not comandとなっても気にしなくて良い。

    $ ssh -T git@github.com


### 4、KHCorder Docker for Mac への構築

#### ---KHCorderのインストール---
 以上の準備が全て終わったら、いよいよKHCorderのインストールを行う。インストール方法は、GithubにSSH接続し、ディレクトリをそのままインストールすると言う方法である。この方法の方がインストールし忘れることもないのでおすすめ。
 KHCorderの作成者である、立命館大学の教授、樋口耕一さんがGitHubにKHCorderを利用するための、Dockerfileを公開しているので、それを丸ごとダウンロードする。インストールした後、そのファイルを使って作業を行うので、どこに入れたかわからなくなることを防ぐために、baseディレクトリに構築することをおすすめする。

    $ cd                                             # ユーザー直下のディレクトリへの移動
    $ git clone git@github.com:ko-ichi-h/NL2E.git    # NL2Eディレクトリを丸ごと、複製し、ユーザー直下に作成
    $ ls                                             # ディレクトリ、ファイル一覧を表示し、存在を確認。


#### ---KHCorderのアップデート---
 NL2Eの中に、KHCorderが入っているので、KHCorderを最新の状態に保つために、アップデートする。

    $ cd
    $ cd NL2E #NL2Eのディレクトリに移動
    $ git submodule init
    $ git submodule update

#### ---Dockerの構築---
 いよいよKHCorderを使用することができるDockerを構築する。xhostとは、細かいことは調べていただきたいが、権限を誰に与えるのかを操作するコマンドである。このコマンドを実行しないと、構築することができたとしても、xQuartzが起動してくれず、KHCorderのエラーが起きてしまう。

    $ cd
    $ cd NL2E
    $ xhost -　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　# 権限の状態を初期状態（プライバシー高）に変更する
    $ xhost + localhost      # 権限を、自分のターミナルのみに与える
    $ docker-compose up　-d   # docker-compose upで、Dockerを構築する。-dを入れないといつまでも、デバックが表示されてしまい、この後のコマンドを実行することができないので、必ず入れること

 構築が終了すると、xeyesが出現する。これは、xquartzとうまく連動している証拠なので気にしなくても良い。
　![スクリーンショット 2022-11-01 13.13.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/ddb981d2-d7b0-4f7b-a173-d29da4761192.png)

　そして、Docker desktopを開くと以下のように、コンテナが二つ作られるはず。以下の状態になったら、構築完了。
<img width="700" alt="mojikyo45_640-2.gif" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/4619f07e-6efd-d2ca-05fb-95cc0451ad05.png>

#### ---Dockerの起動---
 上記が全て実行され、Dockerを構築し終えたら、Dockerを起動させKHCorderを起動させていく。
 以下のコマンドを実行することに寄って、構築したDockerの中に入ることができる。Dockerのコンテナの中に入り、KHCorderを起動することで、初めて、KHCorderが起動する。

    $ docker exec -it nl2e-nl2e-1 /bin/bash　    #一つ上のディレクトリから移動しないように！

#### ---KHCorderの起動---
 以下のコマンドで最後となる。上記のコマンドを実行すると以下のようなディレクトリに移動する。以下のディレクトリに移動したら、いよいよKHCorderの起動を行う。

    root@docker-desktop:/# 
    root@docker-desktop:/# cd /KHCoder/khcoder/
    root@docker-desktop:/# /usr/bin/perl ./kh_coder.pl

 以上のコマンドを実行し、数秒待つと、KHCorderが起動する。(xeyesはこのように放置して大丈夫！)
<img width="500" alt="mojikyo45_640-2.gif" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1403096/c8dad95d-3f25-3811-2ce1-fa660a7965b5.png>

　ここまで読んでくださり、ありがとうございました！
　気に入っていただければ、お気に入りと、ストックお願いします！
　無事に構築できること、願っています！では！！！