FumipoSystem

プログラミングの学習記録やアプリのリリース情報について. ガジェットも好きなのでレビューするつもりです.

オンライン地学講座: 鉱物観察・偏光顕微鏡観察

Zoom を使ってやった. 使ったスライドは以下.

教育目的での使用に限り, 自由に使用していただいて構いません.

docs.google.com

偏光顕微鏡観察は以下の自作アプリを使って行った.

こちらも教育目的では, 自由に使用していただいて構いません.

fumipo-theta.hatenablog.jp

偏光顕微鏡アプリ - SCOPin rock

SCOPin rock

デプロイしたアプリはこちら

microscope.fumipo-theta.com

対応ブラウザ: デスクトップPC, スマートフォンともに, ほとんどのモダンブラウザに対応

など

Internet Explorerは未対応

Summary

  • オンラインで見れる偏光顕微鏡アプリ
  • 岩石薄片のサンプルを閲覧可能
  • オープンニコル(開放ニコル/平行ニコル)とクロスニコル(直交ニコル)を切替可能
  • 視野の回転が可能
  • 視野の拡大が可能

f:id:fumipo-theta:20190214200535p:plain
SCOPin rockで閲覧できる岩石薄片サンプル例

想定使用シーン

  • 生徒, 学生の自学自習
  • 地学の授業など複数人を対象としたプレゼンテーション

技術スタック

ぼちぼちまとめていく

Python (v.3) の環境構築

はじめに

Pythonとは,

  • 汎用的に利用可能なプログラミング言語・環境
  • 種々の便利なプログラムをまとめた"パッケージ"をダウンロードし, 組み合わせて使用することを前提としている

目標

  • Python (ver.3) の準備
  • パッケージ管理コマンドの使用
  • Pythonコードの記述・実行

サブ目標

参考 CUIGUI
コンピュータ上でプログラムを実行する時, プログラムとユーザーである人間の間での情報のやりとりは大きく2通りに分けられる.

  • CUI (Character User Interface): "ターミナル"と呼ばれるプログラムを用い, コマンドを表す文字列を入力してコンピュータに指示を与える
  • GUI (Graphical User Interface): 入力するコマンドの種類や実行条件が, ボタンや選択ウィンドウのような視覚要素と結び付けられており, それらの要素を操作することでコンピュータに指示を与える

Pythonの準備

"Python"はプログラミング言語の名前でもあり, その言語で書かれたソースコードを実行する環境を指す名前でもある. 本講座では, ソースコードを記述する言語を"Python言語", 実行環境を"Python"と呼ぶ.

一般に, コンピュータが実行できるプログラムを作成する際には, まず人間が, 人間に理解できる構文や命令のセットを組み合わせて記述されたソースコードを作成する.
そしてその後, ソースコードをコンピュータが認識できる形式のデータ(機械語)へと変換する.
このときプログラミング言語によって, プログラム実行前にソースコード全体をあらかじめ変換する作業(compile)が必要とするものと, プログラム実行時にソースコードの必要な部分が自動的に機械語に変換されるため, コンパイルを意識する必要がないものに分かれる.
Pythonは後者のように, Python言語で書かれたソースコードを逐次的に機械語に変換する機能(interpliter)を提供するものである. また, PythonC言語Fortranなど他の言語で書かれたコンパイル済みのプログラムを実行することができる.

Pythonによるプログラミングを楽にしてくれるパッケージは, Python言語で書かれている場合のほか, 他の言語のソースコードであったり, それをコンパイルしたものであったりする場合がある.
そのようなパッケージをWebから探し出したり, それが依存している他のパッケージを自動的にインストールしたり, 場合によってはそれをコンパイルしたり, 重要だが退屈で煩雑な作業を自動的に行うために, パッケージ管理ツールがある.

ここまでのことを踏まえて,

  1. Pythonインタープリターのインストール
  2. パッケージ管理ツールを通じたパッケージのインストール
  3. 上記ツールを使用可能にする

という順にPythonを準備していく.

参考 Pythonのバージョンについて
現在, version 2 と 3が共存しており, どちらも広く利用されているのだが, 両者のプログラムの構文には一部互換性がない.
従って, インターネットや書籍を参照する時, どちらのバージョンについての内容が記載されているのかには注意を払う必要がある.
今回は, version 3を対象とする.

Pythonのインストール

