20200407のMacに関する記事は8件です。

マルチプラットフォーム対応のターミナル「Hyper」

hyper_plugin.png

「Hyper」ターミナル

 マルチプラットフォームなターミナル「Hyper」がなかなかよさそうだったのでメモ。Win/Mac/Linuxで使えますが、これ以下はMacを想定して記載します。

インストール方法

 Homebrewが入っていたら、以下コマンド実行するだけでOKです。

$  brew cask install hyper

 Homebrewを知らない方は、以下記事参照下さい。

Macのパッケージ管理ソフトウェア 「Homebrew」「Homebrew Cask」でソフトウェアを簡単にインストール・管理しよう

 起動画面は以下です。おしゃれ。

hyper_normal.png

テーマの変更

 以下のように実行します。

$ hyper i hyper-solarized-light

hyper_solarized.png

プラグイン

テーマと同じようにhyper i xxxと実行していけば良いのですが、~/.hyper.js の設定ファイルのpluginに以下のように書いて、Hyperを「View -> Reload」でリロードするか、起動しなおせば記載したプラグインがインストールされます。

plugins: ["hyper-solarized-light", "hyper-statusline", "hyper-search", "hypercwd", "hyper-opacity", "hyper-pane", "hyper-tab-icons-plus"],

 色々プラグインを入れると以下のようにオシャレになります(.bashrcも変更の必要あり、参考リンク参照)。

hyper_plugin.png

まとめ

 「Hyper」ターミナルおしゃれなので使ってみようかなと思います。自分の設定ファイルは、以下のGitHubリポジトリにアップしました。

karaage0703/mac-dotfiles

 さらに仮想ターミナルを使いたい場合は、以下記事参照下さい。

byobuで仮想端末入門(Mac/Linux/Raspberry Pi)

関連記事

Macの.bashrcセットアップ

参考リンク

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

MACでARM系マイコンを開発する方法1

Introduction

現在においても組み込みソフトウェア開発はWindowsで行うのが定石ではないだろうか。
開発行為において環境がWindowsしか想定していないというのは枚挙に暇がない。
組み込み系ではさらにその傾向が顕著と言える。

故にMacで組み込みソフトウェア開発と言えば、それはすなわち苦行を意味する。
トライ&エラーの結果行き着いた物を紹介する。

方針

1.IDEであること。
  GCCをmakeして・・・とか、OpenOCDで書き込んで・・・とか、しんどい。
  開発環境を作るのが趣味ならばあえて止めはしないが、苦行である。
  無料ではないが、金で時間を買う。
2.デバッガが使えること
  仕事ではリアルタイムトレースが可能になりつつある時代である。
  こんな時代にUARTを使ってチマチマやっていたら発狂する。

前提条件

PC環境     macOS Catalina
対象マイコン  ARM系(STM32)
開発言語    C/C++
費用      なるべく安く
デバッガ    通常のICEデバッグ相当(ブレークポイント・メモリ/レジスタ操作)

当方環境

開発環境   CrossWorks for ARM(Rowley Assosiates)
評価マイコン STM32F411(Nucleo-F411RE)
↑NucleoボードはSWEデバッガ相当の回路が内蔵されているため便利である。

CrossWorks for ARM入手方法

直販で購入可能である。
英語でやりとりが厳しい人は→国内代理店ソリトンウェーブ

以降は直販前提で記述

ライセンス

・Shared Developer ($2250)
・Named Developer ($1500)
・Educational Workstation License ($300)
・Personal Non-Commercial License ($150)
 個人で非商用であればコレ一択である。

購入手順

  1. Rowley Associatesのトップ画面から購入画面にいく。
    buying.png

  2. Persolal~を選択し文中に[click hear]をたたくと、こんな感じの絵が出てくる。
    スクリーンショット 2020-04-07 21.20.25.png

  3. [2]はいわゆる誓約書である。コレを印刷し、署名して、スキャンしたデータをメール添付して送信する。
      送信先:enquiries@rowley.co.uk

  4. [3]が完了したら[1]のウェブサイトから購入手続きを行う。

Cross Connectって何よ

