あおしまの日記

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

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>");


久々にPebbleネタ2つ

久々にPebbleネタ2つ

Pebbleは順調に使い続けています。夏になって自作の綿テープNATOバンドに交換しました。さらっとしていて、かぶれとも無縁です。

Pebbleアプリが更新

正直期待していなかったのですが、Pebbleアプリが先月末に更新されていました。
Watchfaceの画像が出ない問題が解消されているようです。

https://play.google.com/store/apps/details?id=com.getpebble.android.basalt&hl=ja

Pebbleにメッセージが飛んでこない問題が解決した話

Pebbleを使い続けてきてたまに起きたり起きなかったりと悩まされてきた問題がありました。それはスマホ側からのメッセージ(システムメッセージ、SMS、SNSアプリのメッセージ等)が飛んでこないことです。
ただ長く扱っているとうっすらと傾向が見えてきました。それは「Yahoo!アプリが何かのメッセージを出した後は、メッセージ送信全体が途絶する。」のではないか、という事。特に、気象の警戒情報や「システムが重くなっている」とかいうおせっかい情報などの後は、ぴたりとメッセージが飛んできません。個人的には、SMSが転送されてこないと色々困るので、治るなら良いのだけど、とは思っていました。
そこで、意を決してYahooアプリを削除して、1ヶ月ほど様子を見ています。今のところ、「メッセージが来るはずの状況で飛んでこなくなった」事は起きていません。

これはPebbleアプリの更新より前にやっていた事なので、今回のPebbleアプリの更新とは関係ないと思いますが、もし同様の症状でお困りでしたらお試し下さい。

Pebbleを買い足しました

Pebbleを買い足しました

この期に及んで、という話もありますが、Pebbleを買い足しました。
購入したのは以下の2点です。

本当はPebble2SEを買ってますが、リンクがないので。

これでとりあえず、各モデル1機種ずつは揃いましたので、以後困る事もないでしょう。

Pebble2SEについて

Pebble2の心拍数計は便利に使っていたんですが、そこだけ腕に痕が付くのと、かぶれる事があって、心拍数なしに移行したい希望がありました。状態の良い中古が手に入ったので、使っていたPebble2と差し替えました。

感じた事

Pebble2の時にはFwのアップデートならびに言語パックの転送で頻繁に失敗していましたが、母艦は同じでも今回はそういうことは起きませんでした。持っていたPebble2の個体が良くなかったのか、それともPebble2のBTの設計が良くないのかはわかりませんが、切断再接続も問題なく、ファイル転送も問題ありませんでしたので、こちらを常用したいと思いました。
Fw4.3で使用していますが、特に困った事は起きていません。電話帳のリンクおよびSendTextも正常に機能しています。

PebbleTimeSteelについて

こちらはPebble2がBluetoothLEでの接続に不安があったので常用するには以前の機種の方が良いと思ったので、Pebble2SEとほぼ同時期に購入しました。

感じた事

ファイルの転送などが早く、アプリの切り替わりも早いように感じました。また電池の持ちもPebbleTimeより長いという話なので、それは今後追々様子を見て行きたいと思います。

困った事

やはりこちらもFw4.3ですとSendTextに2バイト文字を食わせるとリセットが掛かる問題があり、見事に再現されてしまいました。一時期はFw4.2に切り替えて使用していましたが、現在ウォッチフェイスが軒並みFw4.3を要求してくるので新規立ち上げ時に選択に困る事も多くありました。

Fw4.3を使う事にする!

そこで考え方を転換して、「SendTextの機能を他のアプリで代替できればFw4.3でも生きていける」と考え、SMSが送れるアプリを探しました。そこで、wristponderというアプリ(PebbleApp+AndroidAppのペアで動作する)に当りました。
https://github.com/C-D-Lewis/pebble
使ってみると、SMS番号5箇所、SMS送信メッセージを30登録でき、使い勝手も良いので、こちらに移行する事にしました。そこで改めてFw4.3に書き換えを行い、再度設定しなおして使っています。

どうもこちらの方はプログラム解説等をしていたところPebble社に雇われた元社員の方らしく、その経緯が以下に記されています。
https://ninedof.wordpress.com/2016/12/08/my-pebble-story/

言語パックについて

現在は公開している手前もあり、両者ともakt10を使って様子を見ています。
私はライトな使い方ですので、特にSOS画面に出くわす事はありません。SendTextも使わなくなりましたのでこれが原因でのリセットもなくなりました。

しかし、サイズを縮小した言語パックで症状が治まったところを考えるに、頻繁にリセットが掛かる方は、サイズが大きなPebbleアプリを使っている事で、アプリと母艦の間でのロード/アンロード時に支障が起こるのが原因ではないかな、と考えるようになりました。

リセットでお悩みの方は、アプリサイズの大きさも考えつつ、アプリを一つ一つ抜いて様子を見る事が、解決に繋がる近道なのではないかと思いました。

とりあえず2017年中は、Pebbleで困る事はなさそうです。