Pythonのコアとなるプログラムは, Python.org が開発し配布している (ここでは本家Pythonと呼ぶ). 本家Pythonは, インタープリターとしてのPythonと, パッケージ管理ツール"pip"を配布している. pipを利用する場合, パッケージのインストール時にコンパイルが必要となることがある. それ自体はpipが自動的に行うのだが, コンパイルに必要なツールがコンピュータに準備されていない場合には問題が起こる. 要するに, 本家Pythonを使用するには, C言語Fortranその他の言語の実行環境も準備する必要があるということである. macOSはそのような公式ツールがあるのでいいのだが, Windowsは一般にそのようなコンパイルツールを正しく導入することが煩雑である.

それに対し, Anaconda というプロジェクトでは, Pythonインタープリタと独自のパッケージ管理ツール"conda"をセットにして配布している. condaを利用する場合, 各OSに合わせてコンパイル済みのライブラリをインストールできる. 従って, 他のプログラミング言語の実行環境を準備すること無くPythonプログラミングを始めることができる.

今回はWindows, macOSともに本家Pythonを導入する場合を紹介する.

少なくともPython ver.3.6.5 時点で, pipでコンパイル済みのライブラリをインストールができるようになっており,
Windowsでの本家Pythonの導入が容易になったからである.

Windows

Python Release Python 3.6.5 | Python.orgにアクセスし, Windows (理由がなければ"Windows x86-64 web-based installer")をダウンロード, インストール.

f:id:fumipo-theta:20180629203930p:plain

インストーラーのオプションにて,

  • Add Path to python
  • Install for all users

にチェックを入れる

Python実行時にエラーが出る場合, このページ からMicrosoft Visual C++ 2015 再頒布可能パッケージをダウンロードし, インストールする必要があるかもしれない.

macOS, OS X

参考: 【決定版】MacでPythonを使って『機械学習』を学ぶための環境構築

  1. Mac用アプリケーションインストールツール"homebrew"をインストールmacOS 用パッケージマネージャー — macOS 用パッケージマネージャー
    • ターミナル上でコマンド /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" を実行
  2. ターミナルで brew install python3 を実行し最新のPython ver.3をインストール

参考 本家PythonかAnacondaか
Anacondaプロジェクトは便利である一方, コンピュータ内にもともと存在し, OSやPython以外のシステムの動作に使われているコマンドとバッティングを起こしやすいという問題が有る.
この問題は, macOSLinuxで特に深刻である.
また, macOSLinuxでは, コンパイルに必要なツールの多くがもともとOSとともにインストールされていることを考えると, あえてAnacondaプロジェクトを利用しなくともよい.
一方Windowsでは, 基本的にコンパイル用のツールが最初から利用可能では無く, その準備も簡単ではない. また, Anacondaの導入によって影響を受けるシステムコマンドもほとんど無い.
よってPythonへの入門においてAnacondaプロジェクトの利用が有用である.

参考 プログラムのバージョン
プログラムは日々アップデートされていくものである.
本資料作成時には, 最新のPythonのバージョンは3.6.5である.
バージョンを表す記号のうち, 最初の数字(3)はmajor versionで, プログラムの基本設計など大きな変更があった場合に繰り上げられる. 次以降の数字(6,5)はminor versionで, 機能追加や誤りの修正など, より小さな変更があった場合に繰り上げられる.
パッケージによっては, 依存パッケージの特定のバージョンでしか正しく動作しない場合がある.

パッケージのインストール

次のようなコマンドでライブラリのインストールを行う.

pip install ライブラリ名, pip3 install ライブラリ名

Windows

  1. Windows Power Shellの起動
  2. pip install numpy scipy pandas matplotlib bokeh jupyter jupyterlab

macOS, OS X

  1. ターミナルの起動
  2. pip3 install numpy scipy pandas matplotlib bokeh jupyter jupyterlab

参考 基本的なパッケージ

  • numpy: 科学計算
  • scipy: 高度な科学計算・機械学習
  • pandas: データ操作
  • matplotlib: グラフ作成
  • bokeh: 簡便なグラフ作成
  • jupyter, jupyterlab: ソースコード・実行結果・ドキュメントの一括管理

Python言語の記述と実行

ソースコードの作成, 実行結果, メモなどの管理を容易にするため, Jupyterライブラリを用いる.
Jupyterライブラリを通じたGUI環境として, notebookとlabが用意されているが, ここではnotebookを用いる.

