44
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

セールス部門のためのBashスクリプト入門

Last updated at Posted at 2025-11-30

bash-for-life-v0-ch4j0mfghike1.jpeg

こんにちは。11月よりシステムアイで働き始めました、佐藤です。
今日はセールス部門の私でも簡単にスクリプトが組める素敵な言語、Bashについて紹介していこうと思います。

  • 対象となるのは、普段あまりプログラミングはしないものの業務効率化に興味がある方、そしてExcelやVBAから一歩進んだ自動化を目指す非エンジニアの方
  • ゴールは「あなたのPCで動くこと」、「3日後のあなたが自分自身でコードをアップデートできること」

以上になります。

実行環境はLinux, Mac, WSL(WindowsでLinuxを動かせるや〜つ)を想定しています。
Windows環境の皆さんすみません、WSLについての説明は長くなってしまうのでここでは割愛します 🙏

Bashとは?

まずは今回の主役、Bashについて何者か理解していきましょう。
Terminalを開いて下記を実行してみましょう。

man bash

manというのはmanualの略です。Terminalで知らないコマンドに直面した時は、
man <command-name> でそのコマンドの説明書が読めます。便利かつ1次情報が取得できる方法なので覚えておくと便利です。

実行すると下記のような文章が出てきます。

BASH(1)                                                                           General Commands Manual                                                                           BASH(1)

NAME
       bash - GNU Bourne-Again SHell

SYNOPSIS
       bash [options] [file]

COPYRIGHT
       Bash is Copyright (C) 1989-2005 by the Free Software Foundation, Inc.

DESCRIPTION
       Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file.  Bash also incorporates useful features from the Korn and
       C shells (ksh and csh).

       Bash is intended to be a conformant implementation of the Shell and Utilities portion of the IEEE POSIX specification (IEEE Standard 1003.1).  Bash can be configured to be POSIX-
       conformant by default.

大切なのはcommand language interpreterというところ。これはつまり、とある形式に従って書いたスクリプトをbashが理解して実行してくれるということです。「こんなことがしたいな」と思ったことをコンピュータが理解しやすいように書き換える。基本はそれだけです。新しい外国語を習得する気持ちで、気楽に取り組んでいきましょう 💪

スクリプトを書く際の注意点

例えば、自然言語で「xが5より大きい時に、メッセージを表示する」をbashで表現すると下記のようになります。

x=8

if [[ $x -gt 5 ]]; then
	echo "変数 x の値は $x です。これは 5 より大きいです。"
fi

現在はLLMの発展が目覚ましく、AIがそれっぽいコードは書いてくれますが、大切なのはその中身をあなたが理解しているということです。これはつまり、もし将来的に機能追加やバグ修正でアップデートを行う際に、対応できるということ。そのようなコードはあなたの資産になります

バイブコーディングで1行も理解せずにコードを書いてしまうと、それが正しいロジックを持っているという保証はできませんし、万が一バグを発見した際に修正ができません、、
そうして出来上がったツールを毎日使用し始め、ある日重大な挙動エラーを発見し修正しようとした際、AIが書いてくれたコード1行1行はなんとかして理解していかなければならない負債になります

コードを書くうえで重要なのは、「必要最小限のスコープ(取り扱い範囲)」に処理を収めることです。AIが生成するコードには、目的に対して余計な処理が含まれることが少なくありません。特に学習初期の段階では、たった 5 行の追加でもコード全体を読み解く負担が大きくなります。そのため、まずは自分が理解できる範囲で、最小限の行数で書くことを心がけるのがおすすめです。

つべこべ言わずなんか作ってみよ〜💪

さて、哲学ばかり語っていても仕方ないので何か作りながらその具体的な過程を見ていきましょう。

ここでは、指定した音声ファイルの文字起こしと内容の要約を一発で行ってくれるスクリプトを組んでみようと思います。斜め読みで、「ああ、こういった手順でコードを書いていくんだな」と流れを認識して頂けたらと思います。

下記は今回使用する技術群です。ご参考までに。

  • bash: スクリプトを動かすための基本的なシェル
  • ffmpeg: 音声のフォーマットを変換するツール
  • whisper-cli: 音声の文字起こしを行うツール
  • ollama: テキストの要約を行うLLM

AIにコードを書かせてみる 🤖

手始めにGeminiでコードを吐き出してみました。

#!/ bin/bash

# --- 設定 ---
# Ollamaで使用するモデル名
OLLAMA_MODEL="llama3" 
# whisper-cliで使用するモデル名
WHISPER_MODEL="base"

# --- 関数: ヘルプメッセージの表示 ---
show_help() {
    echo "使用方法: $0 <音声ファイル>"
    echo ""
    echo "指定された音声ファイルを処理し、以下の手順を実行します。"
    echo "1. 必要に応じてffmpegでwavに変換 (48kHz, モノラル)"
    echo "2. whisper-cliで文字起こしを実行"
    echo "3. Ollama (モデル: $OLLAMA_MODEL) で文字起こし結果を要約"
    echo ""
    echo "前提条件: ffmpeg, whisper-cli, ollama がインストールされている必要があります。"
}

# --- 1. 引数の検証 ---
if [ -z "$1" ]; then
    show_help
    exit 1
fi

INPUT_FILE="$1"
if [ ! -f "$INPUT_FILE" ]; then
    echo "エラー: ファイルが見つかりません: $INPUT_FILE"
    exit 1
fi

# ファイル名から拡張子を除いたベース名を取得
BASE_NAME=$(basename "$INPUT_FILE" | sed -E 's/\.[^.]+$//')

# --- 2. 必要に応じてWAVに変換 ---
# whisper-cliがサポートする一般的なフォーマット(例: mp3, flac, m4a, wav)を直接使用できる場合は、
# この変換ステップをスキップしても良いですが、ここでは互換性を高めるためにwav変換をデフォルトとしています。
# 
# 多くのWhisper実装は16kHzのモノラルwavを要求しますが、ここではより汎用的な48kHzで変換します。
# 16kHzにしたい場合は、-ar 16000 に変更してください。

WAV_FILE="${BASE_NAME}.wav"
TRANSCRIPT_FILE="${BASE_NAME}_transcript.txt"
SUMMARY_FILE="${BASE_NAME}_summary.txt"

# 入力ファイルが既にWAVファイルであるか、または異なるファイル名の場合に変換
if [[ "$INPUT_FILE" != *.wav || "$INPUT_FILE" != "$WAV_FILE" ]]; then
    echo "🚀 ステップ 1/3: $INPUT_FILE を $WAV_FILE に変換中..."
    if ! ffmpeg -i "$INPUT_FILE" -ar 48000 -ac 1 -y "$WAV_FILE" 2>/dev/null; then
        echo "❌ エラー: ffmpegによるWAV変換に失敗しました。"
        exit 1
    fi
    PROCESSED_AUDIO="$WAV_FILE"
else
    echo "⏭️ ステップ 1/3: 入力ファイルが既にWAVファイルであるため、変換をスキップします。"
    PROCESSED_AUDIO="$INPUT_FILE"
fi

# --- 3. whisper-cliで文字起こし ---
echo "📝 ステップ 2/3: whisper-cli ($WHISPER_MODEL) で文字起こしを実行中..."

# whisper-cliはstdoutに出力するので、パイプでファイルに保存
# -l auto は言語の自動検出を試みます
if ! whisper-cli -m "$WHISPER_MODEL" -l auto --file "$PROCESSED_AUDIO" | awk '/\[.*\]/{next} {print $0}' > "$TRANSCRIPT_FILE"; then
    echo "❌ エラー: whisper-cliによる文字起こしに失敗しました。"
    exit 1
fi

echo "✅ 文字起こし完了: $TRANSCRIPT_FILE"

# --- 4. Ollamaでサマリを作成 ---
echo "🧠 ステップ 3/3: Ollama ($OLLAMA_MODEL) で要約を生成中..."

# 文字起こしファイルの内容を変数に格納
TRANSCRIPT_CONTENT=$(cat "$TRANSCRIPT_FILE")

# Ollamaへのプロンプト
PROMPT="以下の文字起こしテキストを、箇条書きで簡潔に、日本語で要約してください。\n\n--- 文字起こしテキスト ---\n$TRANSCRIPT_CONTENT"

# ollama run で要約を実行し、ファイルに保存
if ! ollama run "$OLLAMA_MODEL" "$PROMPT" --verbose > "$SUMMARY_FILE"; then
    echo "❌ エラー: Ollamaによる要約生成に失敗しました。"
    exit 1
fi

echo "✅ 要約完了: $SUMMARY_FILE"

