残業や休憩時間の管理が厳しくなっている昨今。
出勤時間や退勤時間、休憩時間を正しく把握するために設備投資が必要になるのですが..
- タイムカードは本体が10万円。ランニングコストが月1万円
- Excelに入力させると入力漏れや不正確な入力、不正が起きやすい
- クラウド勤怠などのサービスを使用すると従業員の人数に応じて毎月数千円のコストがかかるうえ、やっぱり入力漏れが発生する
ということでとにかく手間とお金がかかる割には正確な入力ができない。という問題に直面します。
というわけで、更衣室にタッチパネルをおいて出勤・退勤・休憩のタイミングでボタンを押してもらう運用にしました。

ハードは2in1のタッチスクリーンのPC。アプリはブラウザで作って記録はGoogleに保存。というとてもシンプルな構成。
タッチスクリーンのPCは以前Androidをインストールしようとして動作しなかったASUSのT101HA。中古市場で5000円しないくらい。
OSは軽量LinuxのLubuntuを採用しました。
なにゆえLubuntu?
非力なのでWindowsではまともに動かない。というのは言わずもがな。
Linuxには軽量なものがいくつかありますが、軽くてもカスタムが面倒だとそもそも実現できません。
なぜ軽量なのか、成約はないのかをいちいち調べていると切りがないのですが構造的には以下の構成になっています。

antiX Linuxでは力不足
antiX Linuxは256MBでサクサク動作するのが売りです。
その理由は古くからあるX11に軽量なWindow Manager(IceMM等)を載せているシンプルな構成だからです。
必要なものは必要なだけあとからインストールしろという思想なので、日本語の入力ができるまでが一苦労なうえにタッチスクリーンの対応も自分でなんとかしなければいけません。
機械いじりとしては楽しいのですが、今回は業務で使うので効率を考慮して不採用としました。
Lubuntuは少しカスタムが必要だが現実的
Lubuntuはメモリが1GBあればそれなりに使える軽量さと、デスクトップにシンプルながら最低限のことができるLXQtを採用しているバランスの良さが売りです。
GUIとしてバージョン24.10より前はX Window System、24.10以降はWaylandを採用しており24.10以降はGUIの動作がスムーズになったりタッチスクリーンに広く対応しています。
T101HAはX Window systemでもタッチスクリーンを使用できることを確認できました。後述のとおり横置きにしても画面が縦のままだったり、タッチスクリーンで指を立てに動かすとカーソルが横に動くなど動きがおかしいのでxinuptなどで動作を調整する必要があります。
軽量化を強く意識しており、Window ManagerにはシンプルなLabwc、デスクトップ環境も軽量なQtをベースとしたLXQtが採用されています。
画面の縦横や日本語入力の設定など、多少の設定は必要ですが難易度は低いので採用しました。
Ubuntuは高機能だけどやはり重い
Ubuntuはすべてのユーザーに同じ操作性を提供するためにフルセットの機能が最初から入っていることが売りです。
デスクトップ環境にはリッチなGnomeが採用されており、詳細なOSの設定の他、アプリケーションソフトの操作性なども統一されており多様な便利ツールが最初からたくさん搭載されています。
Gnomeを使うにはリッチなWindow Managerが必要なのでMutterが採用されており、GUIはWaylandを使用しつつも表示機能は独自の作り込みをしています。
当然ながらGnome+Mutterは膨大なライブラリを必要とするためメモリが2GBではかなり動作がもっさりします。
一つの考え方としてUbuntuを軽量化するという方法もありますが、Gnome+Mutterはそれ自体が巨大で削れない機能も多いので現実的ではありません。
T101HAはドライバがないため24.10以降でもx11が採用されているようです。
どちらが採用されているかは以下の環境変数で確認できます。
echo $XDG_SESSION_TYPE
開発はUbuntuで。利用はLubuntuで。
というわけで、勤休管理のプログラム自体は普段使っているUbuntuで開発し、タイムカードはLubuntu上のブラウザから使用するという構成にしました。
T101HAにLubuntuをインストールする
Lubuntuのダウンロードとインストールメディアの作成
ダウンロードはLubuntuのサイトで。
LXQtがWaylandへの完全移行を決めたのでバージョンは24.10にします。

ダウンロードしたらUbuntuのディスクイメージライターでUSBに書き込みます。

USBからインストーラを起動する
USBをT101HAに挿して起動。
起動してすぐにESCキーを押してBIOSに介入します。
USBのブートイメージを選択して「Try to install Lubuntu」を選択

かなり長時間待つ

以下のインストール画面が表示される...が、画面が縦のまま横になっている。
タッチパッドやキーボードは横のままなので操作しづらいがインストール後に修正するので今はなんとか頑張って日本語を選択してWifiに接続し、Install Ubuntuを選択する。