Jupyter notebook, labはGoogle ChromeSafariなどのWebブラウザ上で動作する. ともに, ソースコードを記述するエディタを備えており, 記述したものをブラウザ上で実行し, 計算結果やグラフを表示することができる. エディタは複数の"cell"からなり, それぞれのcellに一まとまりの計算やコマンドを入力するようになっている.
それぞれのcellは一つづつ別々に実行することができ, 後から実行するcellでは, 以前に実行したcellの結果を使用することができる.

Jupyter notebookの利用

Jupyter notbook, lab共通してできること

  • Pythonなど様々な言語のソースコード・実行結果の統合管理
  • グラフなどの表示
  • プログラム実行時のエラー表示
  • Markdown形式でドキュメントの作成
  • html, pdfなどへの変換

f:id:fumipo-theta:20180629204010p:plain

Jupyter labでできること

  • タブによるエディタの管理
  • 複数のエディタを並べて表示
  • ターミナルの利用

f:id:fumipo-theta:20180629204027p:plain

Jupyter notebookの起動

ターミナルで次のコマンドを実行する

jupyter notebook 作業ディレクトリ

作業ディレクトリを指定しなければ, ターミナルのカレントディレクトリが自動的に指定される. ここで, 作業ディレクトリおよび, その中に存在するディレクトリ以外に含まれるデータはJupyter notebookから利用できなくなることに注意が必要である.

参考 ディレクトリ, ファイル, パス
Windows, macOS共に, データを階層的に管理する機能を備えている. それはしばしば, フォルダの中にファイルが入っていたり, フォルダの中にサブフォルダが入っているようなアナロジーで理解されている.

一般に, フォルダとしてイメージされているものは, ディレクトリ(directory)と呼ばれる. また, ファイルはファイル(file)である. そして, あるデータが属するディレクトリとファイル名を一意に表したものをパス(path)という.

OSが管理する全てのデータのパスが一意に決まるよう, 他の全てのディレクトリとファイルを含む特別なディレクトリ(root)が存在する.

CUIにおいてプログラムやデータを指定するには, それらへのパスをコンピュータに支持する方法を理解しておく必要がある. また, windowsmacOSLinuxでは, ディレクトリの表し方が異なる場合があるので注意が必要である.

パスの記法

ある名前がディレクトリであることを示すため, 記号 / (半角スラッシュ)や \ (半角バックスラッシュ, 環境によっては半角¥記号に見える)をつける.
Windowsのみ, 慣習的にバックスラッシュが用いられている.

  • "desktop"という名前のディレクトリ: desktop/
  • "desktop"ディレクトリに属する"file"という名前のファイル: desktop/file
  • "desktop"ディレクトリに属する"file.txt"という拡張子"txt"つきのファイル: desktop/file.txt
  • 名前にスペースを含む場合: "desktop/file of data.csv"

ディレクトリやファイルの名前にスペースが含まれる場合, ダブルクォーテーション記号やクォーテーション記号で囲んだほうが良い. (多くのプログラムで半角スペースがコマンドの区切りとして認識されるため)

相対パス絶対パス

パスを示すときに, "現在のディレクトリ"を基準とした相対的な場所の記法と, rootディレクトリからの絶対的な場所の記法とがあり, それぞれ相対パス, 絶対パスという.

ここでまず理解しておくべきことは, ターミナルなどのプログラムを開始した時, そのプログラムは何か一つのディレクトリを監視した状態で起動されるということである.

プログラムが現在監視しているディレクトリを, "current working directory", あるいは"current directory" (カレントディレクトリ)と呼ぶ.
相対パスの表記において, カレントディレクトリは, 記号 ./.\ で表す.
また, カレントディレクトリが属している親ディレクトリを ../..\ で表す.
ディレクトリのさらに親ディレクトリは, カレントディレクトリから見て ../../..\..\ と表される.

一方絶対パスの表記では, rootディレクトリを / と表記するところから始まる.
上記の ./ は例えば /user/user1/desktop/ という絶対パスで表される.
その場合, ../ とは, 絶対パス/user/user1/ のことである.

例として, 下のようなディレクトリ構造を考える.
Windowsでは, rootディレクトリに対応するものが c:\d:\ のように複数あることがある. ちなみに, これらはWindows上で"Cドライブ"や"Dドライブ"と表示されている.

