使用の感想と最終版
実際に本アウトライン・プロセッサーを使用しての感想を列挙します。
○ 良かった点
書きたい場面や結末から逆算して物語を組み立てるようになった
→そのために必要な小さな場面を箇条書きして、物語の起伏を想像できるようになった。
小さな場面に集中できた
→千文字前後に収まるように、無駄な描写や会話を意識して削除するようになった。
小さな場面を書き切るという小さな目標の達成感を味わえた
アニメなどの映像から、印象に残った物語の起伏を箇条書きで残すようになった。
→創作の引き出しが増えた。
○ 悪かった点
小さなファイル単位で書くので、キャラクターの名前などを修正する場合に手間がかかった。
→当方はポメラDM100で書いているので、grep置き換え機能が使えません。PCの高機能エディタで書くなら問題ないのはわかっていますが。
○ 総評
物語を書く生産性は上がったと感じました。
書く速度、物語の密度、どちらにも効果があるように感じました。
これからも、このツールを使って物語を生産していくつもりです。
○ おわりに
公募向けで、物語を一つのテキストファイルにまとめる場合に、[見出し]の階層構造に対応している本ツールは役立つと思います。
PCにpython2.xをインストールし、本ツールの全角タブ二個をタブに変換したoutliner.pyを是非ともお試しください。
お金を出せば便利なアウトライン・プロセッサーが手に入ります。その前に、本ツールでアウトラインから物語を書いて、その効果を体感するのもありだと思います。
以下は最終版の使用方法です。
> python outliner.py ルート.txt 出力.txt 読み込むテキストファイルのプレフィックス
と実行してください。
読み込むテキストファイルのプレフィックスとは、
プレフィックス*.txt
とみなし、ファイルを検索します。
プレフックスがなければ、実行ディレクトリの全.txtファイルが対象になります。
例) 実行ディレクトリのファイル群
032-0.txt → ルート.txt
032-1.txt → 場面1.txt
032-2.txt → 場面2.txt
032.txt → 出力.txt
> python outliner.py 032-0.txt 032.txt 032-
以下、最終プログラムです。
------------ outliner.py
# coding:utf-8
# run on python2.7x
import codecs
import sys
import glob
class Context:
def __init__(self, filename):
f = codecs.open(filename, 'r', 'utf-8')
self.lines_ = f.readlines()
f.close()
def dump(self):
for l in self.lines_:
print l
def line(self, n = 0):
if len(self.lines_) <= n:
return None
return self.lines_[n].rstrip()
def headline(self, n):
l = self.line(n)
if l is None:
return None
if len(l) <= 0:
return None
h = l.lstrip()
if h[0] == '[' and h[-1] == ']':
return h[1:-1]
return None
if 1 < len(sys.argv):
contexts = {}
root = Context(sys.argv[1])
stack = [[root.line(), 1]]
o = None
if 2 < len(sys.argv):
o = codecs.open(sys.argv[2], 'w', 'utf-8')
searchStr = '*.txt'
if 3 < len(sys.argv):
searchStr = sys.argv[3] + searchStr
filenames = glob.glob(searchStr)
for filename in filenames:
a = Context(filename)
k = a.line()
if k is None:
pass
elif 0 < len(k):
if k in contexts:
print 'fatal error : duplicate headline ', k, ' in ', filename
sys.exit()
else:
contexts[k] = a
while len(stack):
cur = stack[-1]
k = cur[0]
n = cur[1]
stack[-1][1] += 1
if k in contexts:
h = contexts[k].headline(n)
if h is None:
l = contexts[k].line(n)
if l is None:
stack.pop()
else:
#print l
# cut comment
if 0 < len(l) and l[0] == '#':
continue
if o is None:
print l
else:
o.write(l)
o.write('\n')
else:
#print '[',h,']'
h0 = h.rstrip()
h1 = h0.lstrip()
stack.append([h1, 1])
else:
print 'warning : not found ', k
stack.pop()
if o is None:
pass
else:
o.close()
Pythonで実行する【アウトライン・プロセッサー】コメント削除機能あり トマトジュー酢 @zuper
★で称える
この小説が面白かったら★をつけてください。おすすめレビューも書けます。
カクヨムを、もっと楽しもう
カクヨムにユーザー登録すると、この小説を他の読者へ★やレビューでおすすめできます。気になる小説や作者の更新チェックに便利なフォロー機能もお試しください。
新規ユーザー登録(無料)簡単に登録できます
この小説のタグ
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます