2018年7月20日金曜日

VS Codeを持ち運ぶには(ポータブルモード)

Visual Studio Code(以下、VS Code)はバージョン1.25から「ポータブルモード」をサポートするようになった。この機能を利用して、自分が普段使っている設定のまま、VS CodeUSBメモリやファイル共有を利用して、他のマシンでも実行する方法を説明する。

VS Codeを持ち運ぶための手順

  1. VS Codeダウンロードページから、WindowsではZIP形式、Linuxでは.tar.gz形式で配布されているVS Codeを入手する。macOSではZIP形式で配布されている通常のパッケージを入手する
  2. ZIPファイル/.tar.gzファイルを(任意のフォルダに)展開する
  3. 設定ファイルや拡張機能を保存する「dataフォルダ」を作成する
  4. dataフォルダに、自分の環境を復元するのに必要なファイルをコピーする
  5. ポータブルモードのVS Codeが入ったフォルダをUSBメモリやファイル共有に配置する


ポータブルモードとは

 「ポータブルモード」とは、VS Codeの実行を含むトップレベルのフォルダ以下(と、macOSではトップレベルのフォルダと同じレベルにあるdataフォルダ)に、その実行に必要な全てのファイルを含んだVS Codeのこと。

 ポータブルモードのVS Codeをセットアップしておけば、そのフォルダをUSBメモリにコピーしたり、ファイル共有を利用したりするだけで、VS Codeをインストールしていない環境でもそこから「普段、自分が使っている構成のVS Code」を実行できる。他者の環境でちょっとした作業をしなければならないといったときに、USBメモリに普段使いのVS Codeを入れておくだけで、いつでもいつもの使い勝手で作業できるのは少しうれしい。

ポータブルモードのVS Codeをセットアップする

 ポータブルモードのVS Codeをセットアップするには、まずZIPファイルとして配布されているVS Codeを手に入れる(Linuxでは.tar.gzファイルをダウンロードする。macOSZIP形式のパッケージのみが配布されているので、いつも通りにダウンロードするだけでよい)。

 
WindowsLinuxでは、VS Codeのダウンロードページにある[.zip]あるいは[.tar.gz]のリンクをクリック(赤枠内)


 ZIPファイル(もしくは.tar.gzファイル)をダウンロードしたら、これを展開する。Windows版であれば、次のように多くのファイルが目に見える形で展開される(Linuxも同様)。Windowsではあらかじめ「ブロックを解除」しておこう。

 
Windows用のZIPファイルを展開したところ


 macOSFinderでは「Visual Studio Code.app」ファイルが展開される。

 
macOS用のZIPファイルを展開したところ


 macOSでは、この後でコンソールから「xattr -dr com.apple.quarantine Visual\ Studio\ Code.app」コマンドを実行しておく(これを実行しないとポータブルモードで動作しない。あるいは起動しない)。

 ダウンロードと展開が済んだら、WindowsLinuxでは、展開先のフォルダに「data」という名前のフォルダを作成する。

 
dataフォルダを作成


 macOSでは、展開先のフォルダと同じレベルのフォルダに「code-portable-data」という名前のフォルダを作成する。

 
code-portable-dataフォルダを作成


 dataフォルダ(code-portable-dataフォルダ)には、VS Codeのユーザーデータ(セッション情報や各種キャッシュファイルなど)や拡張機能など、VS Codeを使っている上で作成された情報やカスタマイズした情報を保存しておくためのもの。WindowsLinuxでは展開先のフォルダ内にこれを置くが、macOSでは「Visual Studio Code.app」ファイルがあるフォルダに置く必要があることと、「code-portable-data」という名前になることには注意しよう。以下では、このフォルダをdataフォルダとして記述していく。

 dataフォルダが空のままで、ポータブルモードのVS Codeを起動すると、次のようになる。

 
ポータブルモードのVS Codeと、通常のVS Codeを起動したところ


 手前の黒いバックグラウンドのウィンドウがポータブルモードのVS Codeで、奥の白いバックグラウンドのウィンドウが通常のVS Codeだ(筆者の環境)。dataフォルダには何も設定情報を含めていないので、ポータブルモードのVS Codeは英語表示で背景が黒くなっている(デフォルトの「Default Dark+」テーマが使われている)。両者の[拡張機能]ビューを見ると分かるが、ポータブルモードには拡張機能も入っていない(そのため、日本語をサポートする言語パック拡張機能のインストールが推奨されている)。

 そこで、自分が普段使用しているVS Codeのユーザーデータや拡張機能を(必要に応じて)dataフォルダにコピーしていく必要がある。

