torutkのブログ

ソフトウェア・エンジニアのブログ

GPSの高度と標高

GPSの高度と標高

GPSを使った測位では、地球を回転楕円体(WGS84回転楕円体)としたときの緯度・経度および高度を取得します。

ここで、GPS測位で得られる高度は回転楕円体面からの距離として算出されるので、実際の標高(海面からの距離)とは異なります。回転楕円体の表面と海面(ジオイド面)とは場所によりおよそプラスマイナス100mの範囲で差異があります。

東京付近では、回転楕円体表面から40mほど高い位置にジオイド面があります。したがって、GPSの高度から40mを減算すると標高(日本の標高は、東京湾の平均海面を0mとしたときの高さ)となります。

ジオイド高は、国土地理院ジオイド高計算サイトで計算させることができます。
https://vldb.gsi.go.jp/sokuchi/surveycalc/geoid/calcgh/calcframe.html

JDKのアップデート(2019年4月)

Java SE Development (JDK) の2019年4月アップデート

JDKは、現在年に2回のバージョンアップと年に4回のセキュリティとバグ修正のアップデートが行われています。バージョンアップの時期は3月と9月、アップデートは1月、4月、7月、および10月です。

そして、この4月のアップデートでは和暦対応(来月から元号が「令和」となる対応)も含まれています。

JDKのバイナリは現在、Oracleから提供されるOracle JDKとOpenJDKの他、AdoptOpenJDK、Zulu、Liberica、Red HatAmazon Correttoなどがあります。

Oracle JDK

Oracle JDK は、次のアップデートが公開されています。

Oracle JDKJava SE 8は、2019年1月で無償提供するアップデートは終了となっていますが、今回は Oracle Java SE OTNライセンス(Oracle Technology License Agreement for Java SE)の範囲で無償提供されました。(OTNライセンスでは、個人利用・開発用途で無償利用可)

Oracle JDKJava SE 11 はLTS(長期サポート版)なのでJava SE 12がリリースされた後も更新版が提供されています。一方、非LTSのJava SE 9、Java SE 10はアップデートは提供されていません。Java SE 11は商用ライセンス(Java SE Subscription)か若しくはOTNライセンスでの提供です。

OTNのダウンロードサイトからOracle JDKJava SE 11.0.3をダウンロードしようとすると、「Oracleプロファイルへのサインイン」が要求されました。Java SE 12.0.1のダウンロードでは要求されませんでした。無償で登録できますが、OTNアカウントと同じ模様です。

Oracle JDKJava SE 12 は非LTSで、次のJava SE 13がリリースされるまでの期間アップデートが提供される予定です。

Oracle OpenJDK

Oracleが無償提供するOpenJDKは、最新バージョンのJava SE 12のアップデートが提供されています。

AdoptOpenJDK

AdoptOpenJDKファウンデーションが無償提供するOpenJDKは、4月20日時点で次のアップデートが提供されています。

  • OpenJDK 8u212
  • OpenJDK 11.0.3

Zulu JDK

Azul Systemsが提供するOpenJDKは4月20日時点で次のアップデートが提供されています。

  • Zulu OpenJDK 7u222
  • Zulu OpenJDK 8u212
  • Zulu OpenJDK 11.0.3
  • Zulu OpenJDK 12.0.1

ZuluFX JDK

Azul Systemsが提供するOpenJDK(JavaFX同梱版)は、4月20日時点ではまだアップデートが提供されていません。前回(2019年1月のアップデート)も少し遅くリリースされたので、推測では1か月以内にはリリースされるかと思われます。

5月4日時点で次がリリースされています。

  • ZuluFX 8u212
  • ZuluFX 11.0.3

Liberica JDK

BellSoft社が提供するOpenJDK(JavaFX同梱版)は、4月20日時点で次のアップデートが提供されています。

  • Liberica JDK 8u212
  • Liberica JDK 11.0.3
  • Liberica JDK 12.0.1

AWS Corretto

Amazonが提供するOpenJDKは、4月20日6月1日時点で次のアップデートが提供されています。

JDK 8のアップデートも近日リリースされると推測します

OpenJDKのダウンロード先等の情報

次のWikiに、各種OpenJDKの情報をまとめています。
www.torutk.com

Java読書会BOF「Effective Java第3版」を読む会(第5回)を開催して