# --- 処理結果の表示 ---
echo "---"
echo "🎉 全ての処理が完了しました。"
echo "元のファイル: $INPUT_FILE"
echo "文字起こしファイル: $TRANSCRIPT_FILE"
echo "要約ファイル: $SUMMARY_FILE"
echo "---"

# 一時的に作成したWAVファイルを削除(元のファイルがWAVでない場合)
if [[ "$INPUT_FILE" != *.wav ]]; then
    rm -f "$WAV_FILE"
    echo "🧹 一時ファイル $WAV_FILE を削除しました。"
fi

exit 0

それっぽいコードではあるものの、実行しても文字起こし部分が正しく動作しません。また、ローカル環境で完結すれば十分な要件のスクリプトにしては、少し複雑すぎる印象があります。
例えばヘルプメッセージの表示などは、まずは動作確認する段階では不要です。余計な処理の記述は省き、脳内のリソースをできるだけ空けておきましょう。

大切なのは、小さく始めて骨組みを作り、そのあとで肉付けしていくこと。そうすることで、もっとも早くプロトタイプを形にしつつ、後に保守性も高めていけます。

自分でスクリプトを組み直してみる 🧠

そんなわけで、最小限のコードで実装し直してみました。

#!/bin/bash

input_audio_file="$1"
input_filename="${input_audio_file%.*}"

whisper_cli_path="/Your/directory/to/whisper-cli"
whisper_model_path="/Your/directory/to/whisper-cli-model"
# Language selection will be implementd later
whisper_language="ja"
ollama_instruction="Summarize the following audio transcription. You have to summarize it in Japanese."

# Input validation
if [ -z "$input_audio_file" ]; then
	echo "Usage: $0 <input_audio_file>"
	exit 1
fi
if [ ! -f "$input_audio_file" ]; then
	echo "Error: File '$input_audio_file' not found."
	exit 1
fi
echo "Audio file found 👍"

# Audio file conversion to wav if necessary
extension=$(echo "${input_audio_file##*.}" | tr '[:upper:]' '[:lower:]')
if [ "$extension" != "wav" ]; then
	echo "File '$input_audio_file' isn't a wav file. Converting to wav..."

	input_audio_without_extension="${input_audio_file%.*}"
	converted_audio_file="${input_audio_without_extension}.wav"

	ffmpeg -i "$input_audio_file" "$converted_audio_file"
	echo "Conversion complete. Output file: $converted_audio_file"

	whisper_input_file="$converted_audio_file"
else
	whisper_input_file="$input_audio_file"
fi

# Generate Whisper transcription
whisper_output_name="${input_filename}_transcription"
$whisper_cli_path -m "$whisper_model_path" -f "$whisper_input_file" -l $whisper_language -osrt -of "$whisper_output_name"

# Generate Ollama summarization
whisper_transcript=$(cat "$whisper_output_name".srt)
ollama_prompt=$(printf "%s\n\n%s" "$ollama_instruction" "$whisper_transcript")
ollama_output="${input_filename}_summary.txt"
ollama run gpt-oss:20b "$ollama_prompt" --hidethinking - >"$ollama_output"

103行あったコードが、たったの47行まで短縮できました。
これなら、非技術者の方でも「ちょっと読んでみようかな」と思える分量ですよね。

文字起こし結果

では実際にこのスクリプトを使ってみましょう。
Qiita 投稿用として、パブリックドメインの音源「風立ちぬ」を使って試していきます。

文字起こし結果を見る(チョー長い)
1
00:00:01,000 --> 00:00:03,360
風立ちぬ 堀田つお

2
00:00:03,360 --> 00:00:06,260
こちらはLibriVoxです

3
00:00:06,260 --> 00:00:10,160
LibriVoxの録音はすべてパブリックドメインです

4
00:00:10,160 --> 00:00:14,220
ボランティアについてなど、詳しくはサイトをご覧ください

5
00:00:14,220 --> 00:00:18,900
URLibriVox.org

6
00:00:18,900 --> 00:00:26,000
ルバンスレーブ、イルフォータントイドビーブル、ポールバレリー

7
00:00:26,000 --> 00:00:27,160
助曲

8
00:00:28,600 --> 00:00:33,880
それらの夏の日々、一面にすすきの生い茂った草原の中で

9
00:00:33,880 --> 00:00:37,620
お前が立ったまま熱心に絵を描いていると

10
00:00:37,620 --> 00:00:44,100
私はいつもその片わらの一本の白樺の木陰に身を横たえていたものだった