ユーザーデータと拡張機能のコピー

 まずユーザーデータは、OSごとに以下のフォルダとなっているので、これらをdetaフォルダにコピーして、フォルダ名を「user-data」に変更する。

  • Windows%APPDATA%\Codeフォルダ
    例:「C:\Users\<ユーザー名>\AppData\Roaming\Code」フォルダ
  • Linux$HOME/.config/Codeフォルダ
    例:「/home/<ユーザー名>/.config/Code」フォルダ
  • macOS$HOME/Library/Application Support/Codeフォルダ
    例:「/Users/shinjk/Library/Application Support/Code」フォルダ

 VS Codeにインストール済みの拡張機能は上記フォルダとは別の場所にあるので、以下のフォルダを同じくdataフォルダにコピーする(こちらはフォルダ名を変更する必要はない)。

  • Windows%USERPROFILE%\.vscode\extensionsフォルダ
    例:「C:\Users\<ユーザー名>\.vscode\extensions」フォルダ
  • Linux~/.vscode/extensionsフォルダ
    例:「/home/<ユーザー名>/.vscode/extensions」フォルダ
  • macOS~/.vscode/extensionsフォルダ
    例:「/Users/<ユーザー名>/.vscode/extensions」フォルダ

 インストールしている拡張機能の数にもよるが、コピーには時間がかかるかもしれない。

 結果、dataフォルダには「user-data」と「extensions」の2つのフォルダがあり、その下にそれぞれユーザーデータと拡張機能が含まれるようになる。以下に、入手したZIPファイルを「ダウンロード」フォルダで展開して、dataフォルダを作成し、そこに上記の2つのフォルダを追加したところを示す(Windows版の例)。

 
dataフォルダの内容


 以上で、ポータブルモードのVS Codeに普段使いのVS Codeのユーザーデータと拡張機能が追加された。この状態で、ポータブルモードのVS Codeを起動して、ユーザー設定の編集画面を表示したところを以下に示す。

 
ポータブルモードのVS Codeでユーザー設定を編集しているところ
下の画像はsettings.jsonファイルのパスにズームしたところ。通常のsettings.jsonファイルのパスとは異なっているところに注目されたい。


 [エクスプローラー]ビューでポップアップされているファイルパスを見ると分かる通り、通常の異なる位置(「ダウンロード」フォルダに展開したポータブルモードのVS Codeuser-dataフォルダのサブフォルダ)にあるsettings.jsonファイルが開かれている。このことから想像できるが、ポータブルモードのVS Codeでは、data\user-data\Userフォルダにユーザー設定を記述するsettings.jsonファイル、キーボードショートカットを記述するkeybindings.jsonファイル、表示言語を設定するlocale.jsonファイルが保存されている。ポータブルモードで設定を変更すると、これらのファイルにその情報が書き込まれるようになる。

 なお、dataフォルダは「ポータブル」だ。つまり、VS Codeのバージョンが上がったときには、新バージョンのZIPファイル(.tar.gzファイル)をダウンロード/展開して、以前のdataフォルダをコピーするだけで、新バージョンのポータブル版VS Codeの設定が完了する。とはいえ、普段使いのVS Codeでは設定を変更したり、拡張機能をインストールしたりといったことが(ある程度)頻繁には行われるであろうから、2つのVS Codeの間で設定の同期を取るのは面倒な作業となるかもしれない。

 後は、これをUSBメモリにコピーしたり、ファイル共有でアクセスできるようにしたり、あるいはDropboxなどのサービスに配置したりしておけば、自分の好みに設定が完了しているVS Codeをいつでも使えるようになるはずだ。


 「ポータブルモード」や「ポータブルアプリ」といった語は日本ではあまりなじみがないかもしれないが、PortableApps.comなど、「ポータブル」なアプリを集めた著名なサイトもある。VS Code以外にも、Webブラウザのポータブル版など、必要最小限のアプリをこうしたサイトから入手して、まとめておくと、普段とは異なる環境で作業するときに役立つだろう。

 

