2022年9月15日木曜日

ChromeOS からラズパイをアップデートなどする方法

 AcerのノートPCをChromeOS Flexにしてしまったので、ラズパイをいじる方法が少々違ってきてしまいました。

NASの操作をするのはこれまで通りブラウザで良いので、Chromeがメインである以上特に変わらないんだけど、問題はラズパイOSのアップデートやアップグレード。LinuxのTerminalやWindowsのコマンドプロンプト/PowerShellに相当するアプリがない。

設定アプリ→(デバイス?→)詳細設定に「Linux開発環境」という項目があり、これをONにする(インストール)と「ターミナル」アプリを使えるように。


使えるようにはなったんですが、これだけだとSSHでraspberrypi.localにはアクセスできませんでした。

なので、Chrome アプリストアから「Secure Shell」というのを入れました。ただこれサポート期限切れてますとか更新してくださいとメッセージが出て、追加の拡張機能をインストールしてっも変わらないのです。ちょっと不安かも。他に適当なアプリがあれば乗り換えるか…

ともかく、一旦はこれでSSH接続できるようになりました。

※ただし、初期設定でSSH有効にしていないとできません

タブに表示されるTerminalで要求されるパスワードを入力したら、ラズパイにログオンしています。

ここで

  1. sudo apt update
  2. sudo list --upgradable
  3. sudo apt full-upgrade
  4. sudo apt autoremove
  5. sudo apt clean

この5つのコマンドを順番に処理させていくだけです。

ちなみに、これはOSバージョン10.0以降(コードネーム"Buster")で推奨の方法だそうです。9.x("Stretch")以前はよくわかりませんが、少なくともStretchについては同じ方法でやっている記事を見かけます。

また、メジャーアップデート(.以前の数字が増える/コードネームが変わる)では非推奨、SDカードに入れて再インストールが良いとのことなので、とりあえずはこれで行きたいと思います。カーネルバージョンを確認するのは

cat /etc/debian_version

でOKです。

同じLinuxベースだから…などと高を括っていたらちょっとやられました。まあ知っていればどうってことはないんですけどね。

今後はaptなどでのメジャーアップデートが可能になるのを期待です。

2022年8月21日日曜日

ChromeOS Flexのキーボードショートカット

 Chromebookのリファレンス、販売されているもの用の記載しかないんですね。DIY版の場合、ショートカットキーはどのキーを使えばいいのか全然わかんなかったりするので備忘録です。

『ウインドウを表示』キーは「F5」

ウィンドウを表示って、何?という感じだが、AndroidやiOS/iPad OSで(スワイプとかホームボタンとかで)アプリの一覧を表示する動作のこと。それはそれとして、このキーを使うとウィンドウ関連のショートカットが使える。ウィンドウ関連なら何と言ってもスクリーンショットです。

スクリーンショット関連のショートカット

  • 画面全体:[Ctrl]+[F5]
  • 画面の一部:[Ctrl]+[Shift]+[F5]
  • アクティブなウィンドウ:[Ctrl]+[Alt]+[F5]

ディスプレイ・デスクトップ関連のショートカット

あまり縁がなさそうだけど、マルチディスプレイを使っている場合や仮想デスクトップを使っている場合はWindows(田)キー。
  • 画面をロック:[田]+[L]
  • スリープする:[田]+[Shift]+[L]
  • ウィンドウを他のディスプレイに切り替え(マルチディスプレイ):[田]+[Alt]+[M]

上2つはわりと使えそう。電池保ちはかなりいいですからね。

Windowsっぽい挙動のためのショートカット

田キーは普通にアプリランチャー呼び出しが使えます。これはちょっとWindowsっぽいです。他にも使えるのは以下でしょうか。

  • ファイルエクスプローラー(「ファイル」アプリ):[Shift]+[Alt]+[M]
  • アクティブウインドウを閉じる:[Ctrl]+[W] ※[Alt]+[F4]は不可
  • タスクマネージャ:[田]+[Esc] ※Windowsとは違うが、なかなか面白い

他にもたくさんあって書ききれないし、忘れてしまったら

  • ショートカット一覧の表示:[Ctrl]+[Alt]+[/]

これだけモニタの端っこに貼っておくのもアリかな。

