ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【VSCode】Live Shareの導入と簡単な使い方

 VSCodeにはLive Shareという拡張機能があります。

 これを使えば画面共有などが簡単にできるので、今回はその導入方法と簡単な使い方の説明をしていきます。

 では始めます。


1:Live Shareをインストールして使えるようにする
 VSCodeを立ち上げ、左側の拡張機能アイコンをクリックして検索欄に「live share」と入力して出てきた一番上のものをインストールします。
f:id:rikoubou:20190617162228p:plain

 次にLive Share Extension Packもインストールします。
f:id:rikoubou:20190617163100p:plain

 上記のインストールが終了したら、VSCodeを再起動させます。

 再起動後、VSCodeの左下の部分に「Live Share」という項目が追加されているのでここをクリックします。
f:id:rikoubou:20190620152323p:plain

 するとブラウザが立ち上がり、以下のようにMicrosoftのアカウントかGithubのアカウントでのサインインの画面になるのでどちらか選んでサインインします。
f:id:rikoubou:20190620152539p:plain

 Microsoftアカウントでサインインした場合は以下のような画面になるので「はい」のボタンをクリックします。
f:id:rikoubou:20190620152840p:plain

 サインインが完了したら以下のような画面になるのでブラウザを閉じます。
f:id:rikoubou:20190620152907p:plain

 これでVSCodeでLive Shareを使う準備は完了です。
 

2:Live Shareのセッションを開始する
 準備ができたのでLive Shareを実際に使っていきます。

 使い方としては最初にVSCodeの左下にある「Live Share」ボタンをクリックします。
 f:id:rikoubou:20190626171126p:plain

 初回起動時には以下のようなメッセージが出る場合があるので「OK」をクリックします。
f:id:rikoubou:20190626171308p:plain

 共有したいフォルダかワークスペースを選択して開きます。
f:id:rikoubou:20190626171552p:plain

 すると左下に以下のようなメッセージが出ます。この時点でセッション用URLがコピーされていますが、もう一度コピーしたい場合は「Copy Again」ボタンをクリックします。
f:id:rikoubou:20190626224025p:plain

 ちなみにセッション用URLは以下のようになっており、毎回別のURLになります。

https://prod.liveshare.vsengsaas.visualstudio.com/join?XXXXXXXXXXXXXXXXXXX

 このURLをチャットなりメールなりで共有したい人に伝えます。

 セッションに参加する人はこのURLを使って参加します。

 セッションを終了させたい場合は、以下の赤枠のボタンを押すと終了できます。
f:id:rikoubou:20190626224755p:plain


3:Live Shareのセッションに参加する
 2でセッションURLを共有された側は、そのURLのブラウザで開きます。

 するとページが開いて以下のようなポップアップが出るので「Live Share for VSCode.appを開く」をクリックします(画像はMacOSの場合)。
f:id:rikoubou:20190626225654p:plain

 VSCodeが立ち上がってしばらく待つとセッションに参加できます。


 以上がLive Shareの導入と簡単な使い方になります。

 セッション中は参加している全員がファイルを編集したり編集した箇所を確認できるので、リモートでのペアプログラミングもできてとても便利です。


おまけ:Live Shareのボタンを押してエラーになる場合
 Live Shareのボタンを押しても以下のようなエラーが出る場合があります。
f:id:rikoubou:20190626171744p:plain
 その場合は一度PC自体を再起動させてからVSCodeを立ち上げると直っている場合があります(自分は再起動でこのエラーが直りました)。
 

・参考資料

【映画鑑賞】海獣の子供の感想(ネタバレあり)

www.youtube.com

 STUDIO4℃と米津玄師の主題歌で話題の映画「海獣の子供」についての個人的な感想をつらつらを書いていこうかと思います(ちなみにこの記事を書いている時点で2回鑑賞しています)。また原作は未読です。

 基本的には「ネタバレを気にしない」方向でいくので注意してください。

 この記事で取り上げている画像は全て参考資料にある予告などからのキャプチャになります。

 では始めます。