MyComputer/
|- c:\
|   |- Program files\
|   |- user\
|       |- user1\
|           |- desktop\
|           |   |- file.txt
|           |
|           |- document\
|               |- file.txt
|           
|- d:\
root/
|- user1/
|   |- home/
|   |  |- desktop/
|   |     |- file.txt
|   |
|   |- bin/
|   |- lib/
|   |- etc/
|
|- user2/

Windowsにおいて, ユーザー名"user1"でログインしている場合, スタートメニューからターミナルアプリケーションである Windows Power Shell を起動すると, 絶対パス c:\user\user1\ というディレクトリが監視されている.
ここで, desktopディレクトリに属するfile.txtというファイルを指定したい場合, 相対パスを用いると, ./desktop/file.txt と表記する.
一方絶対パスならば, c:\user\user1\desktop\file.txt と表記する.

次に, カレントパスが絶対パス c:\user\user1\desktop であるとする.
このとき, ./file.txtc:\user\user1\desktop\file.txt を表す.
また, ..\document\file.txtc:\user\user1\document\file.txt を表す.

Windows, macOSともに, 任意のディレクトリをカレントディレクトリとしてターミナルアプリケーションを起動したり, ターミナルへのフォルダやファイルのドラッグ&ドロップにより, 絶対パスの自動入力機能を使用できたりする. また, パス入力中に [TAB] キーを押すことで, パスの自動補完機能を利用できる. そのような機能を用いながらCUIに慣れてほしい.

参考: Anacondaの利用

Downloads - Anaconda からPython 3.x 用のものをダウンロードし, インストールする.

パッケージ管理ツールは, Anacondaを導入した場合condaを使う.

condaでは, パッケージを提供するリポジトリを選択できる.
逆に, どのリポジトリからパッケージを取得するかも指定する必要がある. 最もよく使われるリポジトリconda-forge :: Anaconda Cloudであり, このサイトでパッケージ名を検索したり, インストールコマンドを調べることができる.

condaによるパッケージインストールは,

    conda install -c conda-forge numpy scipy 

のようになる. -c conda-forgeリポジトリを指定しているところである.

Anacondaを導入した場合, numpyやscipy, jupyterなどの基本的なパッケージが同時にインストールされているので, 手軽にPythonを実行する準備を整えることができる.

Gitとクラウドストレージで作るプライベートリポジトリ

はじめに

この記事は, データを複数のデバイス間で安全に同期・編集する方法を模索したものである. 現状, クラウドストレージとGitを組み合わせて, プライベートなリモートリポジトリを用意することで安全なデータ同期を実現できている. 課題は使用するストレージ容量と手間の増加である.

以前クラウドストレージだけでデータを同期していたころ, デバイス間で大規模なデータの衝突が起こり, 収集がつかなくなるという痛い思いをしたことが問題解決のモチベーションとなっている.

目次

  1. バイス間のデータの安全な同期
  2. Gitを利用した解決策
  3. 利点と欠点

データのバックアップ, 同期, バージョン管理

データのバックアップは重要性だ. デジタルデータは簡単に複製できるが, それと同じくらい簡単に永遠に失われるのものなのだから.
PCを構成しているパーツはいつ壊れるかわからないし, データもふとしたことで破損することがある.

データをバックアップするだけなら, 運営主体がしっかりしているところのクラウドストレージは大変便利だ.
しかし, データの同期が必要になったときにはしばしば問題が起こる. その問題は, ローカルとクラウドの同期のタイミングや, データ衝突時(コンフリクト)の解決策を細かく調整できないことから生じる.

異なるPC上で作業をすると一般にPCごとに異なるデータが作られるので, 最終的に一つのデータへと統合する作業が必要になる.
そのとき, 統合すべきところがファイル内に散らばり複雑な状況になると, それぞれ一体どのPCのデータを残せばいいのかよく分からなくなってくる. また, 意図せずデータを上書きしてしまい, 本当に必要なデータが失われる恐れがあるし, 最悪の場合にはそのことに気が付かないかもしれない.