早い話がJTAG/SWDデバッガ。
これとかなりそっくり。(微妙に違うけど)
多分OlimexのOEM品と思われる。

マイコンを部品として買って、基板作って実装して・・・と言うことをやる人は買って損はない。
最近のマイコンボードはJTAG/SWDデバッガは元々オンボードの場合が多いので、基板作らない人には無用の長物。
CrossWorksはJ-link等に互換性あるので、これらを持っている人には必要はない。

トラブル

2019/11 CrossWorks for ARMとCrossConnectをセットで買った。
2019/12 3週間ほど経ってもCrossConnectが送られてこない。
2019/12 sales@rowley.co.uk にメールで「まだ届かねーよ?送った?」と言う意味のメールを送る。
2019/12 メール回答「まだ送ってなかった。ゴメン。送るから住所教えて」とHenry Beck(担当者かな)から回答
2020/1  現品到着

もしトライされて、ブツが届かないときは問い合わせてみましょう。

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

Macの「最近の項目」を乱用しないで!!

はじめに

みなさん、初めまして。私はMacを使うようになって数年経ち、自分の身の回りの人もMacを使用している環境を1年過ごしました。そんな中で、Macの中がごちゃごちゃの人たちの共通点があったのでここに共有したいと思います。

最近の項目

タイトルからわかるとは思いますが、共通点は「最近の項目」です。これは名前の通り最近使ったファイルを一覧で表示してくれる機能で、普段からファイリングをしっかり行っている人にとってはこの機能とても便利だとは思いますが、何も考えずに「最近の項目」ばかり使っているとびっくりするくらいFinderの中がごちゃごちゃになり自分でさえもどこになんのファイルがあるのか分からなくなります。その状態でヘルプをもと求められてもね...(笑)どこに何があるのかわからないので助けたいのに難しい。

じゃあどうしたら?

そんなこと急に言われても使うのやめられないよ。って人は多いと思います。無理して使うのをやめる必要はないと思います。きちんとファイリングをして自分がわかるように整理をしたり、適当にファイル名を付けて保存せずにパターンを作ってわかりやすい名前にすればいいんです!!
スクリーンショット 2020-04-07 18.02.29.png
MacのFinderには上の画像のサイドバー(左側)ようにデスクトップ・ダウンロード・書類などのようにタブに表示させることができます。これをうまく利用して整理してみてください。最初は面倒だと思うかもしれませんが使いやすくなるのはもちろん作業効率も上がります。是非実践してみてください!

サイドバーに表示する項目の選び方は...
1. デスクトップ画面かFinderのウィンドウをクリック
2. 画面左上のりんごマーク()の右にあるFinderをクリック
スクリーンショット 2020-04-07 18.15.44.png
3. 上から2番目の環境設定...をクリック
スクリーンショット 2020-04-07 18.16.10.png
4. 左から3番目のサイドバーをクリック
スクリーンショット 2020-04-07 18.16.25.png
5. 表示させたい項目にチェックを入れる

以上の手順で表示させることができます。

最後に

いかがだったでしょうか。簡単にですがまとめさせてもらいました。スクショを見て思った人もいるかもしれませんが私は「最近の項目」を使っていません(笑)ファイルごとに場所を分けていればすぐ見つかりますし、ファイル名にパターンを作ると覚えやすいので検索しちゃうんですよね。ご覧いただきありがとうございました!

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

ubuntuでsudo apt updateが使えない

はじめに

タイトル通り。ハマったので未来の自分のためのメモ。

エラー

コマンドとエラー
sudo apt update

>Unable to locate an executable at "/Library/Java/JavaVirtualMachines/jdk-14.jdk/Contents/Home/bin/apt" (-1)

解決

vagrant sshしてないだけでした。あほ。

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

Mac Laravel 環境構築初期やgit clone直後でローカルサーバを起動した時に500エラーが出た話

目的

  • Laravelアプリの環境構築初期やgit clone直後にローカルサーバを起動すると500 Server Errorのエラーが出力される問題を解決した話をまとめる

問題のエラー

  • Laravelアプリのディレクトリ内で$ php artisan serveを実行し、ブラウザからhttp://127.0.0.1:8000/にアクセスしたところ下記の画面が表示された。

    スクリーンショット 2020-03-18 13.54.41.png

原因

  • Laravelアプリのルートフォルダ内に「.env」のファイルが存在しないことが原因である。
  • 下記に問題発生時のLaravelアプリのルートフォルダ直下のフォルダ構成を記載する。

    .editorconfig
    .env.example
    .git/
    .gitattributes
    .gitignore
    .styleci.yml
    README.md
    app/
    artisan
    bootstrap/
    composer.json
    composer.lock
    config/
    database/
    package-lock.json
    package.json
    phpunit.xml
    public/
    resources/
    routes/
    server.php
    storage/
    tests/
    vendor/
    webpack.mix.js  
    

解決法

  1. 下記コマンドを実行して「.env.example」ファイルを元に「.env」ファイルを作成する。

    $ cd laravelアプリルートフォルダ
    $ cp .env.example .env
    
  2. 下記コマンドを実行してローカルサーバを起動する。

    $ php artisan serve
    
  3. http://127.0.0.1:8000/にアクセスしたところ下記の画面が表示された。

    スクリーンショット 2020-03-18 14.15.37.png

  4. アプリケーションキーがないので作ってくれと怒られたので、一旦ローカルサーバを止めて、ブラウザに記載されているコマンドを実行する。

    $ cd laravelアプリルートフォルダ
    $ php artisan key:generate
    >Application key set successfully.
    
  5. 下記コマンドを実行してローカルサーバを起動する。

    $ php artisan serve
    
  6. 自分が作成中のLaravelアプリのホーム画面がブラウザから確認することができた。

    スクリーンショット 2020-03-18 14.22.50.png

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

【追記予定】Intellij ideaのショートカット比較

MacとWindowsでのIntellij ideaのショートカットの違いに困惑したので、個人的によく使うものだけをとりあえず一覧化した。
RubyMineやWebStormなんかもKeymap自体は同じなんじゃないかと思う。
まとめきれてないので追記予定。

Action Mac Windows
エディタタブを閉じる command+W Ctrl+F4
設定 command+, Ctrl+Alt+S
プロジェクト設定 command+; Ctrl+Alt+Shift+S
定義元へジャンプ command+B Ctrl+B
インテンション・アクションの表示 shift+enter Alt+Enter
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MacでPhotonVoiceを使用したときに他アプリケーションの音量が小さくなる問題

概要

PhotonVoice を使用した Unity 製アプリを起動した途端、別アプリケーションとして起動している Google Chrome 上の YouTube や Spotify 等の音量が極小になる。また、通話中の Discord に至っては音量だけではなくマイク入力も極小になるようだった。本事象は UnityEditor 上でアプリケーションを実行しても発生した。

同じ事象は PhotonVoice を使用していないと思われる LINE や Skype, Zoom の通話中でも発生しているが、Discord や Slack, Google Chrome 上の Facebook Messenger の通話中では発生していないので、何か解決方法があることが分かる。

確定的な原因は分からなかったが、対処方法は分かったので記事として残しておく。

各種バージョン

環境 バージョン
macOS macOS 10.15.4
Unity Unity 2018.2.21f1
Photon Unity Network PUN 1.91

(全体的にバージョンが古くてお恥ずかしい限りです)

対処方法

PhotonVoiceRecorder にある Microphone Type で「Unity」を使用する。
自分のプロジェクトでは「Photon」を使用していたが、これを「Unity」に変更したら解決した。

image.png

ただし、基本的には Unity マイクよりも Photon マイクのほうが何かと優秀なので、Mac で起動したときのみ「Unity」マイクを使用するようにするために下記コードを書いた。 (PhotonマイクのクライアントとUnityマイクのクライアント同士で音声通信が正常に出来ることは検証済み)

