non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

Surface Goが届いた

おはようございます。8月も残りわずかですが、長男が朝起きるのがすっかり遅くなり、新学期からの生活が不安な@kjunichiです。

本体もキーボードも発売日に無事届いた

f:id:kjw_junichi:20180829093714j:plain

Sモードの解除に苦戦

ストアアプリでのMSのヘルプページのキーワードだとダメで、「Windows 10」で検索して、Proにアップグレードするやつを選ぶこと、 Sモードの解除のボタンが出てきた。ただこの辺り、本体の更新やらインストールが裏で動きまっくていたので、 それらが落ち着いてからなら、公式のキーワードの「Sモードをオフ」で出てきたのかも。 しかも自分のところだとSモードをオフにできたのかも、完了画面てきなダイアログが出るはずのところが エラー画面だったw。

まぁ、ほんとにSモード解除の完了画面がエラー表示だったのかもよく分からないが、その後、Chocolateyのインストールもできたので、多分大丈夫と判断した。

開発機としてセットアップ

chocolateyは公式のガイドですんなり入れることでできた。 npmでのVC++が、管理者権限のPowerShellで行う必要があった。 あとは、

abrakatabura.hatenablog.com

の記事が自分でも役に立ちw、サクサク必要なものを入れた。

RustでVC++が認識されない

Rustの公式からインストーラをDLして起動すると、以下のようにC++の処理系が認識してもらえなかった。

f:id:kjw_junichi:20180829091325p:plain

認識されなかったので、npm経由でインストーラーが入ったので、そこから、コミュニティ版のVSを 入れたが、(2)の表記が末尾についてインストーラーに表示されたので嫌な予感がして、 スタートメニューを見に行くと、VSが2重にインストールされていた。 途中でキャンセル(一時停止を押したら、しばらく、インストーラーを閉じられなかったが、しばらくしたら、無効化されていたボタンが復活)して、アンインストールのメニューを選択するところまでたどり着き、無事2つ目のVSをアンインストールできた、そして、多分C++のATLを入れたらのが良かったのか、 rustのインストーラーにVC++を認識してもらえ、rustも入った。

以下のような構成でrustのインストーラーにVC++が認識された

f:id:kjw_junichi:20180829091510p:plain

顔認証(Windows Hello)

コンタクトで登録したから眼鏡かけてるとダメだった。

キーボードは光るけど、消灯した寝室では認識されないっぽいw

EdgeでWebRTCもちゃんと動いた

以下の記事の自作のWebカメラのテスト目的のGithubページでちゃんと前後のカメラの 映像が表示できた。

abrakatabura.hatenablog.com

npmでネイティブモジュールのビルドにPython2が必要だった

github.com

のREADMEのざっと読み直してもPythonも入れてくれるように書いてある気がするが、

npm node-ffi/node-ffi

でいつもの確認をしたら、pythonが見つからないと怒られてた。

公式から2.7系をインストールして、無事

f:id:kjw_junichi:20180829102958p:plain

と正常にnode-ffiが動かせた!

インプレッション

タブレットとして使ってみた感想

Surface Goの為に購入した機器たち

参考資料

記事を書いてからの追加だけど、開発者視点でSurface Goの事が書かれている。

uzulla.hateblo.jp

関連記事

14年前の記事

13年前の記事

5年前の記事

4年前の記事

Surface Goが来たら開発機として使えるようにする作業手順

こんばんは。夏休み中の長男と木工教室に行ってきた@kjunichiです。

f:id:kjw_junichi:20180826215309j:plain

キーボード含めると10万オーバーなので冷静にサブ開発機を考えると

15インチとかでもう少しお金だせば GPU付のPCも射程距離に

でもね、タブレットとしてサクサク使えるPCがほしかったんだ。

単なるタブレットなら、iPadKindle fireでもいいんだけど、 手軽に手元のCPUを使ってコードをコンパイルして動かせる端末が 俺は欲しかった。

激安2-wayタブレットノートではサクサク感が皆無だが、 Windows 10のタブレットモードは結構好き。

Surface Goはこの辺りの不満点を価格以外はすべて解消しているので、 購入に至ったw。

What is 開発機

個人の趣味の延長での開発作業を主に意味してます。 また、当たり前ですが、個人の趣味とはいえ、メインマシンとしては考えてません。

Surface Goで開発?

激安2-wayタブレットで64G程度ストレージがあれば、cygwinでHTTP2に対応したサーバーのh2oをビルドしたり、 mrubyビルドしたりいろいろやれる実績をもっている。

