Gulp v4 は apt で入れるなという話

Gulp.js をインストールしたはずなのに Error: Cannot find module ‘gulp-util’ というエラーメッセージが表示されて、うまく動作しないことがあります。

まさに今、私が後輩から聞かされているように。

gulp-util は 2017年末の gulp v4.0.0-alpha.3 から非推奨になっているので、今さら出てくるのも一見すると不思議な話です。

公式ページでも以下のような手順でインストールすることが指示されていますので、理想的な場合にはこのような出力になるはずです。

$ npm install gulp-cli -g
$ npm install gulp -D
$ npx -p touch nodetouch gulpfile.js
$ gulp --version
CLI version: 2.2.0
Local version: 4.0.2

ところがエラーメッセージが表示されている画面を見ると、そうはなっていません。

$ gulp --version
module.js:550
    throw err;
    ^

Error: Cannot find module 'gulp-util'
    at Function.Module._resolveFilename (module.js:548:15)
    at Function.Module._load (module.js:475:25)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/usr/lib/nodejs/gulp/bin/gulp.js:4:13)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)




動作環境は次の通りで、とくにシステム更新を怠っているわけでもなさそうです。

$ node --version
v13.2.0

$ npm --version
6.14.2

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

しかし gulp のインストール位置を調べてみると何かがおかしいです。

$ which gulp 
/usr/bin/gulp

どうしてこうなるの?と少し調べてみると Ubuntu 18.04.4 LTS で gulp コマンドが見つからない場合、apt からインストールできるというメッセージが表示されるようです。

$ gulp --help

Command 'gulp' not found, but can be installed with:

sudo apt install gulp

その指示通りにインストールするとうまく動かなくなりますので、最初にやるべきことは(もしインストールされているならば)古いバージョンの gulp を消すことです。

$ sudo apt remove --purge gulp -y

それから公式ページの手順に従って現在の安定版をインストールして、インストール先のディレクトリにパスを通します。

$ npm i -g gulp-cli 
$ export PATH=$(npm config get prefix)/bin:$PATH
$ which gulp
/home/hoge/.npm-global/bin/gulp

$ gulp --version
CLI version: 2.2.0
Local version: Unknown

うまくインストールできましたら大丈夫なはずなので、~/.bashrc にでも PATH を付け足しておけばいつでも使えるようになるはずです。

Ubuntu Linux で BROTHER 複合機のスキャナを使う

Linux を使っていて困るところは多くの人に共通しています。

無線通信を筆頭に商用ソフトウェア、オフィススイート、ファイル転送、エンコーディング(と言うよりも CP932 とフォント)などに陥穽があります。

このうち多言語(日本語)と印刷については、先人のお陰で比較的簡単に利用できるようになりました。しかしプリンタ複合機に付属しているスキャナについては、プリンタとは別の設定が必要となります。

ここでは SANE (のグラフィカルフロントエンド Xsane) を使って、ネットワーク接続された Linux (Ubuntu) からスキャナの画像を取り込むことを目指します。使用するスキャナはブラザー工業の DCP-J983N です。


(旧モデル) Brother 大容量インクモデル インクジェットプリンター複合機 DCP-J983N

実行環境は以下のようになります。実際に試してはいませんが、Ubuntu 系の Raspbian OS でも同じように使用できると思われます。

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

ブラザー工業は以下のサポートページから Linux 用のドライバを配布してくださっているので、リンク先のソフトウェアダウンロードリンクからお使いの機種を選択してファイルを入手します。


目的から選ぶ – サポート | ブラザー
https://www.brother.co.jp/support/index.aspx


リンク先をたどっていくと brscan から始まるファイルがダウンロードされますので、このファイルからドライバをインストールします。

$ sudo dpkg -i ~/Downloads/brscan4-0.4.8-1.amd64.deb 
$ brsaneconfig4 -h
USAGE: brsaneconfig4 [-OPTION]   OPTION:
       -a name=FRIENDLY-NAME model=MODEL-NAME ip=xx.xx.xx.xx    
       -a name=FRIENDLY-NAME model=MODEL-NAME nodename=BRN_xxxxx 
                   : Add network scanner
       -r FRIENDLY-NAME [FRIENDLY-NAME ...]
                   : Remove network scanner
       -q          : Query available network scanners
       -h          : Display this help message
       -d          : Diagnosis
       -p          : Ping (for network scanners)  
       -s:[LABEL]  : Save current configuration
       -l:[LABEL]  : Load saved configuration

無事にインストールが完了すると brsaneconfig というコマンドを使用できるようになります。このヘルプどおりに brsaneconfig を使ってスキャナのモデルとIPアドレスを指定すると Xsane からスキャナを認識できるようになります。

$ sudo brsaneconfig4 -a name=piyo model=DCP-N983J ip=192.168.1.10




複合機のIPアドレスが分からない場合にはローカルネットワーク (192.168.1.0) に対してネットワークスキャンを掛けると、接続されている機器の MAC アドレスと IP アドレスを調べることができます。

アドレス末尾の /24 は CIDR notation と言うやつで IP (IPv4) アドレス 32 ビット中の最初の 24 ビットをマスクするという区切りを表しています。

$ sudo nmap -sn 192.168.1.0/24

