あおしまの日記

あおしまさんの日記らしいです。個人的に興味がある事を時々書きます。スマートウォッチPebble日本語パックを作成、公開しています。

新しいスマホに切り替えた

新しいスマホに切り替えた

普段はガラケーと小型スマホの2台持ちにしていまして、スマホの方にPebbleを紐づけして運用しております。
そのスマホ*1のホームボタンなどの機能キーのあたりが反応しなくなり、アプリの切り替えが大変になったので、チラチラ見ていた中古市場でXperia X compactを購入。たぶん香港版。でも昔の香港版みたいに怪しい中華アプリが入っていたりもなかったので筋は良かった。Android8に更新済み。品物自体も美品。

Rebble的Pebble環境を1から構築する

Rebble体制になってから初めてのセットアップなので少し手間取った。わかってしまえば簡単な話なので、メモ書き程度に書き留めておく。

  • スマホのセットアップが完了したら、とりあえずGoogleにログイン
  • GooglePlayから、Chromeを導入
  • GooglePlayから、Pebbleアプリを導入
  • Chrome内でGoogleにログイン
  • そのままだとPebbleアプリはうまく起動しないので、ほっといてChromeを起動して http://rebble.io に行く。
  • YourAccountをクリック。
  • Rebbleにアカウントがあればログインする。(私はGoogleアカウントで設定したので、それでログイン。)
  • You are all set!の表示が出たら、文中最初の行の「get started now!」をクリックするか、http://boot.rebble.ioにアクセスする。
  • そうすると何だかよくわからないがPebbleアプリのセッティングが進行する。

動作を見た感じですと、WatchAppなどの情報はうまく移管されているようでした。

BLEについて

Pebble2などのBLEの動作は、Z3compactの時よりも自然で、つながりにくかったり切断したりという事はないように見えました。この点が心配でしたが、まあよかったです。

おわりに

機種変更とPebbleのお引越しがうまくいったので安心しました。
OS、BLE、Pebbleアプリの3つの懸念がありましたが、どれも杞憂に終わって安心しました。

*1:XperiaZ3Compact。BrexitのタイミングでUKから中古で購入し2年ほど使用。

Pebbleの日本語言語パックを作ってみた・その19

前回のでもう打ち止めと思っていましたが、コメント欄に(意外と)翻訳ありの物が欲しいという声がありましたので、akt10にメッセージ翻訳、機能翻訳を入れたものを作成しました。

たいぶご無沙汰でしたので、開発環境などもそのままとはいかず、作り方も一部忘れてしまったりなどありましたが、何とかなったみたいですので、公開します。

akt10jp 日本語言語パック

akt10 Japanese Language pack は、Pebbleスマートウォッチ用日本語言語パックです。Pebbleを日本語化するためのファイルです。4サイズ8ウェイトの全てに、約6000文字が格納されています。
以下の4つのフォントを使用しています。

  • M+ bitmap font
  • 東雲フォント
  • ayufont 18
  • ayufont 20

特徴

  • Pebble2での動作に配慮し、言語パックの文字数を減らし、サイズを小さくしました。
  • iPhoneからの「〜」文字の表示が出来るようなりました。
  • 全てのフォントをpublic domainのビットマップフォントを原料に使用することで、ギザギザが目立たない美しい日本語表示を実現
  • それぞれのフォントは12,14,18,20dotの4段階の大きさに調整。
  • Pebble2での動作に配慮し、12dot文字だけは太字と細字を、それ以外の3サイズの文字は太字のみの搭載としました。
  • 全フォントのベースラインをアルファベットの文字に合わせ改めて調整。
  • フォント内から半角カナ、記号類を含め6000文字弱を詰め込んであります。

Google漢字頻度データを参考に、使用頻度上位5500文字程度を採用しました。)

  • メニュー翻訳、機能翻訳は、akt09と同じものを取り込んであります。Fw4.30準拠です。一部Pebbleの動作に差しさわりある部分は意図的に翻訳を行っていない場所がございます。

ライセンス

全てpublic domainフォントを使用しております。
以下の条件を満たす場合にのみ、自由に再配布する事を認めます。

  • 内容の改変を行わないこと。
  • 無償である事

尚、本日本語言語パックを使用した事による問題や、それにより損害が生じた場合、損害に対する保証は出来かねますので、あらかじめご了承ください。

謝意

ダウンロード先

日本語言語パックは以下からダウンロードできます。
ファイル単体での公開となります。
いつものYahoo!Boxです。
スマートフォンなどからのダウンロードの際は、ブラウザの「PCサイトモード」でのアクセスをお勧めします。
https://yahoo.jp/box/Ka2TFh

OneDriveに配布元が変更となりました。以下のページからダウンロードできます。
Pebble日本語言語パックのダウンロード先変更(2020年9月) - あおしまの日記

注意

動作確認はPebbleTime/Fw4.4.0-rbl/FactoryReset済の環境で行っています。
お使いのWatchappとの関係でリセットが頻発する場合などは、使用をお控え下さい。

Pebbleサーバー停止に寄せて

Pebble社のWeb上のサービスは、6月いっぱいで停止するというお話でした、が、現在7月3日時点では、まだAppStoreなどへのアクセスが可能です。このタイミングで、まとめて書いておくのもいいかなあと思って、つらつら書きます。

Fitbitへの身売り解散から1年半、もう無くなった会社にしては素晴らしいソフトランディングであったと思います。

私自身は、まだPebbleTime/PebbleTimeSteelを使用しています。そして今後はよくわかりませんが、Rebbleへの代替サービスの移動も始まろうとしています。

私は音声サービスも使っていませんし、気の利いたアプリを使ってもいません。しかしSMSの送受信と、なにかスマホのメッセージが受け取れるだけのインフォメーション端末として、Pebbleはまだまだ代替機器は存在しません。私にはヘルストラッカー機能はいりません。*1

ただ腕で時計を表示しつつ、リアルタイム情報の送受信の補助をしてくれる、それだけの簡素な機械が、他社によって代替される気配すらないというのが虚しいところです。

Pebbleサイトなき時代に備えて

そこで、自分の使う範囲での保守は自分でやろうという事で、以下のサイトを参考に、watchfaceやらFirmwareやらを確保しました。
https://github.com/takumaniihara/PebbleMemo

また、Pebbleアプリ(スマホ側)は、最後の更新が行われた模様です。(個人的には言語パック、Fwの更新画面はスキップできるようにして欲しかったんですが。)

日本語言語パックについて

そして、日本語言語パックにつきましても、改良の過程で呆れるほど数を作りましたが、これ以上改良のご意見もないようですので、全機種向けの最終形でありますakt10、Fw3系モノクロ旧機種用のaktmono、拡大文字用のapkbig3を除きまして、公開を停止させていただきました。

つきましては、今後、Pebbleの日本語言語パックにつきましては、当ページより以下の3つの中から用途に応じて取得してください。全て.pblファイル単体でのダウンロードができるようにしてあります。

追加

以下の日本語パックを作成しました。メニュー翻訳が欲しい方向けです。.pblファイル単体でのダウンロードができるようにしてあります。

配布元変更について

OneDriveに配布元が変更となりました。以下のページからダウンロードできます。
Pebble日本語言語パックのダウンロード先変更(2020年9月) - あおしまの日記

最後に

私はPebbleはまだまだ使っていくだろうと思います。その間ぐらいは、私のできる範囲で、ユーザーさんの支えになることを、細々続けていこうかなあと思っています。

*1:心拍計はどうも腕がかぶれます。

Yukiwikiの個別ページをScrapboxの書式に擦り合わせる

ファイル名をunquoteしてある前提で、YukiwikiのファイルをScrapboxに貼り付けて困るのは、リンクのルールが一重大かっこである点です。二重大かっこですと、太字になるだけです。

そこで、YukiwikiのWikinameすなわちリンクワードを、二重大かっこ[[]]から一重大かっこ[]に置換することで、コピペ貼り付けの時にいちいち括弧を取り除く必要がなくなります。