1:作品の見方
 CMでは一般向けのエンタメ作品のような印象を受けますが、実際に鑑賞するとどちらかといえばアートに近い作品だと思う人が多いかと思います。
 一見すると難しいかもしれませんが作品のテーマだったり大事にしている部分については全てセリフで説明されているので、それらを拾っていけばなんとなくでも「こういう作品なんだな」と理解はできるかと思います。


2:メタ構造
 基本的にこの海獣の子供という作品はメタ構造になっています。
 祭りの時にデデのセリフであった「生物も宇宙も同じ、地球は子宮で隕石は精子」という言葉のように、主人公の琉花の日常と宇宙も繋がっているような構造になっています。そしてそれは琉花だけでなく、全ての生命についても同列に語られています。
 以下のシーンではクジラの白い斑点一つ一つが銀河のようにも見えます。作中にも「人間は宇宙」というような会話もあり、これは演出的にも生命の中に銀河があることを示していると思います。
f:id:rikoubou:20190623203932p:plain

 また1つの物事も2つの視点から描かれてもいます。
 死ぬことは生まれること、見つけることは見つけられること、食べることは受け継ぐこと。
 作中で「見つけて欲しいから光る」という内容のセリフが出てきますが、光ることで他の生物に気づかれ食べられてしまうこともあります。見つけられるということは、逆に食べられてしまうというリスクもあるということです。

 琉花が巨大クジラに食べられた体内で、タツノオトシゴの光を食べようと魚が群がってきたシーンもあります。
f:id:rikoubou:20190623205431p:plain

 もはや人でなくなった状態の海を目で見つけて、海が生み出す銀河を食べるシーンもあります。
f:id:rikoubou:20190623210759p:plain
f:id:rikoubou:20190623210056p:plain

 食べた者は食べられた者の命を受け継ぐこと。だからこそ作中に出てくる食事シーンは印象的に描かれており、祭りの最後で海の欠片である銀河を手にした琉花はそれを飲み込んだのだと思います。
f:id:rikoubou:20190623205915p:plain

 連綿と受け継がれる生命の壮大な物語の最後は、琉花の日常に戻ってきます。
 デデの「あなたはあなたで良い」という言葉を受け取った琉花は、怪我を負わせた相手と坂を登って向き合います。これは琉花も相手も「互いの気持ちに気づいた」からこそ、球を投げ返すというコミュニケーションに繋がったのだと思います。


3:テーマ
・「海で起きるほとんどの事は、誰にも気づかれない」
f:id:rikoubou:20190623201124p:plain
 予告に出てくるこの言葉もテーマの一つになっていると思います。
 誰にも気づかれない中でも海で行われている生命たちの活動は確実に存在しています。主人公の琉花も自分の気持ちが他人に気づいてもらえないことに悩みます。琉花は海と空と出会って自分と世界との関係に踏み込んでいくわけですが、
 琉花が水族館で海と出会うシーンでは、最初は海が映像に映っていません。琉花が「誰!?」とちゃんと相手を認識した時に初めて画面に海の姿が映ります。シュレディンガーの猫みたいに「琉花が海の存在に気づいた」から海が存在できたという映像的な演出なのではないかと思います。
「気づく、見つける」ことで初めて「存在」することがわかる。そしてそれを知ろう、理解しようとする、いわば人間だけでなく他の生命や宇宙といったものとのコミュニケーションも描いているのではないかと思います。

・「宇宙の内の1割しか人間は理解できていない」
 こちらは作中に出てきたセリフです。同じように「言葉にすると本来の気持ちがなくなってしまう、表現できない」というようなセリフも出てきました。
 風の音もクジラの音も気持ちそのままを伝えようとしており、言葉だけでは伝えられないものを伝えようとするいわばコミュニケーションの物語でもあると思っています。「見つけて欲しいから光る」というのも一種のコミュニケーションであり、繋がりたいから「存在」に「気づいて」欲しいのです。
 だからこそ琉花は冒頭で怪我を負わせた選手やチームメイト、先生、両親とのディスコミュニケーションから始まっており、海と出会うまでは光の当たらない日陰に隠れるような行動をしています。しかし最後には怪我を負わせた相手にちゃんとボールを投げ返すコミュニケーションをするようにまでなっています。