(参考:https://4thsight.xyz/41777 )

しかしBloggerはリアルタイムで解釈するからか、重たいなぁ。 

2022年8月7日日曜日

Chrome OS Flexの導入

 遂に、念願のChrome OS Flexを導入しました。

ちょっと検索すればやり方は出てきます。何しろGoogle公式が解説してくれていますから。しかし、古いPCを復活させる救世主伝説!あたぁ!と謳われてはいるものの、色々と謎…というか罠が多く、その辺を備忘録として記しておきます。誰かの役に立てばなお幸い。

あまりに古いマシンは無理ぽ

まずはハードウェア要件を確認します。以下、公式より引用。

Chrome OS Flex をインストールする Windows、Mac、Linux デバイス - 対象デバイス

認定モデルでのみ、Chrome OS Flex 機能の正常な動作を保証しています。

認定モデルの類似品では予期しない問題が発生する可能性があります。

認定を受けていないデバイスでも Chrome OS Flex を使用できる場合がありますが、パフォーマンス、機能、安定性は保証されません。

デバイスの最小要件:

アーキテクチャ: Intel または AMD x86 の 64 ビット互換デバイス

RAM: 4 GB

内部ストレージ: 16 GB

USB ドライブからの起動をサポート

BIOS: すべての管理者権限 - 問題が発生した場合、管理者は Chrome OS Flex USB インストーラから起動して BIOS で設定する必要があります。

プロセッサとグラフィック: 2010 年より前に製造されたコンポーネントは、動作が不安定になる可能性があります。

注: Intel GMA 500、600、3600、3650 のグラフィック ハードウェアは、Chrome OS Flex のパフォーマンス基準を満たしていません。

(https://support.google.com/chromeosflex/answer/11552529?hl=ja)

とのことです。基本的には64bit対応プロセッサでないとダメ。ちなみに、認定モデルリストというのもあり、こちらに含まれているハードウェアなら公式で導入実績がある/導入できます、というお墨付きです。はじめにチャレンジしたDELLの『Inspiron mini 10』は、OSロゴから進まずダメでした。さすがに13年前のしかもネットブック(死語)では無理でしたか。幸いもうひとつ手持ちであるAcerの「Aspire R3-131T」はリストに含まれていました。Windows10入れてはいるけど、イマイチもっさりしているし実際Chromeとエクスプローラーくらいしか使ってないから、この際やっちゃおうということになりました。

…が、うまく導入できなかったのです。

ふたつの罠

以下、導入の進捗を書いていきます。つまづいた点は2つありました。

ポートの罠

まず、USBブートができない。

公式の指示どおり、Chromeの拡張機能に『Chromebook リカバリ ユーティリティ』を追加し、そこからUSBリカバリディスクを作成します。

そしてWindowsをShiftキー押しながら再起動かけると、ブートオプションを選択できます。そこで「USBドライブ」を選択するのですが、起動したときに「No Bootable Disk」と言われてしまうのです。これが結構な罠で、BIOSを一生懸命いじってBoot PriorityをUSB FDD/HDD優先にするんだけど、起動画面(この場合Acerロゴ表示)でF12押してもブートオプションに「USB Flash Drive」の項目がないのです。

結論としては、ノートPC(特に、安いもの)の場合はUSBブートできるポートは決まっているということのようです。今回の場合は「手前側」のポートに挿すとブートオプションに表示され、起動できました。あと、もしかしたら再起動ではなくシャットダウンしてからでないとダメかも知れません。たしかに、公式にはそう書いてあるからねぇ。

でも、これに気づいても一旦はChrome OSロゴで止まってしまった。次の罠があったのです。

USBメモリの罠

これはひどいなあと思ったのですが、あちこち検索かけると「ダメなときはHDDを変えてみましょう」と書いている記事がありました。でもさ、HDDでしょ?これはフラッシュドライブだから関係ね…あ、続きがあった…「SanDiskの製品だと起動しないことがあります」だと?たしかにAmazonレビューでケチョンケチョンに書かれているメーカーだな…俺が使ってるこれはたしかにSanDiskではないけど、庶民の味方 E L E C O M だ

手持ちにBuffaloのメモリがあったので、ギリギリ8GBだったけどこれでリカバリディスクを再作成してみました。そしたら最初の32GBメモリよりもなんだか時間がかかっている…ってことは前回やっぱり正しく作れていなかったってことなのか?恐る恐る再度挿して電源を入れると…インストーラが起動しました!


あとはGoogleにログインし直せばもうChromeをスマホやデスクトップPCなどと同様に使えるってわけです。あーもうこれでいいじゃん。わざわざWindows導入する必要ないわ。Irfanview使えないのはちょっと残念だけど、逆にGoogleフォトをデフォルトで使えるので、ほぼなんの問題もないわけです。

NASへのアクセスも「ファイル」アプリでできますし。とりあえず動作は軽く、常識的な利用の範囲ではかなり快適っぽいです。

万人におすすめできるわけではないけれど

という事で、Chrome OS Flex。まだまだ導入にそれなりのハードルはありました。ただ、他のLinuxディストリビューションのようなtar zxvfしてとかsudoしてaptで…みたいな何日も、下手したら何週間も掛かってしまいそうな高いハードルではありませんでした。自分でPCを組めるくらいのレベルの方なら全然導入できそうですし、それこそノートPCと言わず古いマザボやCPUで家族用の情報端末を作ろう!とかめちゃめちゃアリなのではと思います。

Microsoft Officeのソフトも使えるようですし、家庭用PCは今後Windowsにとって代わられるのではないかなと思います。コロナ禍やロシアのウクライナ侵略等で続く世界的な半導体不足や、SDGsとかそういった面でもPCのリユースは注目されていますし。

個人的には、これは今後使っていくべきものかな、という印象です。今後導入を目論んでいる方に、この記事が一助となれば幸いです。

2022年1月28日金曜日

VBAでOneDriveのパスを取得する

 世の中リモートワークの機会が増え、クラウドストレージを使う企業も増えてきたことと思います。自分の会社は準エッセンシャルワーカーな職種なためリモートワークとかないんですが、それでも会議はじめオンラインの利用機会が増えたこともあり、OneDriveを使ってね!と言われるようになりました。特に別店舗で同じカテゴリのファイルを上長が見るよ、みたいなケースで。そんな中でマクロ集計とかもするわけですが、継続的に出したいデータ作成なんかでGetOpenFileNameを使いたいときに、ルートディレクトリがOneDriveだとパスを出すのが面倒です。

具体的には”Thisworkbook.Path”とかやってもhttp://から始まるURLが戻ってくるので、操作できねーじゃん、という感じです。ただエクスプローラーからはCドライブに接続されているように見える(だって自動でバックアップされてるわけだし)ので、何かしら方法があるはずです。

「OneDrive」環境変数

ということで多少ググると、マイクロソフトのサポートページに解説がありました(今はリンク見失ってしまって貼れてないんですが)。以下の環境変数があるようです。

  1. OneDriveCommercial:企業アカウントでログインしている場合。
  2. OneDriveConsumer:個人アカウントでログインしている場合。
  3. OneDrive:原則1と同じ。なんで二つあるの?
なので、VBAからはEnviron()を使えば取得できます。例えばChDir()カレントディレクトリを変える場合のコーディングは、

ChDir(Environ(“OneDrive”))

等と書けば良い訳です。はい解決。

と言いたいところですが、実際にはもう少し問題があります。OneDrive直下ファイルだけで済めば世話がないですが、大抵はそんな訳なく、必要なファイルはサブフォルダに分かれて配置されていますよね。先に”Thisworkbook.Path”というネタを出していますが、それを取得できる方法が欲しい。

しかも現実的に、自分の職場は店舗で使っているMicrosoftアカウントが別だという。どうやって接続したのかはよくわかんないけど…。そんな事情もあり、色々考えた末に以下の方法を考えました。

文字列置換Functionを考えてみた

本当はReplace関数あたり使えると便利なんだけど、Thisworkbookから取得できるURLからInStrでディレクトリ名を探してString操作で置換することにしました。

Function OneDrivePath ( tgFile As Workbook, tgFolderName As String ) As String
 Dim fPath As String, uDir As String
  fPath = tgFile.Path
  uDir = Environ ( “OneDrive” )
 OneDrivePath = uDir & Right ( fPath, Len ( tgFile ) - InStr ( 1, fPath, _
 	tgFolderName, vbTextCompare ) - Len ( tgFolderName ) + 1 )
End Function

こんなFunctionをこしらえて、Subプロシージャから

 Dim myPath As String
 myPath = OnedrivePath ( ThisWorkbook.Path, “Documents” )

とかで呼び出すことでパスを作成できます。ちなみにFunctionのRightで文字数指定する際に+1してるのは”/“の分です。

実際に使う

これでパスを作成できたら、あとはChDirして、Application.GetOpenFileNameを呼び出せば狙ったディレクトリからファイルを選択させることができます。一般の方は割とディレクトリの概念自体を理解していないことも多いので、こういう配慮は必要です。もちろんディレクトリ固定なら直接読みに行ってもいいと思います。Open #してLine Inputして…とか。

今後はOneDriveで共有する機会もさらに増えると思われるので、覚えておくと良いかもしれません。