ほんとはこれにURLを一重かっこで囲うのも入れたかったが、とりあえず移行できればいいのでさぼりました。URL続きの日本語もリンクになってしまうので、そのうちやります。InterWikiもURL補完したかったのですが、これは難しそうなのでやっていません。

こちらもpythonでやりたかったですが、上ので懲りたので、目的優先でperlに逃げました。この作業はWindows上でやりましたので、ファイル名がshiftjisであることを前提にしています。他の環境の方はEncodeのあたりを調整してください。

これのおかげで、だいぶコピペが捗りまして、400ページ強の全データをScrapboxに移行でき、ページ同士のリンク関係もある程度Scrapbox上で構築できました。

use Encode;
 
 while(<.//res//*.txt>){
 	$fname = $_;
 	#ファイル名だけ抽出する(*.txt)
 	$fname =~ s/\.\/\/res\/\///;
 	print $fname."\n";
 
 	#ファイルをオープン
 	open(FH,".//res//$fname");
 	open(FH2,"> .//res2//$fname");
 
 	# Scrapbox用に、先頭にファイル名=タイトル名(.txtを取り去る)を書き込む
 	#ファイル名=shiftjisなので、デコードした上で本文と同じEUCで書きこむ。
 	$fname =~ s/\.txt$//;
 	my $decoded = Encode::decode("shiftjis", $fname);
 	my $fname_euc = Encode::encode("euc-jp", $decoded);
 	print  FH2 $fname_euc."\n\n";
 
 	#ファイルを1行ごとに読み込み、2重カギカッコを1重にして吐き出す
 	while(<FH>){
 		$line = $_;
 		$line =~ s/\[\[(.+)\]\]/\[$1\]/g;
 		print FH2 $line; 
 	}
 	
 	#ファイルを閉じる
 	close (FH2);
 	close (FH);
 }
 

Yukiwikiのページ群の名前をunquoteする(python3)

このダイアリーは、もともとYukiwikiを使っていた時の情報を、記法が似通った場所に移行させたいという事で開設したものでした。その時もごく一部の公開すべきネタは移行しておりました。

ただそれも限界がありますし、Scrapboxは増井さんからお誘いを受けてぼちぼち使っていまして、そろそろYukiwiki時代の全情報を移行しようかなあという気になりました。

Yukiwikiの個々のデータはテキストファイルになっていて、quoteされた文字列がファイル名になっているので、どのファイルが何なのかがわかりにくいのが難点です。そこで、今後の作業に先立ち各ページのファイル名を可視化するため、ファイル名をunquoteすることにしました。

ファイル名を2文字ずつ行列にし、%で挟んで電車つなぎにした上で、urllib.parseに通してunuoteした上で、ファイル名の変更コピーをする作戦です。
pythonの手習い目的です。もっとエレガントな方法があるはずですが、今手出しできる材料ではこれが限界でした。
#エラーと戦っていまだによくわからないけれども。

注意:予め直下に出力ディレクトリ./res/を用意しとかないと死にます。

 import os
 import sys
 import glob
 import re
 import urllib.parse
 import shutil
 
 path = "./cgi-bin/wal/WalWiki/wiki"
 files = glob.glob(path + '/*.txt')
 
 outpath = "./res/"
 
 for f in files:
 	val = re.findall(r"[A-Fa-f0-9][A-Fa-f0-9]",f)
 	ch = '%'+'%'.join(val)
 	result = urllib.parse.unquote_plus(ch, encoding='euc_jp', errors='ignore')
 #	print (result)
 
 # filenameのエスケープ
 #	result2 = result.replace('/','_')
 	result2 = re.sub(r'[/:]+', '_', result)
 	
 	newname = outpath + result2 + '.txt'
 #	print (newname)
 	shutil.copy(f, newname)

NASが欲しい気分になった

NASが欲しい気分になった