private void Start() {
  GetComponent<PhotonVoiceRecorder>().MicrophoneType = IsMacOs() 
    ? PhotonVoiceRecorder.MicAudioSourceType.Unity 
    : PhotonVoiceRecorder.MicAudioSourceType.Photon;

  // 念の為PhotonVoiceSettingも変更しておく
  PhotonVoiceSettings.Instance.MicrophoneType = IsMacOs() 
    ? PhotonVoiceSettings.MicAudioSourceType.Unity 
    : PhotonVoiceSettings.MicAudioSourceType.Photon;
}

// Macで実行されていたらtrue
private bool IsMacOs() {
#if UNITY_STANDALONE_OSX || UNITY_EDITOR_OSX
  return true;
#endif
  return false;
}

原因究明 (未解決)

下記のフォーラムで探して回ったが、とにかく同じ事で悩んでいる人が少なかった。
また、投稿があっても回答が無いパターンも多かった。

  • Unity Forum
  • Apple Developer Forums
  • Photon Engine Support Forum
  • Stack Overflow

似たような問題を抱えている人

本事象に一番近いなと思ったのは、Apple Developer Forums に投稿されていた下記の質問。
(もしかしたら全く関係無いかもしれないが)
VoiceProcessingIO lowers the volume of all othe... |Apple Developer Forums

VoIPアプリケーションでVoiceProcessingIO(kAudioUnitSubType_VoiceProcessingIO)オーディオユニットを使用してオーディオを録音および再生しています。ユニットが初期化されている場合を除き、すべてが正常に動作します。他に何かがオーディオを再生している場合、そのオーディオは非常に静かになりますが、出力はすべてフルボリュームで聞こえます。

こちらの投稿には回答が付いていなかったが、macOS のオーディオ API 周りの機能が原因である事が分かる。
(上記記事で紹介されていた kAUVoiceIOProperty_DuckNonVoiceAudio - AudioToolbox | Apple Developer Documentation のプロパティをドキュメントから参照したが、非推奨と書いてあったので対応出来なかった。)

全てのアプリケーションにおいて音声入力時に他のアプリケーションの音量が小さくなるのならここで諦めるが、上述した通り Discord や Slack の通話では音量が変わる事が無かったので、もう少し調べてみることにした。

Photon Voice のマイクタイプについて

公式ドキュメントの「Photon」マイクの説明を見ると、ネイティブのオーディオAPIとやりとりしている事が分かる。

Unityマイクは、ほぼ同じコードベースを使用して複数のプラットフォームをターゲットにすることを容易にするのに最適です。ただし、いくつかの点で、UnityのマイクAPIは制限されているか、あちこちにいくつかの問題があります。そのため、オーディオ入力デバイスと直接やり取りし、UnityのマイクAPIをバイパスする独自の方法を導入しました。これの主な理由の1つは、デバイスのハードウェアに組み込まれているエコーキャンセレーションを利用することです。 ※ Photon Voice For PUN | Photon Engine より引用

macOS の API (特にオーディオ周り)には詳しくないが、オーディオ API が本事象の原因であり、Photon マイクの実装がネイティブのオーディオ API を利用しているのならもしかして?と思ってマイクタイプを「Unity」に変更したら他アプリケーションの音量に影響を与えない事が出来た。

最後に

Unity マイクも内部的にはネイティブのオーディオ API を参照しているのでは?と思ったが、他アプリケーションの音量操作は Unity API 側で無効にされているという認識で良かったのだろうか。

結局、具体的に何のオーディオ API の何のパラメータが原因で、どのような場合に音量操作を行うのかというのは分からなかったので、もし詳しい方がいらっしゃいましたらご教示いただけますと幸いです。

参考リンク

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

Secure PipesとSwitchyOmegaで4クリックお手軽ポートフォワーディング

みなさま、リモート生活をいかがお過ごしでしょうか。
会社や大学の内部向けのデータにアクセスするために、今まで以上に踏み台サーバーを使ってポートフォワーディングをしている方が増えているのではないでしょうか。

この記事では、Secure PipesというMac用のアプリとProxy SwitchyOmegaというChrome Extensionを導入することで、4クリック(最小0クリック)でダイナミックポートフォワーディングによるWebブラウジングを有効化できるようにします。

Secure Pipesの導入

