20200912のMacに関する記事は10件です。

macOS Catalina で MacOS X Snow Leopard のインストールUSBメモリを作成し、古いMacを初期化する

古いMacは工場出荷時にインストールされていたのと同じバージョンのOSがないと初期化できません。
手元に元々Snow LeopardがインストールされていたMac miniがありますが、付属していたOSインストールディスクを紛失したため、以下の方法で初期化しました。
なお、Snow Leopard のインストールDVDを別途入手したのですが、Mac miniのDVDドライブがこのDVDを認識してくれなかったため、ブータブルなUSBメモリを作成し、初期化に使用しました。

環境

インストールUSBメモリを作成するために使った環境です。

  • MacBook Pro(macOS 10.15.6)
  • 外付けDVDドライブ
  • 16GBのUSBメモリ
  • Mac OS X Snow Leopard のインストールDVD

1. Snow Leopard のインストールDVDからディスクイメージを作成する

ディスクユーティリティを使用してディスクイメージを作成しようとすると失敗します。
このバグはEl Captainのときに発生していたようで、Catalinaでも同じバグが発生しています。
そのため、ターミナルでhdiutilを実行し作成します。
ターミナルで次を打つとディスクイメージを作成できます。

$ hdiutil convert -format UDTO -o <出力ファイル名> <ドライブ名>

<出力ファイル名>は ~/cdrom などとすると、cdrom.cdr が作成されます。
<ドライブ名>は、Snow Leopardのディスクが入ったDVDドライブのドライブ名で、/dev/disk3 などとします。
ディスクドライブ名は diskutil list と打って調べます。
-formatのUDTOは、DVD/CDマスターのことです。
hdiutil convert -help と打つと他のフォーマットを調べることができます。
作成されたファイルの拡張子を「.cdr」から「.iso」に変更します。

2. .dmg ファイルの生成

次のコマンドを実行して先ほどの cdrom.iso から SnowLeopard.img.dmg を生成します。

hdiutil convert -format UDRW -o ~/SnowLeopard.img ~/cdrom.iso

3. USBメモリをアンマウントする

次のコマンドを実行してUSBメモリをアンマウントしておきます。

diskutil unmount <ドライブ名>

これをしないとこの後のUSBメモリへの書き込み時に「Resource busy」と表示され実行に失敗します。
<ドライブ名>は先と同様に diskutil list と打ってUSBメモリのドライブ名を調べます。
もし上記でコマンドを実行して次のメッセージが表示されたら、

<ドライブ名> was already unmounted or it has a partitioning scheme so use "diskutil unmountDisk" instead

次を実行してアンマウントします。

diskutil unmountDisk <ドライブ名> 

4. ブータブルなUSBメモリを作成する

先ほど「3.」で生成した SnowLeopard.img.dmg をUSBメモリに書き込みます。

sudo dd if=~/SnowLeopard.img.dmg of=<ドライブ名> bs=1m

<ドライブ名>はUSBメモリのドライブ名を指定します。

5. MacをUSBメモリから起動し、初期化する。

インストール先のMacにUSBメモリを挿し、Option キーを押しながら電源を投入します。
しばらくして表示される起動ドライブを選択する画面でUSBメモリを選択して起動。
後は画面に従えば初期化できます。
なお、USBメモリで起動後にディスクユーティリティで初期化対象のハードディスクを一旦消去してフォーマットしておかないと初期化できない場合があるかもしれません。

参考

https://beiznotes.org/failed-to-make-a-cdrom-disk-image-on-macos-catalina/
https://qiita.com/kikuchy/items/4073c3bad9fe39101a25
https://www.taikun-room.com/2019/12/how-to-make-bootable-usb-installer.html

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

Macターミナルのコマンドエイリアスおすすめ

記事の想定

ユーザー

  • Mac買いたてで何もわからん人
  • エイリアスやったことない人
  • ターミナルのコマンドおすすめ無いかな〜・・・な人

想定環境

  • Mac初期設定?のzsh(特に買ってからターミナル周りの設定いじってないな〜って人は多分これになってるはず)
    (私は今の所不自由してないのでこのまま行こうと思ってる。。。)

結論

  • exa(lsのリッチver.)入れとけ1
$ brew install exa
  • ひとまず/Users/(yourDirectory)/.zshrcに以下ぶっこんどけ
#ステータス表示を消す
eval "$(anyenv init -)"
export PS1="%~ $ "

#exa(lsのリッチver.)
alias ls='exa'
alias ll='exa -ahl --git'