・「生命の衝動を瞠目せよ」
f:id:rikoubou:20190623201240p:plain
 予告にあるように宇宙の誕生までを想像させる祭りの映像はとにかく圧巻で、それこそ主題歌にある「大切なことは言葉にならない」映像の連続です。セリフはあまりなく抽象的な映像表現が多いですが、受精だったり受精卵の細胞分裂だったりと割とわかりやすい表現も多く取り入れられていました。
 生命が生まれるのと同じように宇宙や銀河も生まれている、そう予感させる壮大な映像が繰り広げられるその様はまさに生命の衝動と言える体験でした。
 そしてエンドロール後に描かれる琉花が母親と赤ちゃんのへその緒を切るシーン。「命を絶つ音がした」というセリフは母親のお腹の中という海から赤ちゃんを断ち切り(死)、新たに肺呼吸をする陸上の生命として産み落とされた(生)ということを表していると思います。出産と赤ちゃんの産声も身近な生命の衝動なのです。


4:その他気づいたところ
・琉花の膝の怪我
 冒頭で琉花も膝に傷を負ってしまい、それから何度か膝の傷に注目するカットが出てきます。これは琉花の心の傷も表しているような気がします。
 海に誘われて見た光る流星のシーンから少しずつ膝の傷が治っていき、空と出会う頃には完全に膝の傷が治っています。海と陸に出会うことで琉花の心の傷も癒えているという表現なのかもしれません。

・琉花という名前
 原作未読なので申し訳ないのですが、海と空が出てくるのにその間である「陸」が出てこないのはおかしいと思っていました。琉花という名前は「陸(りく)」を50音表で見て「り」を一つ下げて「る」、「く」を二つ上げて「か」にして女の子っぽい名前にしたのかな、とか思いました。


 以上、長々と書いていたら感想なのかなんなのかよくわからなくなってしまいました。

 とにかく感想を一言では言い表せないほどの内容と表現がものすごい映像で迫ってくる作品でした。個人的にはなんども見直したくなる作品だったので早くメディア化して欲しいですね。


・参考資料

【ESP-32/Arduino】Windows10にESP-32の環境を構築する

 以前の記事でMacOSにESP-32の開発環境は作成しました。

 今回はWindows10に同じようにESP-32の環境を構築してみた備忘録になります。

 使用するESP32のボードは以下という前提で進めます。


 では始めます。


1:Arduino IDEをインストールする

 上記のページからArduino IDEをダウンロードしてインストールします。
f:id:rikoubou:20190619152057p:plain


2:Arduino IDEでESP-32の設定を行う
 あとの手順は以下のページにある通りに進めていけばよいです。

 
 Stable release linkと書かれた部分のリンク(赤枠の部分のURL)をコピーしておきます(2019/10/21:リンクが変更になっていたので修正)。
f:id:rikoubou:20191021143014p:plain

 Arduino IDEを起動させて「ファイル」→「環境設定」を選択します。
f:id:rikoubou:20190619152933p:plain

 赤枠部分にコピーしたURLをペーストしてOKボタンをクリックします(2019/10/21:リンクが変更になっていたので修正)。
f:id:rikoubou:20191021143441p:plain

 その後「ツール」→「ボード」→「ボードマネージャ」を選択します。
f:id:rikoubou:20190619153714p:plain

 検索欄に「esp32」と入力して出てきたものをインストールします。
f:id:rikoubou:20190619153916p:plain

 INSTALLEDと表示されていればインストールが完了しています。
f:id:rikoubou:20190619154102p:plain


3:ESP-32にテストスケッチを書き込む
 2までの準備ができたら、USBケーブルを使ってESP32-DevKitとPCを接続します。

 Arduino IDEの「ツール」→「ボード」→「ESP32 Dev Module」を選択します。
f:id:rikoubou:20190619155757p:plain

 その後以下のようにアップロードスピードを設定し、接続しているESP32-DevKitのシリアルポートを選択します。
 f:id:rikoubou:20190619155713p:plain

 以下のテストスケッチをコピペして保存します。