メモリ8GBでストレージがSSDの128Gなら、そもそもおれの日中の職場のPCよりスペック高い(やんわり転職先を探しているという意訳可)

Windowsを普通のWindowsにする

まず、WindowsのSモードを解除する。

chocolateyを入れる

macOSならHomebrewがあるが、同様のモノとして、Windowsでは自分はChocolateyを愛用している。 開発機ならvcpkgという選択もありだが、ちょっと使ってみたらSSDの容量をバカ食いするので、 ひとまずはパス。

cmder

MSX-DOSの経験はあるが、MS-DOSにステップアップできなかった経験からMS-DOSには 妙なコンプレックスがあり、UNIX系のlsコマンドが つかえないと死んでしまうので、cmderはそんな俺の魂を救ってくれる。

choco install cmdermini 

nvs

nodeのバージョン管理。Windows以外ではバイナリでインストール出来たり、マイグレーション機能のあるnodebrewを 愛用しているが、windowdではV8エンジンンのほかにMS製のJSエンジンのChacraにも対応したNode.jsを扱えるnvsを 利用している。

choco install nvs

node.jsを入れる

nvsでまずは安定板のNode.jsを入れる。

nvs add lts

vsコードをnpmで入れる

C/C++の処理系として無難なVisual Studio 2017をnpm経由でいれる予定。

npm install --global --production windows-build-tools --vs2017

mrubyの開発環境

mrubyのmrbgemをビルドできる環境を整える。

choco install winflexbison
choco install ruby

Go

Surface Goで開発するなら外せない言語のGoを入れる。

公式から

cgoを使えるように

msys2をchocolateyで入れ、cgoも利用できるようにしておく

Chrome

リモートデスクトップを使いたいという理由が一番で、 SSDの容量考慮するとFirefoxは余裕なし。。

canary版を入れる予定。

WSL

VirtualBox+Dockerも入れたいが、SSDの容量が気になるのと、 WSLを触りたいというのがあるので、試しに入れてみる。

参考資料

qiita.com

qiita.com

関連記事

Windowsつながり

1年前の記事

1年後の記事

ElectronでmacOSのDockやWindowsのタスクバーに独自のアイコンを表示するには

こんばんは。お盆の休みは奥さんが仕事だったので、近場の高尾山に子供たちと一緒に行ってきた@kjunichiです。

背景

Electronベースの3Dデスクトップマスコットアプリのgopheronを細々と開発している

このアプリにRaspberry PiのCPU温度を表示させる機能を追加したことなどを インスタで投稿したら、結構海外で良い反応を貰うことがある。

そんなアプリのアイコンがElectronのデフォルトなのはそろそろ問題じゃないかと 重い腰を上げて取り組んだ

なにはなくともアイコン画像の用意と読み込み

macOSWindows共にNativeImage型の画像データを用意する。

その為には、nativeImage#createFromPathメソッドを利用することで、画像ファイルからNativeImage型を取得できる。

const { app, BrowserWindow, ipcMain, nativeImage, shell, Menu } = require('electron')
const iconimage = nativeImage.createFromPath(`${__dirname}/gopheron_icon.png`)

macOS

macOSではDock関連のAPIがapp.dockに用意されており、その中のapp.dock#setIconメソッドを利用することで、Dockのアイコンを指定することができた。

const { app, nativeImage } = require('electron')
app.dock.setIcon(iconimage)

f:id:kjw_junichi:20180820202054p:plain

Windows

WindowsLinuxではBrowserWindow#setIconでできた。

mainWindow = new BrowserWindow({/*...*/})
mainWindow.setIcon(iconimage)

f:id:kjw_junichi:20180820201510p:plain

学べたこと

WindowsmacOSそれぞれ、今回使ったプラットフォームに依存するElectronのAPImacOSだとWindows向けのAPIは呼び出すこと

Uncaught Exception:
TypeError: mainWindow.setIcon is not a function

となり、逆にWindowsmacOSAPIを呼び出すと

Uncaught Exception:
TypeError: Cannot read property 'setIcon' of undefined

と怒られるので、プラットフォーム毎の条件分岐が必要なことが分かった。

また、パッケージツールで自前のアイコンを作成して.exeや.appを作成しなくても 今回の方法である程度は独自のアプリ風のテイストを出せることが分かった。

関連記事

8年前の記事

7年前の記事