#cdしたらls
cdls ()
{
    \cd "$@" && ls
}
alias cd="cdls"

#Homebrew
alias b='brew'
alias bi='brew install'
alias bui='brew uninstall'
alias bu='brew upgrade'
alias bl='brew list'
alias bs='brew search'

alias bc='brew cask'
alias bci='brew cask install'
alias bcui='brew cask uninstall'
alias bcu='brew upgrade --cask'
alias bcl='brew list --cask'
alias bcs='brew search --cask'

#google検索
google() { open /Applications/Google\ Chrome.app/ "http://www.google.com/search?q= $1"; }
alias g="google"

説明

一応ざっくり用語説明

エイリアス

  • '別名'のこと
  • 今回やっていることは主にターミナルで「○○って打ち込んだら、これは△△のことだからね!!」ってターミナル君に教え込むことをしてる

zsh

  • シェルの一種

/Users/(yourDirectory)/.zshrc

  • zshの設定ファイル

今回の設定について解説

ステータス表示の変更

eval "$(anyenv init -)"
export PS1="%~ $ "
  • いきなりエイリアスじゃない話
  • ざっくりいうと、コマンド打つところの最初の'$'より前のステータス周りの文字を消してる
// ↓↓↓設定すると'~'だけになる!
    ~ $ hogehoge
  • 画面狭いMacで作業するときにステータスの表示が長くて邪魔だったので。。。

exa関係

// exa(lsのリッチver.)
alias ls='exa'               // ←既存の'ls'を置き換えちゃう
alias ll='exa -ahl --git'    // ←更に詳細情報を調べたいとき用

// cdしたらls
cdls ()
{
    \cd "$@" && ls  // ←'cd'による遷移が成功したら'ls(上で'exa'に変更してる)が実行される
}
alias cd="cdls"
  • ls(カレントディレクトリ直下の一覧表示)をリッチにしてくれる
    • ディレクトリとファイルを色分けしてくれるだけでもだいぶ有り難いので即入れる
    • 他には権限情報、Gitステータスなんかを表示してくれるようにもできる

homebrew関係

// Homebrew
alias b='brew'
alias bi='brew install'
alias bui='brew uninstall'
alias bu='brew upgrade'
alias bl='brew list'
alias bs='brew search'

alias bc='brew cask'
alias bci='brew cask install'
alias bcui='brew cask uninstall'
alias bcu='brew upgrade --cask'
alias bcl='brew list --cask'
alias bcs='brew search --cask'
  • シンプルに、短縮形を登録

ターミナルからGoogle検索

google() { open /Applications/Google\ Chrome.app/ "http://www.google.com/search?q= $1"; }
alias g="google"
  • 地味に便利系
  • "$ g ほげほげ"ってターミナルで打てばchromeが立ち上がって「ほげほげ」で検索されたページが立ち上がる

おわり

編集記録

  • 20200912|初版
  • 20200913|brew upgrade, brew cask系追加

  1. brewは真っ先に入れるべき。。。homebrewとは何者か。仕組みについて調べてみた 

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

Wake on LANを使って、遠隔からパソコンを起動しよう【macOS】

はじめに

Wake on LAN (WOL)とは、「同じネットワーク内のパソコンに対して、Magic Packet(マジック パケット)というパケットを送り込み、遠隔から電源をつけることができる仕組み」です。同じネットワーク内だったとしても、中継しているルータがMagic Packetをブロックしている場合もあります。

今回は、macOSのパソコンからMagic Packetを送る方法を紹介します。

1. 受信PCのMACアドレスを確認

まず受信PCのMACアドレスを確認します。

MACアドレスは、Media Access Controlの略称で、「ネットワーク機器に割り当てられた住所」のことです。AppleのmacOSとは全く関係なく、WindowsPCにも割り当てられています。

まずこのMacについてを開きます。
MAC_confirm_1.png

そして、システムレポートを開きます。
MAC_confirm_2.png

最後に、ネットワーク > ネットワーク環境 > ハードウェア(MAC)アドレスをスクロールして探します。
MAC_confirm_3.png

2. 送信PCからMagic Packetを送信

受信PCのMACアドレスがわかったら、送信PCでターミナルというアプリを開き、以下のようなコマンドを実行してみましょう。
特に、エラーなく実行できたら、準備完了です。

% mkdir ~/bin          
% curl https://raw.githubusercontent.com/jpoliv/wakeonlan/master/wakeonlan -o ~/bin/wakeonlan
% chmod +x ~/bin/wakeonlan