バックアップと同期とは少しそれるが, 長期間作業を続けているとデータのバージョンを管理したくなってくる. データは時間とともに変化し, 異なる時間のデータは系統樹上に位置づけられるだろう. あるデータを様々な方法で加工することを試すとき, できたデータはそれぞれ加工前のデータから枝分かれした子孫となる. 作業が終わってしばらくした後, ふと当時の編集内容を思い出したくなることがある. 加工内容ごとに別の名前のファイルを作ってもいいが, 管理はどんどん大変になっていくだろう. そしておそらく, ファイル名を見たところでそれが何を意味するのか分からなくなるときが, 必ずやってくる.

データを安全に保存し, 共有と編集を行うにはどうしたらいいだろうか.

ナイーブな解決方法

ユーザーがデータの同期をコントロールする方法の一つは, データの編集が必要になるたびローカル環境に一時的なコピーを作るというものである. そして編集したデータをその都度クラウドストレージ上にアップロードすることでクラウドへと反映させる.

この方法の問題点は, クラウドストレージへのアップロードの手間である.
また, 編集したデータを漏れなく把握しサーバへアップロードしなければならない.

このような手間を最小にする方法は, 毎回ディレクトリをまるごとコピー・アップロードすることであるが, クラウドストレージサービスによっては, すでに存在しているものと同名のディレクトリをアップロードすることが不可能な場合がある.
また, 余計なネットワーク通信が発生するという問題もある.

Gitを用いた解決

同期のタイミングやコンフリクトの細かい制御を実現するために, ローカルPCにおいて, 同期対象のディレクトリに移動し, Gitの共有リポジトリとしてセットアップしておく.

cd <path to sync directory on local device>
git init --bare --share

そして, データの操作を行うディレクトリをローカルリポジトリとする.

cd <path to working directory>
git init
git remote add origin <path to sync directory above>

こうすると, 少なくともクラウド上のデータに異常が発生しても, 各PCにローカルリポジトリがあるのでデータが失われることは避けられる.

また, 同期を試みる際には共有リポジトリに対するpush・pullを介すこため, コンフリクトが発生する変更が加えられていれば必ず解決しなければならないようになっている.
Gitを用いることで変更のあったファイルは確実に補足されるし, .gitignoreファイルを設定することで, PCによって例外的に同期しないデータを管理することもできる.

f:id:fumipo-theta:20180629182958p:plain

共有リポジトリがGit Hubのサーバ上にあるのか, 個人が使用するクラウドストレージ上にあるのかという違いがあるが, 要するに, Git Hubのプライベートリポジトリを作るのと同じようなことである.

利点と欠点

利点

  • 共有リポジトリへのpush・pullにより同期タイミングを制御できる
  • commit時に同期する変更箇所を調整できる
  • データ変更を漏れなく補足できる
  • バージョン管理ができる

欠点

  • 共有リポジトリの分だけストレージを余分に使う
  • 同期の際にGitコマンドを使う手間がかかる

おわりに

MicrosoftGitHubを買収したので, OneDriveにgitのような機能が組み込まれてほしいと密かに祈っている.

Sai ver.2 のための Rev-O-mate 設定

はじめに

  • Rev-O-mateのレビューです
  • Sai ver.2で使ってみました
  • 使うだけなら手間は全くと言っていいほどかかりません

  • 自分の好みに合わせてカスタマイズするのも, 少し慣れれば簡単です

 

ファーストインプレッション

先日BitTradeOne社様からRev-O-mateというガジェットが発売されました. 

こちらの製品はクラウドファンディングを通じて実現したもので, イラストレータの方のアイデアから生まれたもののようです. 

今回は一般発売となったものを, ソフマップ様より購入いました. 

 

こんな見た目をしています.  

f:id:fumipo-theta:20180625180129j:plain

 

色はブラック, アルミでできています. 

200g弱の重さが有り, 持ち上げるとずっしりときて高級感があります. 

こういった金属のソリッドな質感, たまりません. 

 

一番目立つのは中央にある, 同心円状のヘアライン加工がされたダイヤルで, 

その周囲に10個のボタンが付いています.

底部には赤・緑・青のLEDがあり, 割り当てた機能に対応して発光します.

ダイヤルは連続的になめらかに回転します. 

また, ダイヤル部は押し下げることができ, その状態でも回せます. 

 

PCとはUSB type-A端子で接続します.

ケーブルは170cmと, 一般的な机ならどこにでも無理なく届くと思います.

また, ケーブルの素材が形状記憶のような性質を持っているので, 取り回しが非常に楽に感じます.

 

実際に使ってみた

