20200330のMacに関する記事は5件です。

Macにyarnインストールしようとしたら失敗した

はじめに

Web系の開発経験がない私でも東京都の新型コロナウイルス感染症対策サイトに貢献できないかと思い、開発環境を整えようと試みました。

GitHubリポジトリはこちら
東京都 新型コロナウイルス感染症対策サイト

大変わかりやすいプロジェクトのはじめかたはこちら
東京都 新型コロナウイルス対策サイトへの貢献方法を解説

まずyarnをインストールしようしたら早速こけたのでエラーログと解決方法をメモします。

brew install yarn

まず、Homebrewを使用してyarnをインストールします。
長いログメッセージの後に最後に以下が出力されました。

brew install yarn

(中略)

==> Installing yarn
xcrun: error: invalid active developer path (/library/developer/CommandLineTools), missing xcrun at: /library/developer/CommandLineTools/usr/bin/xcrun
Error: An exception occurred within a child process:
  CompilerSelectionError: yarn cannot be built with any available compilers.
Install GNU's GCC:
  brew install gcc

どうやらgccがインストールされていないようです。

brew install gcc

Homebrewを使用してgccをインストールします。

brew install gcc
xcrun: error: invalid active developer path (/library/developer/CommandLineTools), missing xcrun at: /library/developer/CommandLineTools/usr/bin/xcrun
Error: Your Xcode (dunno => /library/developer/CommandLineTools) is too outdated.
Please update to Xcode 11.3 (or delete it).
Xcode can be updated from the App Store.

どうやらXCodeが最新ではないようです。

XCodeのアップデート

App Storeからアップデートするように言われたのでアップデートしました。
image.png

再びbrew install gcc

Homebrewを使用してgccをインストールします。

brew install gcc
xcrun: error: invalid active developer path (/library/developer/CommandLineTools), missing xcrun at: /library/developer/CommandLineTools/usr/bin/xcrun
Error: Your Xcode (dunno => /library/developer/CommandLineTools) is too outdated.
Please update to Xcode 11.3 (or delete it).
Xcode can be updated from the App Store.

同じエラーが出ました。
解決していないようです。

xcrunのエラーで検索すると以下の記事がヒットしました。
macOSアップデート後の『xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)...』の対処法

xcode-select --install

記事に従ってxcode-select --installを実行します。

xcode-select --install
xcode-select: note: install requested for command line developer tools

インストールに成功しました。

再びbrew install gcc → brew install yarn

両方とも無事に成功しました。

まとめ

yarnをインストールできない原因はgccが入っていないことにあり、gccがインストールできない原因はxcode-selectのインストールにありました。
私のような初心者が開発環境構築で手間取らなければ良いと思い、一連の流れで投稿しました。

今後は時間を見つけてコロナ対策に貢献していければと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Eclipse インストール時に Failed to create the Java Virtual Machine.

はじめに

Mac に Eclipse をインストールしようとしたら "Failed to create the Java Virtual Machine." って怒られました。

install-error.png

インストール時にこんな屈辱を受けたのは初めてだ

もちろん Java は入ってる

結論から言うと、案の定いつものやつ

-vm を ini ファイルに設定するあれだ

手順

最初に注意点

原因がよくわからないが、 ini ファイルを vim で修正するとこんなエラーが出る。

usodaro.png

vim でやる限り、何としてでも "Eclipse Installer.app" をゴミ箱にぶちこんでやらないと気が済まないらしい。

ふざけんな、という気持ちを押し込めつつ、GUI でやるとうまくいきます。

謎い

手順概要

  1. "Eclipse Installer.app" を適当な場所にコピー
  2. Finder で "Eclipse Installer.app" を右クリック > パッケージの内容を表示 > Contents/Eclipse/eclipse-inst.ini をテキストエディタで開く
  3. eclipse-inst.ini に Java8 のパスを設定

1. "Eclipse Installer.app" を適当な場所にコピー

通常 eclipse-inst-mac64.dmg をダウンロードしてクリックすると、eclipse installer が /Volumes/Eclipse Installer にマウントされるはず。

で、その中に "Eclipse Installer.app" があるので、それを適当な場所にコピーする。

ここは GUI でも CLI でもいい。

なお、 /Volumes/Eclipse Installer 以下は Read Only なので、コピーしないと編集できません。

2. Finder で "Eclipse Installer.app" を右クリック > パッケージの内容を表示 > Contents/Eclipse/eclipse-inst.ini をテキストエディタで開く

ここは特に補足説明なし。

前述の通り vim でやらないように

3. eclipse-inst.ini に Java8 のパスを設定

eclipse-inst.ini にこの二行を追加する。

-vm
/Users/tommarute/.jenv/versions/1.8/bin/java

※ もちろん Java のパスはご自身の環境のものを設定してください

なぜ Java8 かというと、自分の環境の最新 (14) だとインストーラーが動かなかったから。

Java9 だと動くのか、とかは試していない。

Java8 がない場合はこんな感じで入れてください。

$ brew tap AdoptOpenJDK/openjdk
$ brew cask install adoptopenjdk8