最後に、以下のようなコマンドでxx:xx:xx:xx:xx:xxに受信PCのMACアドレスを入れて、実行してみましょう。

% ~/bin/wakeonlan xx:xx:xx:xx:xx:xx

これで、受信PCが起動したと思います。
研究室などで、別の部屋のパソコンがスリープに入った時に起動させたいタイミングなどがあり、意外と便利です。

参考リンク

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

「php artisan ui vue --auth」ができなかった時の解決法【メモ】【超初心者】

$ php artisan ui vue --auth

上記を実行しようとしたところ、、、

エラー内容

「Command "ui" is not defined.」
スクリーンショット 2020-09-12 16.36.16.png

解決した方法

$ composer require laravel/ui "^1.0" --dev

このコマンドを実行してから
またさっきのをやってみたらできました

$ php artisan ui vue --auth

参考にしたサイト https://zukkokeblog.com/laravel6-auth

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

Mac 環境構築の備忘録

たまにあるよね、クリーンインストールして環境構築し直すはめになること

…ありませんかね?
というわけでMacOSからクリーンインストールして、開発環境諸々再構築するはめになったので次に備えて備忘録として書いてます。

目次

  1. MacOS再インストール
  2. Homebrewインストール
  3. CLIパッケージインストール
  4. GUIパッケージインストール
  5. npmパッケージインストール

1.MacOS再インストール

色々方法はありますが、私はUSBメモリにOSデータを書き込んでブータブルUSBメモリを作成して、そのUSBメモリから起動する形でインストーラを起動し、再インストールしています。

※詳細はこちら
macOS の起動可能なインストーラを作成する方法 - Apple

まず肝心のOSのデータをダウンロードします。
macOS Catalina にアップグレードする方法 - Apple
上記リンクの手順4「macOS Catalina をダウンロードする」からAppStoreを開いてCatalinaのインストーラディスクイメージをダウンロードします。

Mojave, HighSierraを使用したい場合は下記からダウンロードできます。
macOS Mojave にアップグレードする方法 - Apple
macOS High Sierra にアップグレードする方法 - Apple
Catalinaの場合と同じく手順4からAppStoreを開き、OSインストーラーのディスクイメージをダウンロードできます。

ダウンロードが完了したらUSBメモリに書き込みます。ただコピーするだけではブータブルメディアにはならないのでターミナルから作成します。

//Catalina
$ sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

//Mojave
$ sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

//High Sierra
$ sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

ここではUSBメモリの名前をMyVolumeとしています。
もちろん任意に変更しても問題ありませんが、その場合はコマンド後半の--volume /Volumes/MyVolume--volume /Volumes/"USBメモリの名前"としないと当然作成できません。

USBメモリへの書き込みが終了したらMacをシャットダウンします。
電源が切れたら目的のUSBメモリ以外の周辺機器は取り外して、optionキーを押したまま電源ボタンを押してStartup Managerを起動し、先ほど作成したインストーラー(USBメモリ)から起動します。

インストーラーが起動したらディスクユーティイリティを開いて、MacのSSDのパーティションを全て消去し、APFS形式で新しいパーティションを再作成します。

パーティションの再作成が完了したら、ディスクユーティイリティを閉じて、インストールを開始します。
インストール手順自体はインストーラーが指示を出してくれるのでそのまま従ってインストールしていきます。

インストールが完了したら自動的に再起動されます。ユーザー情報や iCloudログイン等が
またこのタイミングでTimeMachineからの復元も可能です。その場合はこれ以降の操作は不要です。

※ブータブルメディアを作成せずに、再インストールする方法もあります。
これはAppleが公式サイトにまとめてくれているので詳細はそちらで。

macを再インストールする - Apple

2.Homebrewインストール

言わず知れたHombrewをインストールしていきます。

公式ドキュメントに従ってターミナルで以下のコマンドを実行します。もちろんインストール済みなら飛ばしても問題ありません。

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

brewコマンドが実行できれればインストール完了です。

$ brew -v
Homebrew/homebrew-core (git revision 279ca1; last commit 2020-09-10)
Homebrew/homebrew-cask (git revision 9c41b; last commit 2020-09-10)

3.CLIパッケージインストール

Homebrewもインストールできたので各パッケージをインストールしていきます。
複数のパッケージを同時にインストールできるので1行で実行します。
ひとまず今回はGit, NodeJS, Yarn, PostgreSQL, pyenvをインストールします。

$ brew upgrade
$ brew install git node yarn postgresql pyenv

brew list で各パッケージが確認できれば成功です。

$ brew list 
autoconf    icu4c       openssl@1.1 postgresql  yarn
gettext     krb5        pcre2       pyenv
git         node        pkg-config  readline

pyenvを使ったpythonのインストールはここから

4.GUIパッケージインストール

これまでGUIパッケージは手動で各インストーラーでインストールしていたのですが、今回環境構築をやり直している過程でbrew caskでGUIパッケージもインストールできる事を思い出しました。

調べてみたら今回インストールしたGUIパッケージがなんと全てbrew caskに対応していたことがわかりました。

今回はGUIパッケージは全部それぞれのインストーラーからインストールしてしまったのでそのままにしておきますが、次回以降のためにbrewでインストールする手順を記録しておきます。
今回インストールするのは以下のパッケージです。

※ブラウザ
MozillaFireFox
GoogleChrome

※オンラインストレージ
GoogleBackup&Sync

※オフィスソフト
AdobeAcrobatReader
LibreOffice

※開発環境
VisualStudioCode
PostMan
VirtualBox

※コミュニケーションツール
Slack
Zoom

※セキュリティソフト
AvastSecuroty

※言語環境
Google日本語入力
DeepL

※システムユーティリティ
iStat-Menus
TheUnarchiver

※システムクリーナー
AppCleaner
CCleaner
OnyX

※その他
Spotify
VLC

それではインストールしていきます。

$ brew cask install firefox google-chrome google-backup-and-sync adobe-acrobat-reader libreoffice visual-studio-code psotman virtualbox slack zoom avast-security google-japanese-ime deepl istats-menus the-unarchiver app-cleaner ccleaner onyx spotify vlc 

brew list --cask でパッケージが確認できれば成功です

$ brew list --cask

5.npmパッケージインストール

グローバルでインストールするnpmパッケージをインストールします。
現時点でインストールしてあるのはtypescriptだけなので、インストールしておきます。

$ npm install -g typescript

必要に応じて追加していこう。
とは言ってもグローバルでインストールする項目はそんなに多くはならないと思うが。

あとはプロジェクト単位でのローカルインストールになるかな?

あとがき

brewは使ってたけどbrew caskは使ってなかった。そして今回少し調べたら自分が使ってる有名所のソフトは全部あったので、次回以降の環境再構築の際に試したみたいところ。
これで行けるならいちいちインストーラ起動しなくてもいいし、一括でパッケージ管理もできるからインストール/アップデート/アンインストールの管理の手間も削減できそう。

CLIパッケージだけでなく、これまで手動でインストールしていたGUIパッケージもbrewコマンドで、つまりは今回まとめたようにパッケージのリストを作成しておけば1行のコードをターミナルにコピー・アンド・ペーストするだけでインストールできることになる、これは後々すごく楽になりそう。

brewでインストールできていないパッケージはあるにはあるが、AppStoreでインストールだからログインしてワンクリックで済むからさして手間にはならない。

あとは必要になるとしたらファイルのコピーとOSや各パッケージの設定かな。
そのあたりもコマンドでできるやつは一括でやりたいところ。
コマンドで実行できるならシェルスクリプト書いておけば一括で実行できるので、合間見て記録しておこうかな。

参考記事

新しいMacを買ったらやること - Qiita

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

【Mac】ZoomでiPad画面+受講者コメント+講師映像を配信 (フレームレート改善版)

この記事を読むと緩和されうるリモート講義の課題

  • スライドだけのリモート講義は、集中力が続かない。講師が信頼できる人なのか、受講者が感じにくい(講演者・受講者の課題)
  • 講演者映像を入れたとしても、リモート講義は「壁」に向かって喋っているような感じがして虚しい(講演者の課題)
  • 講演者映像を入れたとしても、リモート講義は、受講者間で、一緒に受講しているという雰囲気が感じられない。例えば、話についていけないのが自分だけなのかどうか感じにくい(受講者の課題)
  • 個々のテクニックは調べると分かるとしても、一通りできる一例が知りたい
  • これらをMac+iPadベースで解決したい

よくご存じの方に対して

OBS Studio と Comment Screenという素晴らしいツールを組み合わせる紹介をしているだけです。

以前の記事の方法では、フレームレートが極端に落ちることがあり、「ニコニコ風オンライン講義環境を作ろう!」「OBSを利用してZoom フルHD(1080p、1920×1080)配信を実現する方法」を参考に修正しました。

目標

2.gif

  • Zoomでこういう配信をする方法の一例を紹介
  • メインターゲットは、リモート講義をせざるを得なくなった教員