11
00:00:44,100 --> 00:00:50,880
そうして夕方になって、お前が仕事を済ませて私のそばに来ると

12
00:00:50,880 --> 00:00:55,880
それからしばらく私たちは肩に手をかけ合ったまま

13
00:00:56,380 --> 00:01:06,660
遥か彼方の縁だけ赤音色を帯びた入道雲のむくむくした塊に覆われている地平線の方を眺め合っていたものだった

14
00:01:06,660 --> 00:01:11,180
ようやく暮れようと仕掛けているその地平線から

15
00:01:11,180 --> 00:01:15,400
反対に何者かが生まれていきつつあるかのように

16
00:01:15,400 --> 00:01:20,820
そんな日のある午後、それはもう秋近い日だった

17
00:01:20,820 --> 00:01:26,560
私たちはお前の描きかけの絵を画家に立てかけたまま

18
00:01:26,560 --> 00:01:30,300
その白樺の木陰に寝そべって果物をかじっていた

19
00:01:30,300 --> 00:01:34,840
砂のような雲が空をさらさらと流れていた

20
00:01:34,840 --> 00:01:39,140
その時不意にどっからともなく風が立った

21
00:01:39,140 --> 00:01:47,560
私たちの頭の上ではこの葉の間からちらっと覗いている藍色が伸びたり縮んだりした

22
00:01:47,560 --> 00:01:56,300
それとほとんど同時に草むらの中に何かがばったりと倒れる物音を私たちは耳にした

23
00:01:56,300 --> 00:02:03,500
それは私たちがそこに置きっぱなしにしてあった絵が画家とともに倒れた音らしかった

24
00:02:03,500 --> 00:02:07,120
すぐ立ち上がっていこうとするお前を

25
00:02:07,120 --> 00:02:13,080
私は今の一瞬の何者をも失うまいとするかのように無理に引き止めて

26
00:02:13,080 --> 00:02:15,600
私のそばから離さないでいた

27
00:02:16,600 --> 00:02:19,660
お前は私のするがままにさせていた

28
00:02:19,660 --> 00:02:23,680
風立ちぬいざ行き目やも

29
00:02:23,680 --> 00:02:27,240
ふと口をついて出てきたそんなしくを

30
00:02:27,240 --> 00:02:33,880
私は私に持たれているお前の肩に手をかけながら口の内で繰り返していた

31
00:02:33,880 --> 00:02:39,300
それからやっとお前は私を振りほどいて立ち上がっていった

32
00:02:39,300 --> 00:02:43,100
まだよく渇いてはいなかったカンバスは

33
00:02:43,100 --> 00:02:47,380
その間に一面に草の葉をこびつかせてしまっていた

34
00:02:47,380 --> 00:02:55,660
それを再び画家に立て直しパレットナイフでそんな草の葉を取りにくそうにしながら

35
00:02:55,660 --> 00:03:00,100
まあこんなところをもしお父様にでも見つかったら

36
00:03:00,100 --> 00:03:05,800
お前は私の方を振り向いてなんだか曖昧な微笑をした

37
00:03:05,800 --> 00:03:09,920
もう二三日したらお父様がいらっしゃるわ

38
00:03:09,920 --> 00:03:15,080
ある朝のこと私たちが森の中をさまよっているとき

39
00:03:15,080 --> 00:03:17,420
突然お前がそう言い出した

40
00:03:17,420 --> 00:03:20,700
私はなんだか不満そうに黙っていた

41
00:03:20,700 --> 00:03:28,180
するとお前はそういう私の方を見ながら少ししゃがれたような声で再び口を聞いた

42
00:03:28,180 --> 00:03:32,480
そうしたらもうこんな散歩もできなくなるわね

43
00:03:32,480 --> 00:03:36,200
どんな散歩だってしようと思えばできるさ

44
00:03:36,200 --> 00:03:38,740
私はまだ不満らしく

45
00:03:38,740 --> 00:03:44,340
お前の幾分気遣わしそうな視線を自分の上に感じながら

46
00:03:44,340 --> 00:03:48,280
しかしそれよりももっと私たちの頭上の梢が

47
00:03:48,280 --> 00:03:52,660
何とはなしにざわめいているのに気を取られているような様子をしていた

48
00:03:52,660 --> 00:03:57,100
お父様がなかなか私を話してくださらないわ