Java読書会開催のデータ

昨日4月13日(土)は、Java読書会BOF主催の「Effective Java第3版」を読む会(第5回)を開催しました。

1998年12月にJava読書会が始まってから通算241回目、36冊目の書籍となります。
Effective Javaについては、2002年に第1版を、2008年に第2版をJava読書会で読んでいます。

今回の読書範囲からのメモ

オーバーロード

同じパラメータ数の二つのオーバーロードされたメソッドを提供しないこと

これに尽きますね。オートボクシングがあるので、引数の型がObjectとintでオーバーロードしていると落とし穴に陥りがちです。既存APIにあるので注意が必要です。

可変長引数

引数の個数が0個のことも考慮して実装する必要があります。引数を最低1個必須とする場合は、必須の引数と可変長引数と2つの引数を要求するようメソッドを定義します。

nullをメソッドの戻り値として返さない

nullを返すメソッドは呼び出し側にnullに対応する余分なコードが必要となる上、利用者がそのコードを書き忘れてプログラムのエラーを招く原因となります。

配列またはコレクションを戻り値型とする場合は、nullではなく空コレクションか空配列を返すようにします。

Java SE 8から導入されたOptionalを戻り値型とすると、メソッドが値を返さなかったときにデフォルト値を使う(orElse)、例外をスローする(orElseThrow)、別な処理を呼び出す(orElseGet)を簡潔に実装できます。isPresentはOptionalが提供する他のメソッドでは対応できないときの「安全弁」として使うという解説があり、なるほど~と思いました。

Optionalの使い方は読書会で議論となり、Serializableではないのでフィールドには使うべきではないねとなりました。

ドキュメントコメント

いわゆるJavadocコメントですが、Java SE 8以降も進化していました。

  • @implSpec
  • @index
  • @summary
  • 検査有効(-Xdoclintがデフォルトで有効)
  • HTML5を生成させる-html5オプション

@throwsに、可能性のある非チェック例外を書くのはよいが、メソッド内で外部ライブラリを呼び出しているとすべての非チェック例外を把握しているわけではないのでどうしよう?と議論に。

ライブラリを知り、ライブラリを使う

車輪を再発明しないでください

で、どのようにライブラリを探して使うかについて議論となりました。

  • 検索スキルが必要
  • こういうライブラリがあるはず(必要)、という意識がないとライブラリを探せない
  • ライブラリの更新頻度、ダウンロード数を参考にする
  • 大きなライブラリは避ける
  • 複数のライブラリを使うと、それらのライブラリがたまたま同じライブりに依存するがバージョンが違うときにはまる
  • google検索エンジンでトップに出てくる、内容が薄いQiita記事は何だろうね
  • 類似ライブラリを横並べて比較する、APIの違いを見る
Randomクラスについて

Java 7の時点で、Randomをもはや使うべきではありません。今日ではほとんどの場合、選択すべき乱数生成器はThreadLocalRandomです。それは高品質な乱数を生成し、きわめて速いです。

InputStreamにtransferToメソッドが追加

InputStreamに、long transferTo(OutputStream out) メソッドが追加され、入力ストリームをそのまま出力ストリームに流し込むことが簡単にできるようになりました。

    public static void main(String[] args) throws IOException {
        try (InputStream in = new URL(args[0]).openStream()) {
            in.transferTo(System.out);
        }
    }

おおー、これは便利。java.io.Readerとjava.nio.channels.FileChannelにもtransferToメソッドが追加されています。

toArrayのパフォーマンス

Effective Javaで次の記事が参照されていました。
Arrays of Wisdom of the Ancients

これは、ListインタフェースのtoArrayメソッドを呼ぶ際に指定する引数の値を、長さ0の配列を生成するか、Listの要素数に相当するサイズの配列を生成するかでどちらが速いかを調査した内容です。

List<Cheese> cheeseInStock = ...
return cheeseInStock.toArray(new Cheese[0]);  // (1)
return cheeseInStock.toArray(new Cheese[cheeseInStock.size()]); // (2)

Effective Javaでは、参照記事に基づいて(1)を用い、(2)はパフォーマンスに悪影響があるので使わないことを推奨しています。

(1)はコレクションcheeseInStockの要素数が1以上のときは新しい配列を生成します。(2)は渡した配列が使われ、新しい配列の生成はありません。そこで、(2)の方が性能がよいように見えます。