要素

以下の3つの要素で実現できます。
全部ではなく、いくつかの要素だけの導入でもいいと思います。
1と2はアプリだけ。
3は、グリーンバック、さらにはカメラなどがあればクオリティを上げていけるが、まずは無しでスタートするのがよいのでは。

  1. iPadのスライドをZoomで配信
  2. Comment Screenでコメントやアイコンを画面に出したものを配信
    (WindowsだとComment Screen以外に、パパパコメント http://papapac.com/ もある)
    ダウンロード.gif
  3. OBS Studioで講演者映像をスライドに重ねて配信(グリーンバックがなければ、講演者映像とスライドを並べる)
    ダウンロード (1).gif

機材

要素1,2に必要なもの

  • Mac(ここではMacbook Pro, macOS 10.14.6 Mojave)
  • Macの外部ディスプレイ1つ
  • iPad or iPhone(ここではiPad Pro 11inch, iOS 13.7)
  • Zoom 5.2.1
  • AirServer for Mac (本稿執筆時点では教員は1,800円) https://www.airserver.com/Mac
  • GoodNotes iPad/iPhoneアプリ (有料) スライドを表示するアプリであればなんでもよい
  • Comment Screen 1.0.7 (無料) https://commentscreen.com/
  • 教育に対する情熱

要素3に追加で必要なもの

  • Macの外部ディスプレイ2つ
  • OBS Studio (無料) https://obsproject.com/ja/download
  • グリーンバック(あれば講師画像をクロマキー合成で重ねられる)

1. iPadの画面をMacのZoomで配信

前提:MacとiPadは同一の無線LANに接続

  1. MacでAirServerを起動
  2. :bulb:AirServerの解像度指定は,4:3であれば"Projector 1024x768",16:9であれば1080p スクリーンショット 2020-06-09 23.01.42.png
  3. iPadの画面ミラーリングでMacのAirServerを選択
  4. iPadでGoodNotesを起動すると、スライドだけがMacに表示される
  5. Zoomの画面共有でAirServerを選択

1.1 他の方法に関する補足

  • MacのZoom→画面共有→iPhone/iPad(AirPlay使用)
    数分であれば出来るが、数十分やると、途中でiPadの操作が反映されないことがある
    上記AirServerを立ち上げた状態でこれをしようとすると、うまくいかないので注意
  • MacのZoom→画面共有→iPhone/iPad(ケーブル使用)
    GoodNotesなどでスライドだけを表示することが出来ない。アプリのツールバーなどが見えてしまう。
  • iPadでZoom配信
    要素2,3を加える拡張性がない

2. CommentScreenでコメントやアイコンを画面に出したものを配信

  1. Comment Screenをインストールする https://commentscreen.com/ のDownload Nowよりダウンロード,インストール
  2. AirServerをフルスクリーンに
    メニューのウィンドウ→「フルスクリーンにする」
  3. Comment Screenを起動
  4. Zoomの画面共有で、デスクトップを選択
    デスクトップでなくAirServerを画面共有すると、Comment Screenは配信されない :bulb:

Comment Screen自体は https://commentscreen.com/ 参照
筆者は「:thumbsup:分かったとか、:sob:ついて行けてないとか、気分をアイコンを送って」とか「1番と思う人はアイコンを1つ送って」などとしています。文字も送ることが出来ますが、アイコンの方が気兼ねなく送ってくれるようです。アイコンは :heart: :laughing: :thumbsup: :sob: の4種類が使えます。

3. OBS Studioで講演者映像をスライドに重ねて配信

OBS Studio(以下OBS)の設定

  1. 複数のディスプレイのうち1つを共有用とし、AirServerのウインドウを適当な場所に配置
    PowerPointなどでも、全画面でよければ、その画面を共有すればOK
    :bulb:このディスプレイの解像度は,1280x720くらいに下げておいた方が,Comment Screenのアイコンが大きく見えてよい.
  2. ソース欄を右クリック→追加→画面キャプチャ→新規作成で、共有用のディスプレイを指定
  3. :bulb:デスクトップのメニューバーを消す(ただし,これをするとCommentScreenのコメントの上が欠ける副作用あり)
    ソース欄の、先ほど作った画面キャプチャを右クリックし、プロパティ→上をクロップ 44.00 あたりの数字にすると、Macのメニューバーが消える.
  4. 講師映像追加・:bulb:鏡像に
    ソース欄を右クリック→追加→映像キャプチャデバイス→新規作成で、FaceTime HD Camera (Macbookの内蔵カメラ)を選択。適当な場所に配置。グリーンバックがなければ、横に並べる。
    ディスプレイに映る映像が鏡像になるようにした方がスライドを指しやすい(右クリック→変換→水平反転)
  5. グリーンバックがある場合、講師映像の背景を消す
    ソース欄の、先ほど作った映像キャプチャデバイスを右クリックし、フィルタ→エフェクトフィルタ→「+」ボタン→クロマキー
  6. 設定→映像→出力(スケーリング)解像度を1280x720に
  7. ツール→Start Virtual Camera

Zoomで、「画面の共有」→詳細→第2カメラのコンテンツ→「カメラの切り替え」でOBSの画面に

上記のようにVirtual Cameraを使わないとフレームレートが極端に落ちることがあります。詳しくは以下参照。

OBS Studioでのクロマキー合成についての参考URL

3.1 映像クオリティアップに関する補足

例の画像では、以下の機材も使って講演者映像の解像度を上げていますが、まずは無しでいいと思います。

  • HDMIクリーン出力できるカメラ。筆者はZ6 + NIKKOR Z 24-70mm f/4 S (私物で手元にあっただけ)
  • キャプチャボード。UVC対応が望ましい。筆者はElgato Game Capture HD60 S+

やり方の参考URL

他のプラットフォームの場合

Windows

OBS Studio, Comment Screen, AirServerすべてWindows版があります。
基本的に同じ流れでできるはずです。
ただ、私自身使ったことはないので、特にAirServerなど安定性は分かりません。

Zoom以外のWeb会議ツール

本記事はZoomに特化しているため、以前の記事の方が、他のツールでも応用が利きやすいかもしれません。

むすび

こういう工夫をしてみたところ、Comment Screenを介して受講者間でお互いの理解の雰囲気が分かるなど、受講者側にも当初想像以上のメリットがあることが分かりました。
また、私自身、新型コロナ対策でリモート講義・リモート学会になった当初は、「こんなのでは講義や学会発表をする気が起きない」と感じていましたが、学生のポジティブな反応を得て、だんだんやる気が湧いてきました。

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

MacのVisual Studio Code間で設定を同期する方法

はじめに

仕事でもプライベートでもVisual Studio Codeを使っているのですが、できれば設定周りを同期したいと思っていました。
ふと、Visual Studio Codeの設定をみたところ、同期するための設定項目がありましたので、ここで紹介します。
同期の際には、GithubアカウントかMicrosoftのアカウントが必要になるので、事前に準備をしておくと、設定がスムーズかと思います。

設定を行った環境

Mac Catalina 10.15.6
Visual Studio Code August 2020 (version 1.49)

設定手順

  1. 左下の設定ボタン -> 「設定の同期をオンにする...」をクリックします。
    img1.png

  2. 「オンにする」ボタンをクリックします。この時点ではプレビュー機能でした。
    img2.png

  3. デバイス間で同期するデータを選択して、「サインインしてオンにする」ボタンをクリックします。
    同期するデータでは「設定、キーボードショートカット、ユーザースニペット、拡張機能、UIの状態」を選択することができます。
    img3.png

  4. 同期するアカウントを選択します。MicrosoftアカウントかGithubアカウントを選ぶことができます。
    ここでは、Githubアカウントを選択しました。
    img4.png

  5. ブラウザが起動し、以下の画面が表示されるので、緑色のボタン「Continue」をクリックします。
    img5.png

  6. 緑色のボタン「Authorize github」をクリックします。
    img6.png

  7. ダイアログの「Visual Studio Codeを開く」をクリックします。
    img7.png

  8. 「この拡張機能を再表示しません。」を選択して、「開く」ボタンをクリックします。
    img8.png

  9. ダイアログが閉じるので、設定が完了となります。
    img9.png

設定を行った後は

左下のアカウントボタンをクリックすると、「設定の同期がオン」と表示され、設定の同期のオン・オフが確認できます。また「設定の同期がオン」をクリックすると、以下のメニューが表示されますので、必要に応じて、設定の同期を操作してみてください。
img10.png

設定の同期に関するメニュー
img11.png

おわりに

会社と自宅でVisual Studio Codeを使用している方は参考に同期設定をしてみてみると良いかと思います。

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

MacのVisual Studio Codeでデバイス間の同期設定を試してみた

はじめに

仕事でもプライベートでもVisual Studio Codeを使っているのですが、できれば設定周りを同期したいと思っていました。
ふと、Visual Studio Codeの設定をみたところ、同期するための設定項目がありましたので、ここで紹介します。
同期の際には、GithubアカウントかMicrosoftのアカウントが必要になるので、事前に準備をしておくと、設定がスムーズかと思います。

設定を行った環境

Mac Catalina 10.15.6
Visual Studio Code August 2020 (version 1.49)

設定手順

  1. 左下の設定ボタン -> 「設定の同期をオンにする...」をクリックします。
    img1.png

  2. 「オンにする」ボタンをクリックします。この時点ではプレビュー機能でした。
    img2.png

  3. デバイス間で同期するデータを選択して、「サインインしてオンにする」ボタンをクリックします。
    同期するデータでは「設定、キーボードショートカット、ユーザースニペット、拡張機能、UIの状態」を選択することができます。
    img3.png

  4. 同期するアカウントを選択します。MicrosoftアカウントかGithubアカウントを選ぶことができます。
    ここでは、Githubアカウントを選択しました。
    img4.png

  5. ブラウザが起動し、以下の画面が表示されるので、緑色のボタン「Continue」をクリックします。
    img5.png

  6. 緑色のボタン「Authorize github」をクリックします。
    img6.png

  7. ダイアログの「Visual Studio Codeを開く」をクリックします。
    img7.png

  8. 「この拡張機能を再表示しません。」を選択して、「開く」ボタンをクリックします。
    img8.png

  9. ダイアログが閉じるので、設定が完了となります。
    img9.png

設定を行った後は

左下のアカウントボタンをクリックすると、「設定の同期がオン」と表示され、設定の同期のオン・オフが確認できます。また「設定の同期がオン」をクリックすると、以下のメニューが表示されますので、必要に応じて、設定の同期を操作してみてください。
img10.png

設定の同期に関するメニュー
img11.png

おわりに

会社と自宅でVisual Studio Codeを使用している方は参考に同期設定をしてみてみると良いかと思います。

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

【Android】VideoViewやExoPlayerを使って動画がうまく再生されない時は、動画形式を確認してみよう

背景

AndroidでVideoViewExoPlayerを使って動画再生機能を作ったはいいものの、なぜか動画がうまく再生されない。。
あのバージョンや端末だと問題なく再生できるのに、なぜかこのバージョンや端末だと再生がうまくいかない。
何故か黒みが出たり、表示が崩れたり、再生に失敗して何も表示されない。
そんなとき、ログを見て実装が怪しくないか疑うのもいいですが、もう一つ別のアプローチを紹介したいと思います。

その動画、Androidプラットフォームでサポートされてる?

Androidでは全ての動画形式がサポートされているわけではありません。
例えばmovファイルなど、再生できない動画も存在します。
公式サイトでは以下のようなガイドラインが用意されています。

サポートされているメディア形式  |  Android デベロッパー  |  Android Developers

ガイドラインを確認して、そもそもその動画形式がちゃんとサポートされているのか確認するのも大事です。
そうしないといつまでも原因がわからず詰んでしまうからです。
(遭遇した感じ、現象が発生したりしなかったりなど、かなりトリッキーでした。。)

動画形式の調べ方

動画形式を調べる方法の一つとして、FFmpegを利用するというのがあります。
(他にはMediainfoを利用するという手もあります)
導入方法はHomebrewで以下コマンドを叩くだけです。

brew install ffmpeg

動画形式を調べるコマンドは以下になります。

ffmpeg -i [入力ファイル名]

例えば、以下の動画をダウンロードして確認してみます。
https://bestvpn.org/html5demos/assets/dizzy.mp4

~ ffmpeg -i /Users/Hitoshi/Downloads/dizzy.mp4
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with Apple clang version 11.0.3 (clang-1103.0.32.62)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/Hitoshi/Downloads/dizzy.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isomavc1mp42
    creation_time   : 2009-10-25T14:18:33.000000Z
  Duration: 00:00:25.00, start: 0.000000, bitrate: 510 kb/s
    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 93 kb/s (default)
    Metadata:
      creation_time   : 2009-10-25T14:18:33.000000Z
      handler_name    : (C) 2007 Google Inc. v08.13.2007.
    Stream #0:1(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x360 [SAR 1:1 DAR 4:3], 413 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2009-10-25T14:18:33.000000Z
      handler_name    : (C) 2007 Google Inc. v08.13.2007.
At least one output file must be specified

ざっくり中を紐解いていくと、まず音声が、

Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 93 kb/s (default)

となっていて、形式が「AAC-LC」っぽいのでAndroidでサポートしている形式だな、というのが分かります。
また、動画の方も、

Stream #0:1(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x360 [SAR 1:1 DAR 4:3], 413 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)

となっていて、形式が「H.264 AVC Baseline Profile(BP)」っぽいのでこれもサポートしている形式だなというのが分かります。
他にも解像度やフレームレートなどもわかるので、これらの情報を照らし合わせていきながらサポートされているかどうか判断します。
少々泥臭くはなるかもしれませんが、動画形式がサポートされていたかどうかというアプローチで問題を切り分けることができます。
サポートされていなければ実装は問題なさそう、サポートされていれば実装に問題ありそう、といった具合ですね。

まとめ

Androidで動画がうまく再生されないとき、場合によっては動画形式がサポートされていない可能性もありますよ、という話と、動画形式の調べ方についてFFmpegを使ったやり方を簡単に紹介しました。

参考URL

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

Androidで動画がうまく再生されない時は、動画形式を確認してみよう

背景

AndroidでVideoViewExoPlayerを使って動画再生機能を作ったはいいものの、なぜか動画がうまく再生されない。。
あのバージョンや端末だと問題なく再生できるのに、なぜかこのバージョンや端末だと再生がうまくいかない。
何故か黒みが出たり、表示が崩れたり、再生に失敗して何も表示されない。
そんなとき、ログを見て実装が怪しくないか疑うのもいいですが、もう一つ別のアプローチを紹介したいと思います。

その動画、Androidプラットフォームでサポートされてる?

Androidでは全ての動画形式がサポートされているわけではありません。
例えばmovファイルなど、再生できない動画も存在します。
公式サイトでは以下のようなガイドラインが用意されています。

サポートされているメディア形式  |  Android デベロッパー  |  Android Developers

ガイドラインを確認して、そもそもその動画形式がちゃんとサポートされているのか確認するのも大事です。
そうしないといつまでも原因がわからず詰んでしまうからです。
(遭遇した感じ、現象が発生したりしなかったりなど、かなりトリッキーでした。。)

動画形式の調べ方

動画形式を調べる方法の一つとして、FFmpegを利用するというのがあります。
(他にはMediainfoを利用するという手もあります)
導入方法はHomebrewで以下コマンドを叩くだけです。

brew install ffmpeg

動画形式を調べるコマンドは以下になります。

ffmpeg -i [入力ファイル名]

例えば、以下の動画をダウンロードして確認してみます。
https://bestvpn.org/html5demos/assets/dizzy.mp4

~ ffmpeg -i /Users/Hitoshi/Downloads/dizzy.mp4
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with Apple clang version 11.0.3 (clang-1103.0.32.62)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.1 --enable-shared --enable-pthreads --enable-version3 --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libsoxr --enable-videotoolbox --disable-libjack --disable-indev=jack
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/Hitoshi/Downloads/dizzy.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isomavc1mp42
    creation_time   : 2009-10-25T14:18:33.000000Z
  Duration: 00:00:25.00, start: 0.000000, bitrate: 510 kb/s
    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 93 kb/s (default)
    Metadata:
      creation_time   : 2009-10-25T14:18:33.000000Z
      handler_name    : (C) 2007 Google Inc. v08.13.2007.
    Stream #0:1(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x360 [SAR 1:1 DAR 4:3], 413 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)
    Metadata:
      creation_time   : 2009-10-25T14:18:33.000000Z
      handler_name    : (C) 2007 Google Inc. v08.13.2007.
At least one output file must be specified

ざっくり中を紐解いていくと、まず音声が、

Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 93 kb/s (default)

となっていて、形式が「AAC-LC」っぽいのでAndroidでサポートしている形式だな、というのが分かります。
また、動画の方も、

Stream #0:1(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 480x360 [SAR 1:1 DAR 4:3], 413 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)

となっていて、形式が「H.264 AVC Baseline Profile(BP)」っぽいのでこれもサポートしている形式だなというのが分かります。
他にも解像度やフレームレートなどもわかるので、これらの情報を照らし合わせていきながらサポートされているかどうか判断します。
少々泥臭くはなるかもしれませんが、動画形式がサポートされていたかどうかというアプローチで問題を切り分けることができます。
サポートされていなければ実装は問題なさそう、サポートされていれば実装に問題ありそう、といった具合ですね。

まとめ

Androidで動画がうまく再生されないとき、場合によっては動画形式がサポートされていない可能性もありますよ、という話と、動画形式の調べ方についてFFmpegを使ったやり方を簡単に紹介しました。

参考URL

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