蛇足ですが、最新の Java が入っている場合は jenv などの管理ツールがあったほうが良いでしょう。

インストーラーを再実行

ini ファイルの修正をしたら Finder から "Eclipse Installer.app" をダブルクリックしよう。

いつもの画面が見れるはず。

installer.png

Thanks,

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac HomebrewでNode.jsをインストールする

目的

  • Mac端末にHomebrewを用いてNode.jsをインストールする方法をまとめる

実施環境

  • ハードウェア環境
項目 情報 備考
OS macOS Catalina(10.15.3)
ハードウェア MacBook Air (11-inch ,2012)
プロセッサ 1.7 GHz デュアルコアIntel Core i5
メモリ 8 GB 1600 MHz DDR3
グラフィックス Intel HD Graphics 4000 1536 MB

実施条件

  • Homebrewが使用できる状態になっていること。

実施方法概要

  1. Nodebrewのインストール
  2. Node.jsのインストール
  3. 設定

実施方法詳細

  1. Nodebrewのインストール

    1. 下記コマンド実行してNodebrewをインストールする。

      $ brew install nodebrew
      
    2. 下記コマンドを実行してNodebrewのインストールを確認する。

      nodebrew -v
      
  2. Node.jsのインストール

    1. 下記コマンドを実行して最新の安定バージョンをインストールする。(エラーが出た方はこちら→Mac Nodebrewを用いてNode.jsをインストールした時にエラーが出た話)

      $ nodebrew install-binary stable
      
    2. 下記コマンドを実行してNode.jsのインストールを確認する。

      $ nodebrew --version
      
  3. 設定

    1. 先に実行したコマンド$ nodebrew --versionの出力の「# use a specific version number」の下部に記載されているコマンドを実行する。(「vX.X.X is not installed」というエラーが出た方はこちら→Mac Node.jsのバージョン有効化する手順でvX.X.X is not installedと出力された話)(X.X.Xはバージョン名)

      $ nodebrew use vX.X.X
      >use vX.X.X
      
    2. 下記コマンドを実行してインストールしたNode.jsのバージョンが有効化されている事を確認する。

      $ nodebrew ls
      ・
      ・
      ・
      >current: vX.X.X
      
    3. 先にインストールしたバージョンが「current:」の後に記載されていれば導入完了である。

    4. 下記コマンドを実行してパスを通す。

      $ echo 'export PATH=$PATH:~/.nodebrew/current/bin/' >> ~/.bashrc
      
    5. 「.bashrc」ファイルがログイン時に読み込まれるように設定していない場合は下記の手順を実施する。

      1. 下記コマンドを実行して「.bash_profile」ファイルを開く

        $ vi ~/.bash_profile
        
      2. 下記の内容を追記する。

        ~/.bash_profile
        source ~/.bashrc
        
    6. 下記コマンドを実行して「.bashrc」ファイルを読み込む

      $ source ~/.bashrc
      
    7. 下記コマンド実行してパスが通っている事を確認する(command not foundにならなければOK)

      $ npm
      
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac SSH 設定

確認

$ ls -l ~/.ssh/config

~/.ssh ディレクトリ、 ~/.ssh/config ファイルがない場合は作成しましょう。

$ mkdir ~/.ssh
$ touch ~/.ssh/config

パーミッション設定