参照記事ではパフォーマンスを計測した結果、(1)の方がArrayListでは顕著に早く、HashSetではほぼ同じとのデータが得られ、それを考察しています。パフォーマンス計測にはJMHを使っているのでそこは信頼に足ります。

記事をざっと読んだところ次のとおり

  • 配列の生成にかかるコストよりも要素を配列に詰めるコストが支配的
  • ArrayListの場合は、内部の配列の要素をtoArrayで返却する配列にSystem.arraycopyでコピー
  • (1)ではネイティブコードのcheckcast_arraycopy_uninit関数が実行されている
  • (2)ではネイティブコードのcheckcast_arraycopy関数が実行されている。(1)のコードにはないrepz stosb命令(memset to zero)に時間を要している

ちなみに、引数なしのtoArray()では、AVX命令を使ったさらに高速なコピーが行われています。

Liberica JDK 12でJavaFXアプリケーションをIntelliJ IDEA上で作成

Java SE 12がリリース

先月3月20日Java SE 12(Oracle JDK 12およびOracleがビルドしたOpenJDK 12)がリリースされました。Java SE 12は半年毎のフィーチャーリリース(機能のアップデート)となります。

Oracle JDKは、Java SE 11から運用に使用する場合は有償ライセンスが必要となりました。開発用途ではOTNライセンスの下で無償提供されています。
OracleがビルドしたOpenJDKは用途によらず無償提供されています。

また、OpenJDKはオープンソース化されており、Oracle以外のいくつかの組織がそれぞれビルドしたOpenJDK 12が幾つかリリースされています。これらは無償提供され、また有償の技術サポートが提供されています。

JavaFXとOpenJDK

Oracleは、Java SE 11以降Oracle JDKOracleがビルドするOpenJDKからJavaFXを外してリリースしています。ただし、JavaFXはOpenJDKプロジェクトの一部として開発が継続しており、独立したライブラリとしてリリースされているほか、Oracle以外の組織が提供する一部のOpenJDKバイナリに組み込まれています。現時点では、次のOpenJDKにJavaFXが組み込まれています。

4月11日時点では、Liberica JDK 12がリリースされていますが、ZuluFX 12は未だリリースされていません。
5月4日時点ではZuluFX 12がリリースされていました。

Liberica JDK 12の入手とインストール(Windows 10)

Liberica JDKは、BellSoft ltd社(米国およびロシアにオフィスを持っている)がビルドするOpenJDKで、Windows向けには32bit版、64bit版が提供され、またJavaFX同梱版とJavaFX非同梱版が提供されています。

OpenJDKのWindows版では、MSI形式のインストーラーとZIP形式の2種が用意されています。MSI形式は環境変数PATHも設定されるので、複数JDKを使い分ける開発環境ではZIP形式の方がよいと思います。

今回は、Windows 64bit版 JavaFX同梱のZIP形式を入手します。

任意の場所に展開します。
例えば、C:\Program Files\Java の下に展開すると、jdk-12のフォルダが生成されるので、適宜liberica-jdk-12 のように分かりやすい名前に変更しておきます。

IntelliJ IDEA Community版で使用

IntelliJ IDEAで使用するJDKを定義するには、[File]メニュー > [Project Structure]をクリックし、「Project Structure]画面の左側ペインで[SDKs]を選択、中央ペインの上部にある[+]をクリック、ポップアップされるメニューから[JDK]をクリック、「Select Home Directory for JDK」ダイアログでLiberica JDK 12をインストールしたディレクトリを指定します。

JavaFXアプリケーションの作成

IntelliJ IDEAでJavaFXアプリケーションを作成します。
[File]メニュー > [New] > [Project] で「New Project」ダイアログを開き、左側ペインで[Java]を選択、[Project SDK]欄にliberica-jdk-12を選びます。

これで、JavaFXのクラスを利用したアプリケーションを記述できるようになります。

IntelliJ IDEAでJavaFXアプリケーションのProject Template作成

動機

IntelliJ IDEAでJavaFXアプリケーションを作成する際に、FXMLファイルで画面レイアウト定義、CSSファイルで見栄え定義、プロパティファイルでリソース定義をする場合に用意するファイルと毎度のコードを生成するプロジェクトテンプレートを作成します。

作成環境は次です。