49
00:03:57,100 --> 00:04:01,040
私はとうとうジレッタイとでも言うような目つきで

50
00:04:01,040 --> 00:04:02,820
お前の方を見返した

51
00:04:02,820 --> 00:04:07,260
じゃあ僕たちはもうこれでお別れだというのかい

52
00:04:07,260 --> 00:04:09,640
だって仕方がないじゃないの

53
00:04:09,640 --> 00:04:13,700
そう言ってお前はいかにも諦めきったように

54
00:04:13,700 --> 00:04:16,640
私に努めて微笑んでみせようとした

55
00:04:16,640 --> 00:04:20,340
ああその時のお前の顔色の

56
00:04:20,340 --> 00:04:22,760
そしてその唇の色までも

57
00:04:22,760 --> 00:04:25,180
なんと青ざめていたことったら

58
00:04:25,180 --> 00:04:28,560
どうしてこんなに変わっちゃったんだろうな

59
00:04:28,560 --> 00:04:33,500
あんなに私に何もかも任せきっていたように見えたのに

60
00:04:33,500 --> 00:04:37,060
と私は考えあぐねたような格好で

61
00:04:37,060 --> 00:04:41,380
だんだんラコンのゴロゴロしだしてきた狭い山道を

62
00:04:41,380 --> 00:04:44,240
お前を少し先にやりながら

63
00:04:44,240 --> 00:04:46,200
いかにも歩きにくそうに歩いていった

64
00:04:46,200 --> 00:04:50,140
そこいらはもうだいぶ木立が深いと見え

65
00:04:50,140 --> 00:04:52,320
空気は冷え冷えとしていた

66
00:04:52,320 --> 00:04:56,680
ところどころに小さな沢が食い込んだりしていた

67
00:04:56,680 --> 00:05:01,620
突然私の頭の中にこんな考えがひらめいた

68
00:05:01,620 --> 00:05:08,720
お前はこの夏のようなものにもあんなに従順だったように

69
00:05:08,720 --> 00:05:15,380
いやもっともっとお前の父やそれからまたそういう父をも数に入れた

70
00:05:15,380 --> 00:05:21,760
お前のすべてを絶えず支配しているものに素直に身を任せきっているのではないだろうか

71
00:05:21,760 --> 00:05:28,980
節子そういうお前であるのなら私はお前がもっともっと好きになるだろう

72
00:05:28,980 --> 00:05:33,640
私がもっとしっかりと生活の見通しがつくようになったら

73
00:05:33,640 --> 00:05:36,300
どうしたってお前をもらいに行くから

74
00:05:36,300 --> 00:05:41,280
それまではお父さんのもとに今のままのお前でいるがいい

75
00:05:41,280 --> 00:05:46,640
そんなことを私は自分自身にだけ言い聞かせながら

76
00:05:46,640 --> 00:05:49,340
しかしお前のどういうお求めでもするかのように

77
00:05:49,340 --> 00:05:51,540
いきなりお前の手を取った

78
00:05:51,540 --> 00:05:55,560
お前はその手を私に取られるがままにさせていた

79
00:05:55,560 --> 00:05:59,820
それから私たちはそうして手を組んだまま

80
00:05:59,820 --> 00:06:02,780
一つの沢の前に立ち止まりながら

81
00:06:02,780 --> 00:06:06,760
押し黙って私たちの足元に深く食い込んでいる

82
00:06:06,760 --> 00:06:11,340
小さな沢のずっと底の下映えの枝などの上まで

83
00:06:11,340 --> 00:06:14,860
火の光が数知れず枝を差し交わしている

84
00:06:14,860 --> 00:06:19,900
低い寒木の隙間をようやくのことでくぐり抜けながら

85
00:06:19,900 --> 00:06:22,620
まだらに落ちていてそんな木漏れ日が

86
00:06:22,620 --> 00:06:27,120
そこまで届くうちにほとんどあるかないかぐらいになっている

87
00:06:27,120 --> 00:06:30,560
微風にちらちらと揺れ動いているのを

88
00:06:30,560 --> 00:06:33,040
何か切ないような気持ちで見つめていた

89
00:06:33,040 --> 00:06:37,100
それから二、三日したある夕方

90
00:06:37,100 --> 00:06:39,020
私は食堂で

91
00:06:39,020 --> 00:06:41,900
お前がお前を迎えに来た父と