ここのところ録画も溜まっていくので、コンパクトな機械を探していると遭遇するNASなるものが欲しい気分になりました。便利そうなのですが、いくつか自分の用途に合わない点が。

  • XFSで録画済のディスクを受け入れられそうな市販NAS機種がない。新規HDD突っ込んでデータコピーしてるほど暇じゃない。
  • FreeNASも同様。ZFSかあorz
  • マウントしてSamba喋れればべつに管理システムは要らないかも?
  • 気分が乗れば、openmediavault考えてもいいか?
  • HDD4台入りの箱+RasPiで、4台ずつ管理していくのもアリだけどつまらない。

そこで、NASケースを探索することにした。

NASケースいろいろ

数年前だといろいろあったんでしょうが、今や「売ってるぞ」というNASケースはこれぐらい。しかし、秋葉原まで行く旅費を考えたら通販で買える物の方が、と思って敬遠。
http://akiba-pc.watch.impress.co.jp/docs/news/news/1058737.html

これは数年前に出てましたが、その後談が途絶えているし、使ってる話も見当たらず、何かあったのだろうと思って敬遠。
http://akiba-pc.watch.impress.co.jp/docs/news/news/594255.html

じゃあ海外に目を転じて、となると、
http://www.u-nas.com/xcart/product.php?productid=17638&cat=249&page=1
なんですが、これって1つ上のと同じじゃないのかな?と思うのと、この円安時代に海外通販かあorzというのもあって、敬遠。

結局これらのどれでもないところに落ち着きました。

自作するとして、基板選びは?

ケースの大きさの関係から、HDD4台モデルを考慮することにして、基板を選ぶ。CPUオンボードもだいぶ絶えて久しい訳でありますが、SATA4つではOSをどこに入れるかという話もあり、だからといって数万もするSuperMicroの基板を選べない懐事情もあり、J4205やJ3455で落ち着きそうになりました。(というかそれしか見えていなかった。)OSは最悪USBメモリに導入まで考えていました。これならDDR3-SODIMMも4GBのが手元にあるし、というのも背景にあり。

ASRock Apollo lake搭載 Mini-ITXマザーボード J3455-ITX

ASRock Apollo lake搭載 Mini-ITXマザーボード J3455-ITX

ASRock Apollo lake搭載 Mini-ITX マザーボード J4205-ITX

ASRock Apollo lake搭載 Mini-ITX マザーボード J4205-ITX

他にも、予算圧縮でAMD系という手もありましたが、組み合わせるCPUを考えた時の消費電力とクーラーのデカさ(うるささ)で敬遠。SATA6本は非常に魅力でした。(それにWifi要らない。)

AMDオンボードの機種もSATA多いし消費電力少ないし、FreeNAS目的だけなら行きそうになっていました。すごくそそられました。しかし、この頃になると「NAS機にPT3x1のマシンを統合=PT3を動かすかも?」という大同合併も考えはじめていて、AMD筋はこの先の作業が読めないので、泣く泣く切りました。

ここで1日置いて、うちにはQ3PEの予備実験に使ったまま放置していた機械があり、CPUとM.2-SSDも転用できれば、CPU別の基板でもいけそうな気がしてきました。思いなおして候補に挙がったのは以下。

しかしこれらはゲーム用らしいし、Wifi要らない、Ether2本要らないので、敬遠。

最終的にはここまで出た物は選ばず、以下の仕様の基板で手を打ちました。

  • Mini-ITX
  • LGA1151
  • SATA4本
  • メモリ1本装着(8GB)
  • M.2 SSDSATAタイプ)
  • CPUはG4400(転用)+標準ファン
  • SSDはWD Blue256GB(転用)

こういう基板を探す時に、kakaku.comはどうにも困ります。
Wifi用のM.2とSSD用のM.2とがどちらも同じ扱いの上、SSD用でもSATAタイプとPCIeタイプがあって、手持ちの物が使える物と使えない物とがあるとの事で、そこまで吟味となるともう直接メーカーの仕様を追わなければ確定できないので、いいなあと思っても弾かれる基板が多かったです。