OS Windows 10 Home 64bit
IntelliJ IDEA Community 2019.1
SDK Liberica 12

ここで、JavaFXアプリケーションのビルド・実行に使用するSDKJDK)は、BellSoft社が無償提供するOpenJDK 12にJavaFXを同梱したLiberica JDK 12です。
https://bell-sw.com/pages/java-12/

プロジェクトテンプレートの作成

IntellIJ IDEAには、作ったプロジェクトをテンプレートして保存する機能があります。
[Tools]メニュー > [Save Project as Template]

そこで、FXMLファイル、CSSファイル、プロパティファイルを使用するJavaFXアプリケーションの最小構成をプロジェクトとして作成し、この機能でテンプレート化してみます。

最小構成のプロジェクトを作成しテンプレート保存

[Files]メニュー > [New] > [Project] で「New Project」画面を開き、左側ペインで[Java]を選択、右側ペイン上の[Project SDK]欄ではJavaFXを同梱するJDK(今回はLiberica JDK 12)を指定します。
[Project name]には、samplefx と入れてみました。

続いて、パッケージを1つ作成します。パッケージ名は、テンプレートからプロジェクトを作る際に指定したものに置き換えられるので、ここでは適当な名前(com.torutk.samplefx)を付けておきます。

そのパッケージの下に、javafx.application.Applicationを継承したメインクラス、コントローラークラス、FXMLファイル、CSSファイル、プロパティファイルを作っていきます。

f:id:torutk:20190409231332p:plain:w240
IntelliJ のプロジェクトテンプレート用JavaFXアプリケーションプロジェクトのファイル構成

ビルド・実行ができることを確認し、プロジェクトテンプレートを作成します。
[Tools]メニュー > [Save Project as Template]を実行し、「Save Project As Template」画面でテンプレートの名前と説明を入力します。

f:id:torutk:20190409235316p:plain:w480
Save Project As Templateダイアログに名前と説明を記載

作成されたプロジェクトテンプレートはzipアーカイブファイルで、ユーザーディレクトリの下に生成されます。

C:\Users\<ユーザー名>\.IdeaIC<バージョン>\config\projectTemplates\JavaFX Sample Application.zip

テンプレートからプロジェクトを作成

先に作成したプロジェクトテンプレートからプロジェクトを生成します。

[File]メニュー > [New] > [Project]で「New Project」画面を開きます。左側ペインにある[User-defined]を選択すると右側ペインにユーザー定義のプロジェクトテンプレートがリストされます。この中に先ほど作成した[JavaFX Sample Application]があるのでこれを選択します。

f:id:torutk:20190409235945p:plain:w480
作成したテンプレートをNew Projectで指定

プロジェクト名とパッケージ名を指定します。

f:id:torutk:20190410075044p:plain
New Projectでプロジェクト名とパッケージ名指定

指定したプロジェクト名に合わせてJavaモジュール名を変更するか問うダイアログが表示されます。チェックを付けます。

f:id:torutk:20190410080107p:plain
New Projectでモジュール名変更

次のファイル構成で新しいプロジェクトが生成されます。

f:id:torutk:20190410080347p:plain
生成されたファイル群

注意点

Project Templateの雛形とするプロジェクトを作成するときに、プロジェクト名とパッケージ名を同じにすると、うまく動かないコードが生成されてしまいます。

例)プロジェクト名をsamplefxとし、パッケージ名をsampleとしたプロジェクトテンプレートを作成し、これを雛形とするアプリケーションプロジェクトを作成、パッケージ名にcom.torutk.helloと指定したところ、プロジェクトが正常に作られませんでした。

IntelliJ IDEAのモジュール定義ファイル samplefx.iml に対し、IntelliJ IDEAのプロジェクトファイルmodules.xmlの中で参照するパス名がsamplefx.imlではなく、com.torutk.hellofx.imlと"sample"の部分が置き換えられてしまいました。

Windows 7プリインストールマシンの購入はもう‥

お題

Windows 7は、新機能の追加およびセキュリティ以外の修正を行うメインストリームサポートが2015年1月に終了しています。そして、セキュリティ修正を行う延長サポートは2020年1月に終了の予定です。

