ものすごくどうでもいいのだが、最近書いた表が見づらい。気になったので考えてみた。
試行表
以下のように、これからやることをリストアップした。 テキトーに書いたのだが、見づらいのが気になった。
1版
- gccでC言語のHelloWorldをコンパイルする
- g++でC++言語のHelloWorldをコンパイルする
- gccでWindowsプログラミングのHelloWorldをコンパイルする
- g++でWindowsプログラミングのHelloWorldをコンパイルする
- gccでgtk+3ライブラリを使ったHelloWorldをコンパイルする
- g++でgtkmm3ライブラリを使ったHelloWorldをコンパイルする
2版
結果 | やること |
---|---|
○ | gccでC言語のHelloWorldをコンパイルする |
○ | gccでWindowsプログラミングのHelloWorldをコンパイルする |
○ | g++でC++言語のHelloWorldをコンパイルする |
未 | g++でWindowsプログラミングのHelloWorldをコンパイルする |
未 | gccでgtk+3ライブラリを使ったHelloWorldをコンパイルする |
未 | g++でgtkmm3ライブラリを使ったHelloWorldをコンパイルする |
マトリクスにしてみる
マトリクスにしたほうが見やすいかも?
コンパイラ | Console | Windows | GTK+3 | GTKmm3 |
---|---|---|---|---|
gcc | ○ | ○ | 未 | ‐ |
g++ | ○ | 未 | ‐ | 未 |
gcc,g++もヘッダ項目にしたい。でもmarkdownだと1行目しかヘッダ項目にできない。 以下はHTMLで書いた。マトリクスっぽくできた。
コンパイラ | Console | Windows | GTK+3 | GTKmm3 |
---|---|---|---|---|
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版。
コンパイラ | Console | Windows |
---|---|---|
gcc | ○ | ○ |
g++ | ○ | 未 |
コンパイラ | ライブラリ | 結果 |
---|---|---|
gcc | GTK+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+3 | 未 |
GTKmm3 | 未 |
「GTK+3はgccでコンパイルする」という知識が前提になっている。 しかし、そんな説明はどこにも書いていない。
ようするに、言語、コンパイラ、ライブラリの関係についての予備知識が必要。 その説明なしで、いきなり表だけ見せられても伝わらない。
たとえば、今その関係を把握しても、べつの言語を勉強しはじめたりしたらすぐに忘れそう。 この表を読み取るのに必要な予備知識の説明がほしい。 そもそもgccやg++はMinGW/Cygwin/Unix環境上のコンパイル環境である。そういう特殊な環境の話である。 背景を忘れたら理解不能になる。
でも、文章で読むのは面倒くさい。表のほうが楽そう。キーワードだけで把握できないか。
予備知識の表
キーワードを表にしてみた。
言語 | コンパイラ | GTK+ライブラリ |
---|---|---|
C言語 | gcc | GTK+3 |
C++言語 | g++ | GTKmm3 |
でもこの表で「gccはC言語コンパイラである」「GTK+3はC言語ライブラリである」と伝わるか? 「C言語をコンパイルするときはgccを使うが、C++言語をコンパイルするときはg++を使う」という意味だとわかるか?
3つの項目が絡んでいるからややこしくなっているのでは? "言語‐コンパイラ"、"言語‐ライブラリ"の2つの関係に分けるべき。 なぜなら、この2つは"言語"の意味が違う。
"言語‐コンパイラ"の場合は「その言語で書かれたコードをコンパイルするには、このツールを使います」という意味。 "言語‐ライブラリ"の場合は「このライブラリはその言語で書かれました」という意味。
もちいる言葉はおなじでも、使われ方が違うために意味が違う。 よくあることだけど、こういうのが頭の中で整理できずにごちゃごちゃになってしまう。
表にするなら、以下のようになるか。
言語 | コンパイラ |
---|---|
C言語 | gcc |
C++言語 | g++ |
ライブラリ | 使用言語 |
---|---|
GTK+ | C言語 |
GTKmm | C++言語 |
表のまとめ
プログラミング言語とそのコンパイラ
言語 | コンパイラ |
---|---|
C言語 | gcc |
C++言語 | g++ |
ライブラリとその作成言語
ライブラリ | 言語 |
---|---|
GTK+ | C言語 |
GTKmm | C++言語 |
試行表
環境構築をしたので、以下のように動作確認をする。その結果を表にする。
コンパイラ | Console | Windows |
---|---|---|
gcc | ○ | ○ |
g++ | ○ | 未 |
ライブラリ | 結果 |
---|---|
GTK+3 | 未 |
GTKmm3 | 未 |
課題
しかし、HTMLで書かねば表現できないのが面倒くさい。 ソースが見づらいし、編集しづらい。ミスを誘う。
HTMLでは中央寄せをするためにstyle="text-align: center;"
とかCSSをHTMLタグ内に書いてしまっているのが嫌。でもそのためだけにCSSを作成するのも嫌。どちらにせよHTMLソースが一層見づらくなる。
Markdownなら見やすいし編集しやすいが、tableの表現力が不足している。 1行目しかヘッダ項目にできないせいでマトリクスっぽくできない。
CSVやTSVファイルからtableやマトリクス表が作れたら楽になるか。 それとも、そのために別ファイルにして参照を設定するのが面倒か。 たぶんJavaScriptライブラリとかでありそう。 はてなブログで使えるかはわからないが。
表はGoogleスプレッドシートで作成してHTMLに埋め込むのが早いか。 できるかどうか知らないが。
次回やってみるか。