92
00:06:41,900 --> 00:06:44,000
食事を共にしているのを見出した

93
00:06:44,000 --> 00:06:49,620
お前は私の方にぎごちなさそうに背中を向けていた

94
00:06:49,620 --> 00:06:52,120
父の側にいることが

95
00:06:52,120 --> 00:06:55,560
お前にほとんど無意識的に取らせているに違いない

96
00:06:55,560 --> 00:06:56,700
様子や動作は

97
00:06:56,700 --> 00:07:01,440
私にはお前をついぞ見かけたこともないような

98
00:07:01,440 --> 00:07:03,420
若い娘のように感じさせた

99
00:07:03,420 --> 00:07:07,060
たとい私がその名を呼んだにしたって

100
00:07:07,060 --> 00:07:09,200
と私は一人でつぶやいた

101
00:07:09,200 --> 00:07:13,060
あいつは平気でこっちを見向くもしないだろう

102
00:07:13,060 --> 00:07:16,740
まるでもう私の呼んだものではないかのように

103
00:07:16,740 --> 00:07:23,000
その晩、私は一人でつまらなそうに出かけていった散歩から帰ってきたからも

104
00:07:23,000 --> 00:07:27,280
しばらくホテルの人気のない庭の中をブラブラしていた

105
00:07:27,280 --> 00:07:29,820
山ゆりがにおっていた

106
00:07:29,820 --> 00:07:35,340
私はホテルの窓がまだ二つ三つ明かりを漏らしているのを

107
00:07:35,340 --> 00:07:36,500
ぼんやりと見つめていた

108
00:07:36,500 --> 00:07:40,120
そのうち少し霧がかかってきたようだった

109
00:07:40,120 --> 00:07:42,620
それを恐れでもするかのように

110
00:07:42,620 --> 00:07:45,820
窓の明かりは一つ一つ消えていった

111
00:07:45,820 --> 00:07:51,360
そしてとうとうホテル中がすっかり真っ暗になったかと思うと

112
00:07:51,360 --> 00:07:52,940
軽い気しりがして

113
00:07:52,940 --> 00:07:55,360
緩やかに一つの窓が開いた

114
00:07:55,360 --> 00:07:58,980
そしてバラ色の寝巻きらしいものを着た

115
00:07:58,980 --> 00:08:03,580
一人の若い娘が窓の縁にじっと寄りかかり出した

116
00:08:03,580 --> 00:08:06,000
それはお前だった

117
00:08:06,000 --> 00:08:09,720
お前たちが立って行ったのち

118
00:08:09,720 --> 00:08:13,280
日ごと日ごとずっと私の胸を締め付けていた

119
00:08:13,280 --> 00:08:17,060
あの悲しみに似たような幸福の雰囲気を

120
00:08:17,060 --> 00:08:21,500
私は未だにはっきりと蘇らせることができる

121
00:08:21,500 --> 00:08:25,780
私は週日ホテルに閉じこもっていた

122
00:08:25,780 --> 00:08:30,380
そうして長い間お前のために打ち合っておいた

123
00:08:30,380 --> 00:08:32,700
自分の仕事に取り掛かり出した

124
00:08:32,700 --> 00:08:36,420
私は自分にも思いがけないくらい

125
00:08:36,420 --> 00:08:39,500
静かにその仕事に没頭することができた

126
00:08:39,500 --> 00:08:43,800
そのうちにすべてが他の季節に移っていった

127
00:08:43,800 --> 00:08:47,960
そしていよいよ私も出発しようとする前日

128
00:08:47,960 --> 00:08:52,340
私は久しぶりでホテルから散歩に出かけて行った

129
00:08:52,340 --> 00:08:57,680
秋は林の中を見違えるばかりに乱雑にしていた

130
00:08:57,680 --> 00:09:00,680
葉のだいぶ少なくなった木々は

131
00:09:00,680 --> 00:09:06,680
その間から人気の絶えた別荘のテラスをずっと前方に乗り出させていた

132
00:09:06,680 --> 00:09:11,660
菌類の湿っぽい匂いが落葉の匂いに入り混じっていた

133
00:09:11,660 --> 00:09:15,640
そういう思いがけないくらいの季節の推移が

134
00:09:15,640 --> 00:09:22,180
お前と別れてから私の知らぬ間にこんなにも経ってしまった時間というものが

135
00:09:22,180 --> 00:09:24,660
私には異様に感じられた

136
00:09:24,660 --> 00:09:28,200
私の心のうちのどこかしらに

137
00:09:28,200 --> 00:09:30,800
お前から引き離されているのは

138
00:09:30,800 --> 00:09:34,140
ただ一時的だといった確信のようなものがあって

139
00:09:34,140 --> 00:09:37,440
そのためこうした時間の推移までが

140
00:09:37,440 --> 00:09:42,580
私には今までとは全然違った意味を持つようになり出したのであろうか

141
00:09:42,580 --> 00:09:48,500
そんなようなことを私はすぐ後ではっきりと確かめるまで

142
00:09:48,500 --> 00:09:51,260
何やらぼんやりと感じ出していた

143
00:09:51,260 --> 00:09:55,040
私はそれから十数分後

144
00:09:55,040 --> 00:09:57,340
一つの林の尽きたところ

145
00:09:57,340 --> 00:10:00,000
そこから急に打ち開けて

146
00:10:00,000 --> 00:10:03,260
遠い地平線までも一帯に眺められる

147
00:10:03,260 --> 00:10:07,340
一面にすすきの生い茂った草原の中に

148
00:10:07,340 --> 00:10:08,440
足を踏み入れていた

149
00:10:08,440 --> 00:10:12,640
そして私はその傍らの

150
00:10:12,640 --> 00:10:14,760
すでに葉の黄色くなりかけた

151
00:10:14,760 --> 00:10:17,840
一本の白樺の木陰に身を横たえた

152
00:10:17,840 --> 00:10:20,720
そこはその夏の日々

153
00:10:20,720 --> 00:10:23,500
お前が絵を描いているのを眺めながら

154
00:10:23,500 --> 00:10:27,500
私がいつも今のように身を横たえていたところだった

155
00:10:27,500 --> 00:10:33,560
あの時にはほとんどいつも入道雲に遮られていた地平線の辺りには

156
00:10:33,560 --> 00:10:38,140
今はどこか知らない遠くの山脈までが

157
00:10:38,140 --> 00:10:42,380
真っ白な穂先をなびかせたススキの上を分けながら

158
00:10:42,380 --> 00:10:45,620
その輪郭を一つ一つくっきりと見せていた

159
00:10:46,920 --> 00:10:51,760
私はそれらの遠い山脈の姿をみんな暗記してしまうくらい

160
00:10:51,760 --> 00:10:54,700
じっと目に力を入れて見入っているうちに

161
00:10:54,700 --> 00:10:56,980
今まで自分のうちに潜んでいた

162
00:10:56,980 --> 00:11:00,980
自然が自分のために極めて置いてくれたものを

163
00:11:00,980 --> 00:11:04,140
今こそやっと見出したという確信を

164
00:11:04,140 --> 00:11:08,360
だんだんはっきりと自分の意識に昇らせ始めていた

165
00:11:08,360 --> 00:11:10,800
ショー終わり

166
00:11:10,800 --> 00:11:13,880
この録音はパブリックドメインです

要約結果

【要約】
物語は夏の日々を舞台に、主に「風立ちぬ」というタイトルで語られます。主人公と友人(または恋人)がすすき畑の白樺の木陰で絵を描きながら過ごし、風が吹き、夕暮れの赤い雲と地平線を見つめる情景が繰り返されます。二人はお互いを支え合いながら、未来や別れについて語り合い、時折離れ離れになる苦しみや不安を共有します。物語は季節の移り変わりと共に、友情や愛、そして失われた存在への郷愁を描き、主人公が時間と共に成長し、記憶を抱きながら自らの人生を見つめ直すという結末へと進んでいきます。

まとめ

Qiita投稿用にパブリックドメインの朗読データを使ってテストしてみたのですが、「情緒あふれる文学作品をわずか数行で要約する」という、なんともサイコパスな結果になってしまいました。

とはいえツールとしての実用性は高く、実際にはアイデア出しの録音音声などを使用しています。自分のメモでは抜け落ちていた部分も綺麗にまとめてくれて、なかなか使えます。ローカルでコマンド一発、文字起こしから要約、ファイルの保存まで全自動で完結するため、手軽で重宝しています。

本当はもう少し細部の説明もしたかったのですが締め切りが、、
スクリプトを書くうえでの大まかな流れや考え方が、少しでも伝わっていれば幸いです。
それではみなさんハッピーメリークリスマス 🎄

44
0
0

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
44
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?