・serial_test.ino

void setup() {
  Serial.begin(115200);
}

void loop() {
  Serial.println("test");
  delay(1000);
}

 左上の矢印のボタンをクリックしてESP32-DevKitにスケッチを書き込みます。
f:id:rikoubou:20190619160435p:plain

 書き込みが終了したら左上のシリアルモニタのボタンをクリックします。
f:id:rikoubou:20190619160815p:plain

 アップロードスピードと同じ値に設定すると、1秒ごとにtestという文字列が表示されます。
f:id:rikoubou:20190619161016p:plain


 以上がWindows10でのESP-32の環境を構築する方法です。

 MacOSの時よりもスケッチを書き込む時間がかかるのがちょっと気になりました…。


・参考資料

【python】Windowsにdlibをインストールする

 以前の記事でMacにdlibをインストールしました。

 今回はWindowsでもdlibのインストールをやってみたのでその備忘録です。

 では始めます。


0:前提条件
 以下の記事を参考にしてWindowspythonOpenCVを入れて使える状態にしておきます。
rikoubou.hatenablog.com


1:CMakeのインストール
 最初にCMakeをインストールします。

 CMakeのダウンロードページからインストーラを選択してダウンロードします(ここでは3.15.0の64bit)。
f:id:rikoubou:20190617151715p:plain

 インストーラを起動させて指示通りにインストールしていけばOKです。

 CMakeがインストールできたかはPowerShellを立ち上げ、以下のコマンドを入力します。

$ cmake --version

 エラーなくCMakeのバージョンが表示されればインストールできています。


2:Visual Studioのインストール
 次にCMakeのバージョンに合ったVisual Studioコンパイラを入れる必要があります。
 1でCMake 3.15.0をインストールしていた場合は、Visual Studio 2019のコンパイラが必要になります。

 個人利用なのでCommunityを選択してダウンロードします。
f:id:rikoubou:20190617153134p:plain

 インストーラを起動させて色々やっていくと途中で以下のような画面になりますが、コンパイラさえ入ればいいので「C++によるデスクトップ開発」にのみチェックを入れてインストールします。
f:id:rikoubou:20190617153852p:plain

 これでVisual Studio 2019のコンパイラが入ります。


3:pipを使ってdlibをインストールする
 ようやくdlibをインストールする準備ができたのでPowerShellを立ち上げて、以下のpipコマンドでdlibをインストールします。

$ pip install dlib

 インストールにしばらく時間がかかりますが、エラーなく終了していれば大丈夫です。

 PowerShellを立ち上げpythonでimportしてエラーが出なければちゃんとインストールできています。

$ python
>>> import dlib # ここでエラーがでなければOK
>>> exit()


おまけ:自分が嵌ったエラー
 dlibのインストールコマンドでエラーになる場合があります。
 自分の場合はCMakeもVisual Studioも入れているのに以下のようなエラーが出ました。

Collecting dlib
  Using cached https://files.pythonhosted.org/packages/05/57/e8a8caa3c89a27f80bc78da39c423e2553f482a3705adc619176a3a24b36/dlib-19.17.0.tar.gz
Installing collected packages: dlib
  Running setup.py install for dlib ... error
--- 中略 ---
    -- Building for: Visual Studio 16 2019
    CMake Warning (dev) in CMakeLists.txt:
      No project() command is present.  The top-level CMakeLists.txt file must
      contain a literal, direct call to the project() command.  Add a line of
      code such as
    
        project(ProjectName)
    
      near the top of the file, but after cmake_minimum_required().
    
      CMake is pretending there is a "project(Project)" command on the first
      line.
    This warning is for project developers.  Use -Wno-dev to suppress it.
--- 中略 ---
    -- Found PythonInterp: C:/xxxxx/Python/Python37-32/python.exe (found version "3.7.3")
    CMake Error at C:/xxxxx/pip-install-ykd_q9zp/dlib/dlib/external/pybind11/tools/FindPythonLibsNew.cmake:122 (message):
      Python config failure: Python is 32-bit, chosen compiler is 64-bit