今回は手元のデスクトップPCとnew Surface Proで使ってみましょう. 

 OSはどちらもWindows 10, 2018年5月から配信されている, April Creators Update適用済みです.

 

とりあえずPCにUSB端子を挿しましょう.

底面のLEDが光って期待が高まります. 

ドライバは自動でインストールされるようです.

あっけなく使用準備完了です. 

 

公式サイトの中ほどに, 設定用のツールが公開されています.

この記事を書いたときには "Rev-O-mate config tool V1.0 (2018.06.22)" ですが, 

新しいバージョンが公開されていればそれを使いましょう. 

zipファイルになっているので, ダウンロードして解凍しすると, インストーラがあるのでインストールします. 

 

そしてら, 新しいアプリケーション一覧にRev-O-mate Configuration Toolがあるので, それを起動します.

 

設定項目は, 

  • ダイヤル機能最大4種 (下図のDial function)
  • ダイヤル押し下げ時1種
  • ボタン機能最大10種(うち一つはプロファイル切り替えに使うので実質9種)

これら11種の機能を3セット分, 「プロファイル」として登録しておくことができます(下図のプロファイル1, 2, 3). 

 

f:id:fumipo-theta:20180625183835p:plain

 

それぞれ機能の名前が書かれている白い長方形部分をクリックすることで,

割り当てられた機能を変更できます. 

選べる機能には, ダイヤルモードの変更や, マウス操作, キーボード入力, メディアの再生などがあるようです. 

しかも, (まだ使いこなせていませんが) マクロの登録もできるので可能性はとてつもなく広いと思われます. 

 

要するに, マウス操作やキー入力などでできることであれば登録できるわけです. 

そして, ダイヤルを回すということは, 回した分に応じて操作を繰り返すのだと考えれば良さそうです. 

ダイヤルは右回転・左回転で別の機能を割り当てられますし, 回転に対する応答の感度も変えられるようです. 

感度を下げると, 割り当てた操作が始まるまでに必要な回転量が増えます. 

例えば, 細かい制御が必要な機能では感度を下げると良さそうです.

f:id:fumipo-theta:20180625184659p:plain

 

忘れないようにしたいのが, 「プロファイル変更」の機能をどこかに割り当てることです. 

そうしないと, 別のプロファイルに切り替えることができません.

 

プリセットプロファイル

Rev-O-mateは購入時点で既に, Photoshop, Clip Studio, Sai (ver.1)用のプロファイルがそれぞれ設定されています. 

これらのアプリケーション用の他の機能も選ぶことができます.

f:id:fumipo-theta:20180625184157p:plain

 

Sai ver.2で試したところ, プリセットのSai用プロファイルそのままでは上手く動かない機能がありました.

そこで, Sai ver.2のキーボードショートカットを元に設定を変えました. 

Sai ver.2のヘルプ > ショートカットキーの割当 メニューで, それぞれのツールや操作にどのキー入力が対応しているかが分かります.

それを元に, Rev-O-mateのダイヤルとボタン操作をカスタマイズします.

 

私はダイヤル機能に

  • ブラシサイズ (プリセット)
  • キャンバスの拡大縮小 (拡大: キー入力CTRL ;,  縮小: キー入力CTRL -)
  • 画像回転 (右: キー入力SHIFT Pagedown, 左: キー入力SHIFT Pageup)
  • やり直し/取り消し(やり直し: キー入力CTRL z, 取り消し: キー入力CTRL y)

を割り当てています.

同じように, ほかのボタンにも左右反転や回転リセットなどの機能を割り当てることができました.

 

使ってみて

いいところ

  • キーボードを使わなくてもよくなり, デスクを広げられた
  • ブラシサイズや画面回転を直感的に素早く行える
  • ブラウジング時にマウスやタッチパッドのスクロールをしなくていいので腕が疲れなくてすむ
  • 手元を見なくともボタンの判別がつきやすいよう配置が工夫されている(ように思う)

もうひとつなところ(私が慣れればいいのだけれども)

  • ダイヤルやプロファイルモードはLEDの色で分かるが, 覚える必要あり
  • ボタンも同じ

SurfaceダイヤルやWacomIntuosのファンクションキーのように, ダイヤルとボタンに割り当てられている機能がディスプレイに表示されるような機能があれば,  どういう設定をしたのか思い出すのが楽になりそうです.