$ sudo chown -R $(whoami):staff ~/.ssh
$ sudo chmod 700 ~/.ssh
$ sudo chmod -R 600 ~/.ssh/*

拡張属性の除去

ダウンロードした鍵ファイルに拡張属性(EA: Extended Attributes)が付いてる場合があります。(ls -l パーミッションの右側に @ マークが付く)

$ xattr -cr ~/.ssh

全ホストに共通設定

私は次の設定を入れてます。
お好みで追加してください。

$ vi ~/.ssh/config
Host *
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null
  ServerAliveInterval 15
  ServerAliveCountMax 30
  AddKeysToAgent yes
  UseKeychain yes
  IdentitiesOnly yes
  • StrictHostKeyChecking no ホストキーチェック回避
  • UserKnownHostsFile=/dev/null ホストキーチェック回避
  • ServerAliveInterval 15 タイムアウト対策
  • ServerAliveCountMax 30 タイムアウト対策
  • AddKeysToAgent yes 毎回パスフレーズを聞かれてくることに対する対策
  • UseKeychain yes 毎回パスフレーズを聞かれてくることに対する対策
  • LogLevel QUIET 警告メッセージを非表示にする
    • Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts. このメッセージ。

関連記事

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Google Cloud Speech-to-Text API を完全に理解する

公式ドキュメント

https://cloud.google.com/speech-to-text/docs

対象

・ターミナル、テキストエディタ(vimなど)の扱いができる方

・音声ファイルを自動で書き起こししたい方

料金

最初の60minは無料です。
また、音声ファイルから、翻訳された音声の長さに基づいて算出されるそうです。

詳しくは公式ドキュメントをご覧ください。
https://cloud.google.com/speech-to-text/pricing?hl=ja

向いている音声

・複数人ではなく、1-2人の音声

・雑音が少なく、はっきりと聞き取れる音声

当方の環境

・Mac(catalina 10.15.3)

事前準備

1 まず、GCPアカウントを作成し、コンソールにログインし、適当なプロジェクトを作成する
→ クレジットなど、支払い情報も登録しておくこと

スクリーンショット 2020-03-29 22.27.11.png

2 ナビゲージションメニューから、「APIとサービス」を選択しダッシュボードに入ってください。

3 認証情報からAPIキーを作成してください。

スクリーンショット 2020-03-29 22.31.47.png

4 ナビゲージションメニューから、「storage」に入ってバケットを作成してください。
→ 詳しい方は以下の内容はご自身でお選びください

  1. 適当なバケット名をつける
  2. ロケーションはmulti-region,asiaにしてください
  3. ストレージクラスはstandardにしてください
  4. アクセス制御はきめ細かい管理を選択してください
  5. 暗号化はgoogleが管理する鍵を選択してください
  6. 作成完了

5 作成したバゲットの権限に、名前を allUsers ロールを ストレージオブジェクト管理者 でメンバー追加を行ってください。

スクリーンショット 2020-03-29 22.43.34.png

6 バケットに音声ファイルをアップロードしてください

*音声ファイルについて

以下のオーディオコンバーターサイトでお持ちの音声ファイルを、wav形式で詳細設定をサンプルレート16000khzに変換してください。

https://online-audio-converter.com/ja/

詳細については公式ドキュメントを参照ください。flac形式などでもできるそうですが、当方はうまくいかなかったため、wavでご案内しています。詳しい方はご自身で設定くださいませ。

この時点でGCP側の設定が終了になります、音声ファイルは公開状態なので、translate後はバケットから削除してください。

7 ターミナルを開いて、python 3.5以上になっているかご確認ください。なっていない場合は3.5以上に設定してください。詳細はここでは割愛します。

python -v

6 zipファイルをダウンロードして、任意の場所で展開してください。
→ 公式ではホームディレクトリを推奨しています

7 ターミナルで任意のディレクトリまで移動し、install.shを実行してください

./google-cloud-sdk/install.sh

実行後、反映のために、ターミナルを再起動してください。

8 SDK初期化を行います

gcloud init

9 どんどん進めていきましょう

To continue, you must log in. Would you like to log in (Y/n)? Y
→ y を入力

Pick cloud project to use:
[1] [my-project-1]
[2] [my-project-2]

→ 先程作成したプロジェクトを選択してください

これが終了すると、準備完了になります。

次は1分未満の音声ファイルを書き起こしする場合と、1分未満の音声ファイルを書き起こしする場合でやり方が変わるので、それぞれの方法を紹介します。

サンプルを実行する

1 ターミナルにて以下のコマンドを打ち込む

gcloud ml speech recognize 'gs://cloud-samples-tests/speech/brooklyn.flac' --language-code='en-US' 

2 成功すると以下のレスポンスが返ってきます
* confidenceは信頼度を表し、1に近いほど正確な翻訳を返したことになります。精度が低い場合は音声ファイルを見直すと改善するかもしれません。

 {
      "results": [
        {
          "alternatives": [
            {
              "confidence": 0.9840146,
              "transcript": "how old is the Brooklyn Bridge"
            }
          ]
        }
      ]
    }

1分未満の音声ファイルを書き起こしする場合

日本語の場合(他の言語の場合は公式ドキュメントでご確認ください。)

gcloud ml speech recognize 'gs://バケット名/音声ファイル名' --language-code='ja-JP' 

1分以上の音声ファイルを書き起こしする場合

1 以下のコマンドを打ち込む

gcloud ml speech recognize-long-running 'gs://バケット名/音声ファイル名' --language-code='ja-JP' --async
  • --asyncでgoogle側で非同期処理を行ってくれているので、1分未満の音声ファイルを書き起こしする場合とは違い、すぐに返ってくるレスポンス待ちは行われません。

2 OPERATION_IDが付与されます

{
   "name": OPERATION_ID
}

3 終わるまで、時間が少しかかるので、以下のコマンドで進行状態を確認します。
→ 30分の音声ファイルで10分くらいだった気がします

gcloud ml speech operations describe OPERATION_ID

途中だと以下のレスポンスが返されます

{
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
    "lastUpdateTime": "2020-03-27T07:49:17.871212Z",
    "progressPercent": 85, //85%完了している
    "startTime": "2020-03-27T07:41:24.492602Z"
  },
  "name": "xxxxxxxxxxxxx"
}

完了すると以下のレスポンスが返されます

{
  "done": true,
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
    "lastUpdateTime": "2020-03-27T07:51:01.138196Z",
    "progressPercent": 100,
    "startTime": "2020-03-27T07:41:24.492602Z"
  },
  "name": "xxxxxxxxxxxxxxx",
  "response": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
    "results": [
      {
        "alternatives": [
          {
            "confidence": 0.93330336,
            "transcript": "ここにtranslateした内容が表示されます"
          }
        ]
      },
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む