読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

マトリクス表を考えてみた

ものすごくどうでもいいのだが、最近書いた表が見づらい。気になったので考えてみた。

試行表

以下のように、これからやることをリストアップした。 テキトーに書いたのだが、見づらいのが気になった。

1版

2版

結果 やること
gccC言語のHelloWorldをコンパイルする
gccWindowsプログラミングのHelloWorldをコンパイルする
g++でC++言語のHelloWorldをコンパイルする
g++でWindowsプログラミングのHelloWorldをコンパイルする
gccgtk+3ライブラリを使ったHelloWorldをコンパイルする
g++でgtkmm3ライブラリを使ったHelloWorldをコンパイルする

マトリクスにしてみる

マトリクスにしたほうが見やすいかも?

コンパイラ Console Windows GTK+3 GTKmm3
gcc
g++

gcc,g++もヘッダ項目にしたい。でもmarkdownだと1行目しかヘッダ項目にできない。 以下はHTMLで書いた。マトリクスっぽくできた。

HelloWorld試行表
コンパイラConsoleWindowsGTK+3GTKmm3
gcc
g++

最終的に、×のどちらかだけにしたい。 "未"は未実施。やった結果、×のどちらかになる。

でも、ハイフンは残ってしまう。 ハイフンは試行しない(できない)組合せの部分である。

GTK+3はgccでしかコンパイルしない。GTKmm3はg++でしかコンパイルしない(できない)。 だからgccとGTKmm3、g++とGTK+3の組合せでは試行しない(できない)。 よって、その部分がハイフンになってしまう。それが見づらい。

GTK+はライブラリなので、表を2つに分けるか。

2表に分ける

コンパイラ Console Windows
gcc
g++
コンパイラ ライブラリ 結果
gcc GTK+3
g++ GTKmm3

以下はHTML版。

HelloWorld試行表
コンパイラConsoleWindows
gcc
g++
HelloWorld試行表(GTK+)
コンパイラライブラリ結果
gccGTK+3
g++GTKmm3

1表と2表どちらがいいか

表を2つに分けると、1列目のヘッダ項目が重複する。 ハイフンな項目が2つ出るのと、重複ヘッダが3(6)つ出るのと、どちらがマシか。 パっと見は1つの表で済むほうがいい。 2表もあると面倒な印象。2つの表はヘッダが異なるから、表ごとにその意味を読み取らねばならない。

でも1表の場合、ハイフンの意味がわかるにはgcc/g++とGTK+/GTKmmについて知らねばならない。 その説明をグダグダ書くくらいなら、ヘッダが重複しても2表に分けたほうがいい気がする。

2表なら「なぜgccとGTKmm3の組合せはないのか?」という疑問を持ちづらい。 その組合せがありえないなら、そもそも表で表現すべきではない。 無用な疑問を想起させるような表現はひかえたほうが伝わりやすいはず。

そもそも起こりえない組合せを表に表現すべきではない。 余計な疑問をもたせるような表現は、分かりづらく伝わりづらいものになってしまう。

もっといえば、この2表でも、まだわかりづらい気がする。 2表にしても、gcc/g++とGTK+/GTKmmについての説明がないのが原因か。

予備知識

"C言語-gcc-GTK+3"、"C++言語-g++-GTKmm3"、という関係を把握しているなら、以下のようにできるはず。

GTK+試行表
ライブラリ結果
GTK+3
GTKmm3

GTK+3はgccコンパイルする」という知識が前提になっている。 しかし、そんな説明はどこにも書いていない。

ようするに、言語、コンパイラ、ライブラリの関係についての予備知識が必要。 その説明なしで、いきなり表だけ見せられても伝わらない。

たとえば、今その関係を把握しても、べつの言語を勉強しはじめたりしたらすぐに忘れそう。 この表を読み取るのに必要な予備知識の説明がほしい。 そもそもgccやg++はMinGW/Cygwin/Unix環境上のコンパイル環境である。そういう特殊な環境の話である。 背景を忘れたら理解不能になる。

でも、文章で読むのは面倒くさい。表のほうが楽そう。キーワードだけで把握できないか。

予備知識の表

キーワードを表にしてみた。

言語 コンパイラ GTK+ライブラリ
C言語 gcc GTK+3
C++言語 g++ GTKmm3

でもこの表で「gccC言語コンパイラである」「GTK+3はC言語ライブラリである」と伝わるか? 「C言語コンパイルするときはgccを使うが、C++言語をコンパイルするときはg++を使う」という意味だとわかるか?

3つの項目が絡んでいるからややこしくなっているのでは? "言語‐コンパイラ"、"言語‐ライブラリ"の2つの関係に分けるべき。 なぜなら、この2つは"言語"の意味が違う。

"言語‐コンパイラ"の場合は「その言語で書かれたコードをコンパイルするには、このツールを使います」という意味。 "言語‐ライブラリ"の場合は「このライブラリはその言語で書かれました」という意味。

もちいる言葉はおなじでも、使われ方が違うために意味が違う。 よくあることだけど、こういうのが頭の中で整理できずにごちゃごちゃになってしまう。

表にするなら、以下のようになるか。

プログラミング言語とそのコンパイラ
言語コンパイラ
C言語gcc
C++言語g++
GTK+ライブラリとその使用言語
ライブラリ使用言語
GTK+C言語
GTKmmC++言語

表のまとめ

プログラミング言語とそのコンパイラ

言語コンパイラ
C言語gcc
C++言語g++

ライブラリとその作成言語

ライブラリ言語
GTK+C言語
GTKmmC++言語

試行表

環境構築をしたので、以下のように動作確認をする。その結果を表にする。

HelloWorld試行表
コンパイラConsoleWindows
gcc
g++
GTK+試行表
ライブラリ結果
GTK+3
GTKmm3

課題

しかし、HTMLで書かねば表現できないのが面倒くさい。 ソースが見づらいし、編集しづらい。ミスを誘う。

HTMLでは中央寄せをするためにstyle="text-align: center;"とかCSSをHTMLタグ内に書いてしまっているのが嫌。でもそのためだけにCSSを作成するのも嫌。どちらにせよHTMLソースが一層見づらくなる。

Markdownなら見やすいし編集しやすいが、tableの表現力が不足している。 1行目しかヘッダ項目にできないせいでマトリクスっぽくできない。

CSVやTSVファイルからtableやマトリクス表が作れたら楽になるか。 それとも、そのために別ファイルにして参照を設定するのが面倒か。 たぶんJavaScriptライブラリとかでありそう。 はてなブログで使えるかはわからないが。

表はGoogleスプレッドシートで作成してHTMLに埋め込むのが早いか。 できるかどうか知らないが。

次回やってみるか。