--- 以下略 ---

 このエラーの中で重要なのは「Python config failure: Python is 32-bit, chosen compiler is 64-bit」の部分で、要は「Pythonは32bitだけどコンパイラは64bitなのでエラー」ということです。

 pythonのインストール時に64bitか32bitかを確認しておく必要があります。
 もちろんCMakeのインストール時にも64bitか32bitかを確認して合わせるようにしましょう。


 以上がWindowsにdlibをインストールする方法です。

 Macの時とは違ってVisual Studioのインストールが必要だったりと色々と大変でした…。


・参考資料

【python/OpenCV】Windows10にpythonとOpenCVの環境を構築する

 今まで以下のようにDebianMacOSでのOpenCVの環境構築をやってきました。

 今回はタイトルにある通りWindows10でもpythonOpenCVを入れるところまでやってみたのでその備忘録です。

 では始めます。


1:pythonのインストール

※2019/06/17:色々間違っていたので修正しました。

 まずは公式ページからpythonをインストールします。

 公式ページのDownloadのところからWindowsを選択します。
f:id:rikoubou:20190617144610p:plain

 Downloadのページにある中からバージョンと32bitか64bitかを選んでダウンロードします(今回は3.7.3の64bitを選択しました)。
f:id:rikoubou:20190617144834p:plain

 ダウンロードしたインストーラを起動させると以下のような画面になるので、左下のチェックボックス2つにチェックを入れます。
f:id:rikoubou:20190617145251p:plain

 あとはインストーラーの指示に従っていけばpythonのインストールは終了します。

 インストールが終了したらPower Shellを起動させて、以下のバージョン確認コマンドでエラーがなければインストールが完了しています。

$ python -V

 エラーが出た場合はチェックボックスの両方にチェックが入ってなかった(環境変数のパス設定をしていない)可能性が高いので、一度アンインストールしてからやり直すと良いかと思います。


2:pipの最新化
 実は公式のインストーラにはpipも含まれています。なのでOpenCVなどもpipで入れることができます。

 はじめに以下のコマンドでpipのバージョンを確認します。

$ pip --version

 最新化されてない場合があるので、以下のコマンドでpipを最新化します。

$ python -m pip install --upgrade pip

 もう一度pipのバージョン確認のコマンドを実行してバージョンアップされていることを確認します。


3:OpenCVのインストール
 pythonとpipが入ったので、以下のコマンドでOpenCVをインストールします。

拡張機能なしの場合

$ pip install opencv-python

拡張機能ありの場合

$ pip install opencv-contrib-python

 上記のどちらかのコマンドを実行したあと、Power Shellからpythonを起動させてimport cv2をやってエラーが出なければインストールできています。

$ python
>>> import cv2
>>> exit()


 以上がWindows10でpythonOpenCVの環境を構築する方法です。

 思っていた以上に環境構築が楽だったので少し感動しました。


おまけ:その他pipでインストールしたもの
・matplotlib

$ pip install matplotlib


・参考資料

【VSCode】ファイルを比較して差分表示させる方法

 VSCodeを使っていて「ファイルの差分を表示させたい」と思って調べたら簡単にできたのでそのメモです。


・ファイル差分表示方法
 最初に比較したいファイルをVSCodeで開いておきます。

 メニューの「表示」→「コマンドパレット」を選択します。
f:id:rikoubou:20190609144609p:plain

 入力欄に「>compare」と入力して一番最初に出てくる「Compare Active File With...」を選択します。
f:id:rikoubou:20190609144754p:plain

 比較したい対象のファイルを選択します。(ここではsave.csvとnew.csvを比較)
f:id:rikoubou:20190609145034p:plain

 すると結果画面で差分のあるところが色付きで表示されます。
f:id:rikoubou:20190609145327p:plain


 以上がVSCodeでファイルの差分を表示させる方法です。

 デフォルトでこのような機能があるのはとても便利ですね。


・参考資料

【git】よく使うコマンド集

 普段からgitを使っているのですが、そういえばgitについての記事を一切書いていないことに気がついたので今回は備忘録として自分がよく使うコマンドをまとめておこうと思った次第です。

 ほぼコマンドを羅列していくだけになります。

 では始めます。


■コマンド

  • gitの設定を確認
$ git config -l [スコープ名]
スコープ名 優先度 説明
local 特定のリポジトリにおける設定
global 現在のユーザ共通の設定
system システム共通の設定

・例:現在ユーザの共通の設定を確認

$ git config -l --global
  • gitの設定を変更
$ git config [スコープ名] [対象名] [設定値]

・例:現在ユーザの改行設定を一切変更しないモードに変更

$ git config --global core.autocrlf false
$ git init
$ git clone [リモートリポジトリのアドレス]
  • 変更のあったファイル一覧を確認
$ git status
  • ファイル/フォルダ名を変更
$ git mv [変更前] [変更後]
  • ブランチ一覧を確認
$ git branch # ローカルブランチの一覧
$ git branch -a # リモートブランチの一覧
  • ローカルブランチの新規作成
$ git branch [ブランチ名]
  • ローカルブランチの削除
$ git branch -d [ブランチ名]
  • ローカルブランチの削除(強制)
$ git branch -D [ブランチ名]
  • ローカルブランチの切り替え
$ git checkout [ブランチ名]
  • ローカルブランチを切り替えてリモートブランチの内容にする
$ git checkout -b [ローカルブランチ名] [リモートブランチ名]

・例:リモートブランチ名がdevの場合

$ git checkout -b dev origin/dev

(※ちなみにローカルブランチも同じ方法でコピーできる)

  • 変更差分を確認
$ git diff [ファイル名] # ファイル単体の差分
$ git diff [ローカルリポジトリ名] # ローカルリポジトリの最新との差分
  • 差分のあったファイルをコミットできるようにする
$ git add [ファイルパス] # ファイルパスを「folder/*」のように指定も可能
$ git add -A # 差分のあるファイル全て
  • git addしたファイルをコミット
$ git commit -m "コミットコメント" # ""の文字列部分でコミットコメントをつけられる
  • コミットログの確認
$ git log
  • ローカルブランチの直前コミットを取り消してコミット前の状態にする
$ git reset --hard HEAD^
  • 以前のコミットの状態に戻す(未addの場合)
$ git checkout [ファイル名]
  • 以前のコミットの状態に戻す(add済の場合)
$ git reset HEAD [ファイル名]
$ git checkout [ファイル名]
  • コミット内容をリモートブランチにプッシュ
$ git push -u origin [リモートブランチ名] # 現在のローカルブランチのコミット内容をリモートブランチに追加
  • ローカルコミット内容をリモートブランチに強制プッシュ(強制上書き)
$ git push -f origin [リモートブランチ名]

(※コンフリクトやログの内容など、すべて関係なくローカルの内容で強制上書きされる)

  • ブランチのマージ
$ git merge [対象ローカルブランチ名] # 現在のローカルブランチに対象のローカルブランチをマージ
$ git merge [マージされるローカルブランチ名] [対象ローカルブランチ名] # マージされるローカルブランチに対象ローカルブランチをマージ

※コンフリクトが起こった場合はこちらのページを参考に解消する。

  • 現在のローカルブランチをリモートブランチの最新のものに更新
$ git pull
  • ローカルブランチの内容をリモートブランチで強制上書き
$ git fetch origin
$ git reset --hard [リモートブランチ名]
$ git pull # リモートブランチの一番最初の状態なのでgit pullで最新化
  • タグ一覧を確認
$ git tag
  • 既存のコミットに対してtagを作成
$ git tag -a [タグ名] -m [コメント] [コミットID]

・例:コミットIDがaaaa1111のものにタグ名として「v0.1」をつける場合

$ git tag -a v0.1 -m 'コメント内容です' aaaa1111
  • タグのpush
$ git push origin [タグ名]
  • pushしてないタグの削除
$ git tag -d [タグ名]

(※pushしたタグは原則削除はしない)

  • Gitのアップデート(Windowsの場合)
$ git update-git-for-windows


 以上が個人的によく使うコマンド一覧です。

 特にローカルブランチの強制上書きなどは時々必要になったりするので、知っておくとよいと思います。


・参考資料