ただこの方向性が固まったら、あとはトントンと決まって行きました。
本当はケースの仕様に照らしてSATAコネクタや電源コネクタの位置ももっと詰めて検討したかったのですが、選択肢が限られる事と、時間と予算がなかったこともあって、やりきれなかったのが後悔です。

組み付け

組み付けは比較的やりやすいケースでした。物としてはしっかりした構造で定評のあるメーカーでしたので、そこは信じてOKでした。特にHDD取り付けトレイの出来が良いです。

ケースには説明書が付いて来ません。メーカーサイトにPDFがあり、ある程度はそれが参考になります。肝心の部分が一部欠けてる事から海外掲示板では炎上していましたが、しつこく検索すれば出て来ましたので、これについてもそんな困ることもなく、また問題の部分はマザーボードから電源を取ればUEFIからの制御で用は足せましたので、激しいストレージ用途でなければ当面これでいいんでないかと思っています。

基板が取り出しやすいとはいえ、流石にHP microserverのようにはいかず、電源ケーブルなどは延長ケーブルを使う事で出し入れにゆとりを持たせました。CPU電源は標準ママでちょうど良い長さです。

また、SATAケーブルについてはロック付きのしなやかなケーブルで片方L字の物を4本別に調達することで、ケース内の配線をすっきりさせた上に空間とエアフローも確保できました。ケーブルにはお金払った方が良かったです。

HDD電源以外のコネクタ類は、トップ部分にまとめてしまいましたが、要らない人はカットして始末するのもアリだと思います。わたしはやりませんでしたが、トップにスリムDVDなんかを入れたら、リッピング用にも向いているかもしれません。

1つだけあるPCIeには予定通りPT3を移植しました。ロープロ金具に変更して据えると、ここもトレイごと引っ張り出せるようになります。その際、ケースファンのワイヤが色々邪魔なのですが、ファンの取り付け位置を回転させることである程度回避できました。ファンは案外静かなので静音の物に交換するまでもないのが助かりました。

ソフト的なところ

ファンコントロールUEFIでやらせています。静か目にセットしてもHDD4台入でケース内30度台なので、これからの季節の事を考えても困る事はないと思っています。

OSなど

Ubuntu16.04.3LTS(server)をUSBメモリから導入。Silicon2SiliconのOS導入は早いですね。
その後はmirakurun、rivarun、chinachu-γを導入しています。PT3は別ドライバの方で従来通りの方法での作動です。ここら辺は公式サイト等の通りです。

HDDのマウント

XFSのディスク4台のうち、1台は予備的な録画ディスク、3台は従来の録画済ディスクです。それらはマウント後にSamba経由で家庭内ならどこからでも見えるようになっています。ついでに月別にフォルダを掘って整理しましたので、過去録を追いやすくなっています。

今後の予定

HDDをUSB外箱にあと4台入れてつなぎ、ここをメディア集中鯖兼予備録画マシンにしていきたいです。予想では2〜3年分のデータが待ってるはずなので、まずはここまでぶら下げが終わったら、あとはRasPi3にKodi+Chinachuプラグイン導入で再生側を整備できれば、テレビ機種依存からは脱せそうです。

新たなCSVエディタに遭遇する

新たなCSVエディタに遭遇する

CSVエディタは、数年前までKutoCSVEditorを使っていました。
しかし、ここのところ起動しても落ちるので、あれこれと使っていましたがしっくり来ません。
UTF-8対応がまずいとか、エディタの変形であるとか、フォントサイズが変えられないとか、等々。
もう他に選択肢無がいんだろうなあと思ってあきらめていましたが、久々に気が向いて検索、Cassavaというのに遭遇しました。
http://www.asukaze.net/soft/cassava/

更新もほぼリアルタイムで行われており、操作も悪くありません。
フォントサイズも指定できますし、UTF-8も読み込みに支障ありません。
マクロ機能もあります。

XMLマクロに触発されて、レジ用マクロを書く。