踏み台サーバーを経由してWebサイトにアクセスする時、ほとんどの人はsshでトンネルを掘っていると思います。

しかし、sshによるポートフォワーディングの面倒な点として、

  • ターミナルを開いてコマンドを叩くのが面倒
  • スリープすると自動で復帰してくれない(autosshなどもありますが)
  • 接続先の切り替えが面倒
  • トンネルが繋がっている状態なのか忘れがち

等があると思っています。

Secure Pipesは、Macのタスクバーに常駐し、メニューから簡単にトンネルのON/OFFを切り替えることのできるアプリです。

secure_pipes_menu.png

設定方法

  1. https://www.opoet.com/pyro/ からSecure Pipesをダウンロードし、インストールして起動します。
  2. タスクバーのアイコン->Preferencesから設定画面を開きます。
  3. 現在設定されているプロキシ設定が表示されますが、もちろん最初は空です。左下の「+」ボタンから、「New SOCKS Proxy」をクリックしてコネクションを作成します。
    proxy_items.png

  4. 設定画面が開くので、踏み台サーバーの情報を入力します。localhostのポート番号はもちろん空いているポートなら何でも大丈夫です。
    config.png

  5. Optionsタブを開き、ssh鍵のロケーションなどを設定します。
    options.png

  6. Applyボタンを押して設定を保存します。

  7. タスクアイコンから、保存した設定でトンネルを開きます。通知が出て、緑色のインジケータが点灯したらOKです。
    secure_pipes_menu.png

切断する際はメニューを開いてDisconnectするだけです。

これでターミナルからssh -Dでダイナミックポートフォワーディングしているのと同じ状態になります。

Macが一度スリープして接続が切れても、スリープが解除されると自動復帰します。

次にこのトンネルを経由してwebサイトに接続するよう、ChromeにProxy SwitchyOmegaを導入します。

Proxy SwitchyOmegaの導入

ChromeがSOCKSプロキシを経由して接続するようにProxy SwitchyOmegaを導入します。

設定方法

  1. Chrome Webストアから、Proxy SwitchyOmegaを追加します。
    https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif

  2. インストールすると、Chromeのメニューバーの隣にドーナツみたいなアイコンが表示されます。
    クリックするとProxy SwitchyOmegaに設定されているプロキシの一覧が表示されます。作成するには「Options」をクリックします。("secure pipes"等の設定は下のステップで作成したもので、最初は表示されていません)
    proxy_config_list.png

  3. 設定画面が開くので、左側のメニューのNew Profile...から、新しいプロファイルを作成します。

  4. 作成したプロファイルに、以下のように設定します。

    • Protocol: SOCKS5
    • Server: localhost
    • Port: 8001(Secure Pipesに設定したもの) switchyomega_config.png
  5. 左側のメニューのApply changesを押して保存します。

  6. これで設定が完了しました。ポートフォワーディングで接続したいWebサイトを開き、ドーナツアイコンから作成したプロファイルをオンにします。
    proxy_config_list.png

  7. ドーナツアイコンが青色になったら、トンネル経由で接続されています。

これでlocalhostの8001ポート、つまりSecure Pipes側でlistenしているポートからトンネルを経由して全てのWebサイトがブラウジングされます。

メニューから[Direct]を選択すれば、プロキシを通さない直接接続に戻ります。

まとめ

Secure PipesとSwitchyOmegaを使って、ChromeからSOCKSプロキシ経由でWebサイトを閲覧する設定を紹介しました。

一度設定しておけば、次回からはタスクトレイのアイコン2クリックとProxy SwitchyOmegaの2クリック、計4クリックによるポートフォワーディングによる接続が可能になります。

Proxy SwitchyOmegaは複数のプロキシを設定したり、ドメインによってプロキシを自動的に切り替えることもできます。

auto switchを上手く設定し、かつSecure Pipesの設定で自動起動と起動時の自動接続を設定すれば、Macの起動時から0クリックで常時お好みのトンネルで接続するような設定もできるでしょう。
(踏み台サーバーに負荷がかからないよう、ご利用は計画的に)

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