LoginSignup
275
216

More than 5 years have passed since last update.

Markdownで表の記載をするときにイラッとした経験のある人集まれ

Last updated at Posted at 2014-08-12

はじめに


QiitaMarkdown稿



Markdown: Qiita

 | Left align | Right align | Center align |
 |:-----------|------------:|:------------:|
 | This | This | This |
 | column | column | column |
 | will | will | will |
 | be | be | be |
 | left | right | center |
 | aligned | aligned | aligned |

Left align Right align Center align
This This This
column column column
will will will
be be be
left right center
aligned aligned aligned

前提条件

ローカルにPHP実行環境があること
UTF8でのファイル操作ができること

どうする

Excelで作った表をMarkdownに変換しちゃいましょう。

まず、以下のスクリプトを適当にサクッと書いて保存しておきます。

tsvToMarkdown.php
<?php
if(count($argv) !== 2){
    echoUsage();
}
$tsv_file = $argv[1];
$row = 1;
if (($handle = fopen($tsv_file, "r")) === FALSE) {
    echoUsage($tsv_file." is not a readable file.");
}
while (($data = fgetcsv($handle, 1000, "\t","\"")) !== FALSE) {
    echo str_replace(array("\r","\n"), "", nl2br("| ".implode($data, " | ")." |"))."\n";
    if($row == 1){
        echo "|".implode(array_fill(0, count($data), ":---------") , "|")."|\n";
    }
    $row++;
}
fclose($handle);

function echoUsage($msg = null){
    echo "Usage: ./tsvToMarkdown.php [target_tsv_file]\n";
    echo "TSV ファイルはUTF8で記載してください。\n";
    echo $msg;
    exit(1);
}

Excelで適当に表を書き、Markdown化したい範囲をクリップボードにコピーします。

エクセル表サンプル.jpg

コピーした内容をテキストエディタに貼り付けてUTF-8で保存します。

table_sample.tsv
        概要(聞かれてその意味を自分の言葉で答えることができること)  営業職   エンジニア職
クロスサイト・スクリプティング(XSS)  最低限の知識  簡単に概要を説明できる   ○ ○
    踏み込んだ知識   サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる △ ○
    対策を実行出来る    "一般的な対策方法を実装出来る
ダメな対策例を説明できる"       ○
SQL インジェクション    最低限の知識  簡単に概要を説明できる   ○ ○
    踏み込んだ知識   サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる △ ○
    対策を実行出来る    "一般的な対策方法を実装出来る
ダメな対策例を説明できる"       ○
OSコマンドインジェクション  最低限の知識  簡単に概要を説明できる   ○ ○
    踏み込んだ知識   サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる △ ○
    対策を実行出来る    "一般的な対策方法を実装出来る
ダメな対策例を説明できる"       ○
クロスサイト・リクエストフォージェリ(CSRF)    最低限の知識  簡単に概要を説明できる   ○ ○
    踏み込んだ知識   サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる △ ○
    対策を実行出来る    "一般的な対策方法を実装出来る
ダメな対策例を説明できる"       ○
Session Fixation(セッションIDの固定化)   最低限の知識  簡単に概要を説明できる   ○ ○
    踏み込んだ知識   サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる △ ○
    対策を実行出来る    "一般的な対策方法を実装出来る
ダメな対策例を説明できる"       ○
HeaderInjection攻撃   最低限の知識  簡単に概要を説明できる   ○ ○
    踏み込んだ知識   サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる △ ○
    対策を実行出来る    "一般的な対策方法を実装出来る
ダメな対策例を説明できる"       ○

これで、タブ区切り、ダブルクオーテーションでクオートされたファイルが作成されます。

最初に作った変換スクリプトを走らせます。

php ./tsvToMarkdown.php table_sample.tsv > result.txt

result.txt
|  |  | 概要(聞かれてその意味を自分の言葉で答えることができること) | 営業職 | エンジニア職 |
|:---------|:---------|:---------|:---------|:---------|
| クロスサイト・スクリプティング(XSS) | 最低限の知識 | 簡単に概要を説明できる | ○ | ○ |
|  | 踏み込んだ知識 | サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる | △ | ○ |
|  | 対策を実行出来る | 一般的な対策方法を実装出来る<br />ダメな対策例を説明できる |  | ○ |
| SQL インジェクション | 最低限の知識 | 簡単に概要を説明できる | ○ | ○ |
|  | 踏み込んだ知識 | サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる | △ | ○ |
|  | 対策を実行出来る | 一般的な対策方法を実装出来る<br />ダメな対策例を説明できる |  | ○ |
| OSコマンドインジェクション | 最低限の知識 | 簡単に概要を説明できる | ○ | ○ |
|  | 踏み込んだ知識 | サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる | △ | ○ |
|  | 対策を実行出来る | 一般的な対策方法を実装出来る<br />ダメな対策例を説明できる |  | ○ |
| クロスサイト・リクエストフォージェリ(CSRF) | 最低限の知識 | 簡単に概要を説明できる | ○ | ○ |
|  | 踏み込んだ知識 | サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる | △ | ○ |
|  | 対策を実行出来る | 一般的な対策方法を実装出来る<br />ダメな対策例を説明できる |  | ○ |
| Session Fixation(セッションIDの固定化) | 最低限の知識 | 簡単に概要を説明できる | ○ | ○ |
|  | 踏み込んだ知識 | サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる | △ | ○ |
|  | 対策を実行出来る | 一般的な対策方法を実装出来る<br />ダメな対策例を説明できる |  | ○ |
| HeaderInjection攻撃 | 最低限の知識 | 簡単に概要を説明できる | ○ | ○ |
|  | 踏み込んだ知識 | サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる | △ | ○ |
|  | 対策を実行出来る | 一般的な対策方法を実装出来る<br />ダメな対策例を説明できる |  | ○ |
概要(聞かれてその意味を自分の言葉で答えることができること) 営業職 エンジニア職
クロスサイト・スクリプティング(XSS) 最低限の知識 簡単に概要を説明できる
踏み込んだ知識 サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる
対策を実行出来る 一般的な対策方法を実装出来る
ダメな対策例を説明できる
SQL インジェクション 最低限の知識 簡単に概要を説明できる
踏み込んだ知識 サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる
対策を実行出来る 一般的な対策方法を実装出来る
ダメな対策例を説明できる
OSコマンドインジェクション 最低限の知識 簡単に概要を説明できる
踏み込んだ知識 サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる
対策を実行出来る 一般的な対策方法を実装出来る
ダメな対策例を説明できる
クロスサイト・リクエストフォージェリ(CSRF) 最低限の知識 簡単に概要を説明できる
踏み込んだ知識 サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる
対策を実行出来る 一般的な対策方法を実装出来る
ダメな対策例を説明できる
Session Fixation(セッションIDの固定化) 最低限の知識 簡単に概要を説明できる
踏み込んだ知識 サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる
対策を実行出来る 一般的な対策方法を実装出来る
ダメな対策例を説明できる
HeaderInjection攻撃 最低限の知識 簡単に概要を説明できる
踏み込んだ知識 サービスの内容ごとに攻撃の頻度、難易度、影響度を説明できる
対策を実行出来る 一般的な対策方法を実装出来る
ダメな対策例を説明できる

最後に


使

使Qiita稿Excel

Web便
275
216
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

275
216