Cassavaの公開マクロを眺めていると、XML出力マクロがあるのに気付きました。
中を見るとそれほど難しくなさそうでしたので、レジ導入時に書いたPerlスクリプト*1をこれに代替させる事にしました。
やってる事は、項目数の総計を入れ込むこと、各情報を適切な位置に埋め込むこと、だけです。
商品名の文字長のチェックは行っていませんので、データ段階でスクリーニングしてお使い下さい。

  • データは「コード」「商品名(全角8文字)」「所属部門」「単価」の順に4項目からなるCSVで用意します。1行目は項目行として扱い、2行目からのデータを処理します。
  • マクロのインストールはCassavaのExportフォルダに下記プログラムを「XEA4x7.cms」というファイル名で入れることで行います。
  • 変換したいCSVデータをCassavaで開いておき、「ファイル」メニューの「エクスポート」を選び実行します。
  • 出力されたファイルを「PLU-JAN.xml」に改名する事で、SDカード経由でのPLU/JANデータ更新に利用する事ができます。
// SHARP XE-A407/A417 CSVデータ to レジ内部形式XML 出力
//   for Cassava CSV editor
//            2017.08.13  Kaz Aoshima
// 
// Cassava CSV editorのマクロ機能を使い、価格表データから
// SHARPレジのSDカード経由で送り込めるPLU/JANデータ(XML形式)を
// 作成します。
// 
//  元データは以下の4項目からなるCSVであることが前提です。
// コード,商品名(全角8文字),所属部門,単価,
// 1行目は項目行として扱い、2行目からのデータを処理します。
// 
// このデータを編集または開いておいて、エクスポートにより変換を行います。
// 文字長チェックは行っていませんので、事前にスクリーニングをお願いします。
// 
// 導入は、CasssavaのExportマクロフォルダ(プログラム本体のある場所の中)へ
// コピーして行います。ファイル名は「XEA4x7.cms」にします。
// 
// 実行は、用意したデータをCassavaで開いておき、[ファイル]メニュー内
// [エクスポート]を選び、形式から当マクロを選択、実行します。
// 
// 出力されたファイルを「PLU-JAN.xml」に改名する事で、SDカード経由での
// PLU/JANデータ更新に利用する事ができます。

B = Bottom;
// x = 1;
// y = 1;
Data = B-1;

writeln("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
writeln("<FILE FILE_NO=\"0x11\" FILE_NAME=\"PLU\" MAX_BLOCK_NUM=\"1\" MAX_RECORD_NUM=" + Data + " VERSION=\"A407J\">");

for( y = 2; y <= B; y++)
{
  writeln("    <RECORD PLU_CODE=\"" + [1,y] + "\">");
  writeln("      <FIELD FIELD_NO=\"1\" CONTENTS=\"Preset\">");
  writeln("        <DEPARTMENT>" + [3,y] + "</DEPARTMENT>");
  writeln("        <PROGRAM>");
  writeln("          <AUTO_DELETE>No</AUTO_DELETE>");
  writeln("          <ENTRY_TYPE>Preset</ENTRY_TYPE>");
  writeln("        </PROGRAM>");
  writeln("        <MENU_TYPE>");
  writeln("          <MENU_TYPE>Normal</MENU_TYPE>");
  writeln("        </MENU_TYPE>");
  writeln("        <LNKSET_TABLE_NO>0</LNKSET_TABLE_NO>");
  writeln("        <PLU_GROUP_NO>0</PLU_GROUP_NO>");
  writeln("        <MIXMATCH_TABLE>0</MIXMATCH_TABLE>");
  writeln("      </FIELD>");
  writeln("      <FIELD FIELD_NO=\"3\" CONTENTS=\"PLU Price\">");
  writeln("        <PRICE>" + [4,y] + "</PRICE>");
  writeln("      </FIELD>");
  writeln("      <FIELD FIELD_NO=\"4\" CONTENTS=\"PLU Text\">");
  writeln("        <TEXT>" + [2,y] + "</TEXT>");
  writeln("      </FIELD>");
  writeln("    </RECORD>");
}

writeln("  </BLOCK>");
writeln("</FILE>");