アニメ『デスマーチからはじまる異世界狂想曲』
異世界アニメはたくさん溢れてて、テンプレ感半端ないのですが、まだぜんぜん飽きる気がしません。おそらく私が常に現実逃避したいと考えてるからでしょう。特に私と正反対の主人公無敵ものは大好物。タイトルのデスマーチというのは、ヨードンの「デスマーチ」から来てる言葉で、ソフトウェアの失敗プロジェクトの代名詞ですね。本アニメの1話目で、主人公は家に帰れず徹夜の連続シーンがありますが、これがデスマーチ? なんだか小規模に描かれてて、デスマーチというか、プログラマーをやってたらこれ日常風景のような気もします。まあそう考えること自体が異常なのでしょうけど。
デスマーチで精神破壊されている状態で、突然異世界に行ってしまったら、私ならこのタイミングで、間違いなく燃え尽き症候群になります。もう何もしたくない、リザードマンの大群、渡りに船。冒頭で死んでしまって、あの世の方の異世界行くと思います。主人公の精神力すごいです。
さて、デスマーチでソースまでカオスになってなければ、たいていのソースコードはコメントから始まりますね。コメント別に、抽出する方法を考えてみました。
ブロックコメントタイプ(*あり)
takk@deb9:~$ head test1.c /* 1 header * 2 header * 3 header */ int main() { } takk@deb9:~$
一番よく見かけるコメントでしょうか。エディタによっては、改行後に
自動で*(アスタリスク)を入力してくれますね。
このタイプのコメントの場合、ファイル冒頭のコメントを抽出するには、
コメント終了の*/を見つけるまで表示すれば良いので簡単です。
takk@deb9:~$ sed '/\*\//q' test1.c /* 1 header * 2 header * 3 header */ takk@deb9:~$
ブロックコメントタイプ(*なし)
takk@deb9:~$ head test2.c /* 1 header 2 header 3 header */ int main() { } takk@deb9:~$
一番コメント追記がしやすいタイプですね。こちらも多く使われてると思います。
このタイプのソース冒頭部のコメントを抽出するにも、同じコマンドでいけますね。
takk@deb9:~$ sed '/\*\//q' test2.c /* 1 header 2 header 3 header */ takk@deb9:~$
行コメントタイプ(/* ~ */)
takk@deb9:~$ head test3.c /* 1 header */ /* 2 header */ /* 3 header */ int main() { }
ブロックコメントである/* ~ */を行単位で使って、使い勝手が悪くなるコメントの書き方ではありますが、昔はよく見かけましたし、私自身見栄えが良いと感じてたのでよく使う時期もありました。まあ実用性を考えると、コメントが追記し難い上に、始まりと終わりが分からないという、パターンマッチを使って情報抽出するときに不便な点があり、今はあまり見かけなくなった気がしてます。
このタイプを抽出するには、先頭の/スラッシュがなくなる行の直前まで表示すればOKです。
takk@deb9:~$ sed '/^[^\/]/Q;/^$/Q' test3.c /* 1 header */ /* 2 header */ /* 3 header */ takk@deb9:~$
行コメントタイプ(//)
takk@deb9:~$ head test4.c // 1 header // 2 header // 3 header int main() { }
/* ~ */よりは、コメントの追記がしやすいですね。 こちらを抽出するのも、さきほどと同じコマンドが使えます。
takk@deb9:~$ sed '/^[^\/]/Q;/^$/Q' test4.c // 1 header // 2 header // 3 header takk@deb9:~$
コメント