2018年7月17日火曜日

大前研一氏が語るAI、「使いこなせない企業は淘汰される」

 技術商社のマクニカは2018年7月12〜13日、ユーザーイベント「Macnica Networks DAY 2018」を開催。その2日目にビジネス・ブレークスルー 代表取締役社長で、ビジネス・ブレークスルー大学の学長である大前研一氏が「AIと日本経済再生」をテーマに基調講演を行った。

AIの限界と可能性
 大前氏はAIの本質として「基本的にはビッグデータのマイニングと言い換えることができる。そのため、データ分析をプログラムする人のインテリジェンスによって、結果は影響を受ける。完全に想定外のことに対して新たな解を発見することはない」と述べる。

 ただ、AIは発展を続けている。現在のAIブームは第3次だとされているが「以前のAIに対して、機械学習や深層学習によって新たなフェーズに入った。IoT(モノのインターネット)機器などを手足とし、脳の領域をAIが担うようになる」(大前氏)とし、企業経営の競争軸にもAIが大きな影響をもたらしつつあることを指摘する。

 AIの応用分野は急速に拡大しており、製造業の在り方や自動車産業などを大きく変えつつある。特に「MaaS(Mobility-as-a-Service)」の実現に向けて動き出す中、自動車メーカーや配車サービス企業などが一斉に市場獲得に向けて動き始めている状況だ。大前氏は「配車サービスにも需要予測や経路予測などでAIの活用が欠かせない。配車サービスが重要になってくるのは、自動車メーカーは直接ユーザーにつながっていないという課題があるからだ。この配車サービスなどが定着した時にエンドユーザーを握っているのは自動車メーカーではなく配車サービス企業になることがあり得る」と大前氏は強調する。

 さらにこれらのシェアリングサービスが広がり、自動運転化などが進むとクルマの数は今までの10分の1しか必要なくなるかもしれない。産業構造が大きく変わる」と指摘している。

 ただ、この領域については「まだ誰が勝者になるのかは全く分からない状況だ。自動車メーカーなのか、レンタカー業者なのか、配車サービス業者なのか、駐車場業者なのか。これからの取り組みで全てが変わってくる」と大前氏は語る。

AI時代に日本が取るべき方策
 「ここ数年で世界に最も大きな影響をもたらした技術的な進化は『モバイル』だったが、その競争軸がAIへと移ろうとしている。業界や国境を越えてこの流れが加速し、AIセントリックな時代が始まろうとしている。経営にも大きなインパクトを与え始めている。今後はAIを有効に活用した企業が、そうではない企業を打ち倒す時代が来るだろう」と大前氏は競争軸を変える大きな変化だと訴える。

 自動運転や、監視システム、医療、スマートファクトリー、金融などさまざまな業界でAIへの投資が進んでいる。企業の時価総額のグローバルトップ企業を見ても「2007年のトップ10企業にはIT系ではマイクロソフト1社が入っていただけだった。しかし2017年には、7社が入っている。さらに中国勢が大きく躍進しており、日本企業の存在感は著しく低下している」と大前氏は警鐘を鳴らす。

 これらのグローバルトップ企業はほぼ全てがAIへの投資を加速させているが、特に大前氏が訴えるのが「中国の脅威」である。「国策の影響も当然あるが、中国IT企業はAI産業やロボット産業に積極的な投資を進めている。AI特許出願数も既に日本をはるかにしのぐ勢いとなっている。米国のトップ企業であっても中国の数社に対しては、遅れてきている面もある。日本としても対応策を考える必要がある」と大前氏は訴えている。

 日本企業の競争力については「日本は1世代前まではAIの領域では世界的にも強い面があったが、現在は企業としてのスタープレーヤーはいなくなってしまった」と大前氏は技術的に劣勢にあると切り捨てる。その中で「AIはあくまでも人が理解できるデータをマイニングする技術であるので、分からないことを考えてコンセプトを出すのは人間の仕事だ。これらを組み合わせて価値を生み出すことが重要だ」と大前氏は述べている。

 その上で「企業は『全社的なAIプロジェクト』などの形でAIの活用を進めるのではなく、機能別組織において個々にAIを活用できるようにシフトしていくべきだ」とAI活用のポイントについて訴えていた。