何らかの理由によりWindows 7でないと動作しない機能を使うために、これから新たにWindows 7を載せたPCを調達しなくてはならないとします。その理由とは、例えば、独自のPCIPCI Express)カードを開発してPCに組み込んで使用している場合で、そのカードのドライバーソフトウェアがWindows 10に対応しておらず、直ちに対応することができない等です。

Windows 7 の販売終了日

Microsoftのサイトによると、Windows 7(Professional版)の販売終了は、製品版ソフトウェアが2013年10月、Windowsプレインストール済みPCの販売終了が2016年10月とあります。

https://support.microsoft.com/ja-jp/help/13853/windows-lifecycle-fact-sheet

各PCメーカーのWindowsプレインストールマシン販売状況

日本HP

日本HPの「Windows 7 Professionalプリインストールモデル販売継続予定のご案内(2017年12月版)」によると

マイクロソフトは、「Windows 10 Proからのダウングレード権を行使したWindows 7 ProfessionalもしくはWindows 8.1 Proプリインストールモデル」のPCメーカーからの出荷期限を2018年10月31日までとしています。

とあり、受注期限が、HP ProDesk/HP EliteDeskは2018年9月末まで、ZシリーズはZ240が2018年7月末までと既に終了しています。

http://jp.ext.hp.com/partners/reseller/partnernews/pdfs/ws7preinstall201712.pdf

その他

Dell富士通PanasonicNECエプソンとざっとWebで見た限りでは、Windows 7をプレインストールしたマシンを販売してはいませんでした。

ダウングレード権の行使によるWindows 7の利用

Windows 10 Pro搭載マシンを購入し、ダウングレード権の行使によってWindows 7 Professionalを入れる場合は、次を入手し、自身でWindows 7を新規にインストールする必要があります。

  • Windows 7 Professionalのインストールメディアの入手
  • Windows 7用ドライバの入手

ただし、現時点でWindows 7 Professionalのインストールメディアを入手することには制約があります。Windows 7が既に販売終了しているので、Microsoftボリュームライセンス(少量ならOpen License?)でWindows 10 Proのライセンスを購入し、Windows 7のメディアをダウンロードするといった手段が必要になりそうです。この場合、購入したPCのOEMライセンスのWindows 10 Proとダブってしまい無駄な費用が発生してしまいます。

また、最新のパーツはWindows 7が対応できないものがあるので、購入する機種はWindows 7に対応可能なパーツで構成されている必要があります。

  • Intel CPUは、第7世代(Kaby Lake)以降はWindows 10にのみ対応(動作はするが、Windows Updateがブロックされる模様)
  • AMD CPUは、Ryzen以降は対応せず

ダウングレード権によるWindows 7の利用期限

Microsoftのサイトによると、

7.ダウングレード権。お客様は、製造業者またはインストール業者から Windows の Professional バージョンがプレインストールされているデバイスを取得した場合、Windows 8.1 Pro または Windows 7 Professional バージョンを使用できますが、マイクロソフトが、(aka.ms/windowslifecycle) に規定されているとおり、かかる旧バージョンのサポートを提供している期間に限ります。

とあります。Windows 7のサポート期間は2020年1月に終了するので、この規定によるとWindows 7 ProfessionalがプレインストールされたPCを購入した場合、Windows 7 Professionalに使用は2020年1月までとなるように解釈できます。

https://www.microsoft.com/en-us/Useterms/OEM/Windows/10/UseTerms_OEM_Windows_10_Japanese.htm

NECのサイトでは、

Windows 10 Pro のダウングレード権により、Windows 7 Professional または Windows 8.1 Pro がプレインストールされたデバイスを利用の場合、Windows 7 Professional, Windows 8.1 Pro のサポートを提供している期間に限り利用が認められます。サポート期間が終了後は、デバイスにライセンスされている Windows 10 Pro に置き換えてご利用いただくことが必要となります。サポート期間終了後に引き続き Windows 7 Professional, Windows 8.1 Pro をご利用希望される際には、Microsoft ボリュームライセンスを通じて、ライセンスを別途取得いただく必要がございます。

との記載があり、ライセンスを別途取得(どのライセンスなのかは明記なし)する必要があるようです。

Windows 10 Proダウングレード権のご案内 :サポート情報: ビジネスPC | NEC

Windows Embedded Standard 7の寿命

Windows Embedded Standard 7は、メインストリームサポートが2015年10月に終了しており、延長サポートは2020年10月に終了の予定です。