Starting Nmap 7.60 ( https://nmap.org ) at 2019-09-01 14:16 JST

Nmap scan report for 192.168.1.10
Host is up (0.11s latency).
MAC Address: 00:00:00:00:00:00 (Hon Hai Precision Ind.)

Nmap scan report for Jupiter (192.168.1.7)
Host is up.

Nmap done: 256 IP addresses (5 hosts up) scanned in 2.99 seconds

複合機の製造者なのか、もしくは、そこで使用されている無線ネットワークモジュールの製造者なのかは知りませんけれども、MAC Address から台湾の鴻海精密工業の機器があることが分かります。

これが DCP-J983N ですので、ここで表示されている IP アドレスを brsaneconfig に入力すれば良いわけです。

$ sudo brsaneconfig4 -a name=piyo model=DCP-N983J ip=192.168.1.10
$ scanimage -L
device `brother4:net1;dev0' is a Brother *piyo DCP-N983J

ここまで準備が整ったら Xsane の起動時にスキャナデバイスを選択できるようになりますので、ターミナルから Xsane を実行すればスキャナから画像を取り込むことが可能になります。

初期状態の Ubuntu では Xsane がインストールされていないかもしれませんので、コマンドが見当たらない場合は新たにインストールしてください。

$ sudo apt -y install xsane
$ xsane

Xsane が使いにくければ、Linux Magazine でほかのオプションも取り上げられているので、目を通してみると良いかも知れません。


Scan It » Linux Magazine
http://www.linux-magazine.com/Issues/2018/211/Scanners-in-Linux


ドイツで試したツーリング自転車

MTB のフレームをベースに、スリックタイヤを履かせて、泥除けとキャリアを付けた自転車を日本では何と呼ぶでしょう。

正確な名称や分類は不明ですが、ドイツの街中を走っている自転車には、こういう形をしたものが多いです。いわゆるシティサイクル、あるいはコミューターバイクと言うやつですが、日本の「ママチャリ」と比較すると価格やパーツ構成に大きな違いがありますので、ここでは便宜的に「ツーリングバイク」と呼びます。

これも曖昧で誤解を招きかねない表現ですが、キャリアを設置することを前提とした長いチェーンステー、直進安定性を重視したホイールベース、ボトムブラケットからハンドルまでのリーチの短さ、そして何よりも 700 x 40C の太いタイヤを標準装備しているところは KOGA WorldTraveller や Genesis Tour de Fer のような本物のツーリングバイクに通じるところが有ります。

私がまだロードバイクを購入する前、ランドナーを探していたときに想定していた「旅する自転車」というのも、こういう自転車でした。

ただ一つ個性があるとすれば、この自転車にはサスペンションフォークが付属します。

これはドイツ人の好みで、一般的に見かける街乗り自転車の半分ぐらいにはサスペンションが付いているぐらいドイツでは溢れています。

フランスやオランダやデンマークのような隣国に行くと、ドイツほどフロントサスペンションが付いている自転車を見かけませんので、ただただドイツ人の好みを反映しているように見えます。

おそらく自転車レーンに従って走行していると、車道と歩道を行ったり来たりして頻繁に段差を乗り越えることになるためでしょう。オフロード走行のための装備ではないと思われます。




フロントサスペンションの効果はいまいち実感できませんが、自転車の乗り心地に少しばかりは寄与しているのかも知れません。

そういうのも 40C の Continental Contact Plus City Reflex タイヤが路面からの衝撃の多くを解消してしまいますので、フレームやサスペンションの個性も誤差ぐらいにしか感じないからです。

エアボリュームは正義だとはっきりと分かるところです。

ロードバイクに乗り慣れていると走行中の微細な振動や突き上げがないので、乗り心地は同じ自転車とは思えないほどマイルドな反面、加速感には欠ける印象です。ただし、力が逃げているような感触や車体の重さに引っ張られる感覚はありません。

走り出しが重いと感じたことはありませんが、足を止めると失速するのも速いです。時速 25km/h 以上の高速走行を維持するのは難しいと感じました。

しかし、平均時速 18km/h ぐらいまでの移動速度であれば、1日10時間以上のライドでも無理なく継続できそうだとも思われました。

ここまでで気掛かりな点があるとすれば、敢えて挙げれば貧弱なブレーキぐらいです。

これもロードバイク基準では不安になるところを、40C の太いタイヤであればオフロードでも十分にグリップするので、走っているうちに気にならなくなりました。

こういうのを経験するとブレーキの制動力はタイヤの性能に依存することが良く分かります。

なおタイヤを入れ替えたら少し滑るようになりましたので、どんな天候や路面状況でも確実を期したいならディスクブレーキのほうが良さそうです。

とは言え、舗装路を走っている分には全く問題になりません。

バイエルン州の場合、未舗装路のサイクリングロードが意外とたくさんあるので、これらを楽しまれる場合には少し工夫が必要かも知れません。

バイエルンで週末ごとに 150km ぐらい走り回っていると、オフロードを走る機会もそれなりに得られます。

例年ですと、この時期は降雪によって路面が泥濘んでいたり、気温が -5℃ を下回って外出するだけで肌が痛くなるものですが、今年は日中の最高気温が 8℃ から 11℃になるほど暖冬なので自転車に乗る機会も格段に多いです。

まあ冬の間の天気が悪いのは、いつものことなので気にしてはいけません。一帯が水路ごと凍結していないだけマシです。

そうした悪天候や路面の悪さを考えるとロードバイクよりも安定して使えるのは利点ですが、絶対的な移動速度が遅いので走行距離が思ったように伸びないのと、ポジションの自由度があまり高くないのは欠点かも知れないと思えてきます。

車体が頑丈で、荷物も運べて、長距離走行に適しているのは立派な個性ですが、駐輪時の盗難に気を遣うのはロードバイクと変わるところはありませんので、なかなか一台で万能につかえる自転車を考えるのは難しいところです。