あとは以下のとおり設定していく
- ロケーション
- Asia - Tokyo
- キーボード
- Japanese
- Japanese OADG109A
- Costomize
- Install mode
- Normal Instalation
- Install mode
- パーティション
- 過去にインストールしたパーティションを削除するので私は「手動パーティション」を選択。
- 350MB FAT32 /boot/efi ☑ boot
- 3000MB ext4
- 過去にインストールしたパーティションを削除するので私は「手動パーティション」を選択。
- ユーザー情報
- パスワードなど適当に入力
インストールが終わったらシャットダウンしてからUSBを抜き、再度起動する
インストール後の初期設定
画面の縦横の設定
とにかくこれは不快なので直していく。
画面の縦横とタッチスクリーンの縦横の2段階で設定する必要がある。
画面の縦横
画面の縦横はGUIで設定できる。
スタート > LXQt設定 > モニター を起動
モニターの設定 > 詳細 で回転を右に変更
タッチスクリーンの縦横
タッチスクリーンの設定はGUIではできないのでxinputコマンドで変更する必要がある。
また、xinputコマンドはログインのたびに実行する必要があるので.profileに記載しておくと良い。
まずはタッチスクリーンのデバイス名を調査する
$ xinput list
Vertual core pointer
└SIS0457:00 0457:11ED
いくつかポインタデバイスが出力されるが、T101HAの場合は上記のような名前になっているはず。
このデバイス名を使ってタッチスクリーンの動作を90度回転させる。
$ xinput set-prop "SIS0457:00 0457:11ED" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1
キーボードが101配列になっていると「"」が「]」キーに割り当てられているので注意すること。キーボードの配列は後で修正する。
タッチスクリーンが正しく動作できることを確認したらすべてのユーザーに適用するために/etc/profileに追記する
$ sudo vi /etc/profile
最後に以下を追加
xinput set-prop "SIS0457:00 0457:11ED" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1
キーボードとタッチパッドの調整
キーボードを109配列にする
ログインしているユーザーのキーボードを日本語に対応させる。
- LXQt > キーボードとマウス を起動
- 左のペインで「キーボードレイアウト」を開く
- 「追加」ボタンを押して日本語レイアウトのJapanese(OADG 109A)を追加する
- USは削除する
- 追加したOADG109Aを一番上に移動する
タッチパッドのスクロールを逆にする
WindowsとLinuxではタッチパッドのスクロールが逆になっているのでWindowsと同じにする。
- LXQt > キーボードとマウス を起動
- 左のペインで「マウスとタッチパッド」を開く
- デバイスで「ASUS Tech Inc. ASUS HID Device Touchpad」を選択
- ナチュラルスクロールにチェックをつける
ログイン画面の調整
ログイン画面はSDDMというシステムが作っています。
デフォルトでは何も設定されていないため横向きになっており、キーボードもUSしかありません。
本来であれば以下の設定ファイルで画面を回転させられます。/usr/lib/sddm/sddm.conf.d/任意のファイル名.conf
/etc/sddm.conf ←最初はこれだけ存在する
/etc/sddm.conf.d/任意のファイル名.conf
今回はT101HAがX11で動いてしまっているのでX11前提で設定します
画面の設定
$ sudo vi /usr/share/sddm/scripts/Xsetup
末尾に以下を追加
xrandr --output DSI-1 --rotate right
setxkbmap jp
編集がおわったら sudo rebootで再起動する。
キーボードの設定
$ sudo vi /etc/sddm.conf.d/override.conf
以下を追加
[X11]
Layout=jp
Model=pc106
設定が終わったらOS起動時に日本語キーボードを読み込むように設定する
$ sudo dpkg-reconfigure keyboard-configuration
$ sudo update-initramfs -u
$ sudo localectl set-locale LANG=ja_JP.UTF-8
$ sudo localectl set-x11-keymap jp pc106
機能の追加と設定
日本語入力
デフォルトでは日本語の表示はできますが、日本語の入力ができません。mozcをインストールすることで日本語の入力ができるようになります。
$ sudo apt install fcitx-mozc
再起動後に 設定 > fcitxの設定でmozcを「キーボード 日本語」よりも上にすることで日本語の入力が可能になります。
仮想キーボードの追加
2in1のモニタをタッチパネルとして使用するので、物理キーボードの代わりに仮想キーボードを使う必要があります。
仮想キーボードはOnboardという機能を追加することで使用できます。
$ sudo apt install onboard
すべてのアプリケーション > Onboardの設定 を設定して自動起動とテキスト入力時に表示する設定を行う