Windows OSまわりのあれこれ

Windows 10 October 2018 Update(1809)を適用する

自宅PCの1台(デスクトップPC)はWindows 10 OSですが、なかなか バージョン1809のアップデートが来ません。設定から更新とセキュリティでWindows Updateを手動で実行しても1809は出てきませんでした。

このPCにブロックとなるハードウェアやソフトウェアはないはずなのですが・・・。

 

そこで、手動でアップデートを実行すべく、Windows 10 のダウンロード ページから[今すぐアップデート]でアップデートツールをダウンロードし実行してみました。

 

すると、1809のダウンロードが終わり、再起動された後も1803のままで、1809になりませんでした。再起動は通常何回か繰り返されるのですが、今回は1回だけで、OSの更新が走っていませんでした。

 

類似現象がないか調べていくと、次のブログに類似現象が書かれていました。

win.just4fun.bizこのPCもVisual Studioをインストールしているので、このブログの処置に倣ってWindows開発者モードを外して再度アップデートツールを実行したところ、今度は無事に更新が開始されました。

 

次は、再起動後の更新が82%でちっとも進まなくなりました。1時間経過しても、2時間経過しても82%のままです。ディスクアクセスランプは時折ちかっと光ります。しかし、過去にWindows 8.1から10にアップデートしたときも確か数時間かかっていたことを思い出し、ここは我慢で待つことにします。買い物に出かけて戻ってきたら、更新が終わっていました。4時間ほどかかったことになります。

 

ということで、

 

  • Visual Studioをインストールし、Windows開発者モードが有効になっていると、October 2018 Update(1809)に更新ができない。
  • 1809への更新時、途中でずっと止まったような状況になっても、2時間程度であきらめずに待つ。

が肝要でした。

 

しかし、うちにあるノートPC(Visual Studioは入っていない)も、October 2018 Updateが未だに来ていません。

こっちは、Intel CPUでCPU内蔵のグラフィックスの構成です。この場合、IntelのHD Graphicsドライバーが適用されるのですが、これがブロックに該当している可能性が高いようです。

ただ、最新のHD Graphicsドライバーに更新しようとしても、ノートPCメーカーからドライバーを入手せよとエラーメッセージが表示されて更新できません。ノートPCメーカーのサイトには現在使用中のドライバより新しいものは用意されていません。

 

こちらは引き続き調査していきます。

 

ネットワークドライブ上のファイルをUAC昇格ありの場所へコピーしようとしたらエラー

ファイルエクスプローラーで、ネットワークドライブ上のファイルを、UAC昇格が発生するC:\Program Files下のディレクトリへコピーしようとしたら、

「H:\ は利用できません。・・・(中略)。ネットワーク上の場所を指している場合は、ネットワークやインターネットに接続されているかどうかを確認してから・・・(後略)」

とエラーメッセージが表示されます。ネットワークドライブ上のコピー対象ファイルは見える状態です。

これは、UAC昇格前のユーザーではネットワークドライブがマップされていますが、UACで昇格後の管理者ではネットワークドライブがマップされていないために発生しているようです。

 

具体的に理解するため、コマンドプロンプトをふつうに(管理者権限ではなく)立ち上げ、net useコマンドでネットワークドライブの接続状況を表示させます。

 

C:\Users\torutk> net use
新しい接続は記憶されます。
ステータス    ローカル名    リモート名                  ネットワーク名
-------------------------------------------------------------------------------
OK            H:            \\fileserver\sharefolder    Microsoft Windows Network

コマンドは正常に終了しました。

 

次に、コマンドプロンプトを管理者権限で立ち上げ、net useコマンドでネットワークドライブの接続状況を表示させます。

 

C:\WINDOWS\system32>net use
新しい接続は記憶されます。

一覧にエントリが存在しません。

 

このため、ファイルエクスプローラーでネットワークドライブにあるファイルをローカルの管理者権限が必要なフォルダにコピーしようとし、UAC昇格が行われると、ネットワークドライブが見えなくなってしまい、そのファイルが参照できなくなってしまいます。

 

対処の1つは、ファイルコピー時はネットワークドライブをドライブレター付きのパスでアクセスするのではなく、UNC形式でアクセスします。

別な方法の1つは、昇格した管理者アカウントでも同じドライブ名で同じネットワークドライブに接続するよう設定しておきます。