Miz Gracia

Miz Gracia - 情報統括サイト

【日報】2023/12/22【スプレッドシートの勉強】

今日は久々にシナリオをコードに起こす作業をしたけど、結構、やり方を忘れていて時間がかかった。

やったこと

  • 仕事 - 8.5h
  • スチル絵(1)
    • ラフ - 4h
      • 実際はもうちょっと短時間でやった気もするけど、ちょっと計測が曖昧
  • コーディング - 3h
    • 久々のシナリオコード化作業。ふとセリフが気になってしまって悩んだし、なんとなく手がやり方を忘れていたのでちょっと時間がかかった。他のキャラのシナリオはもっと短時間でできそう

コメント

今日は家に自分しかいなかったので、軽い食事で済ませて朝から仕事と作業に打ち込んでいた。家族がいなかったら食生活の意識が下がるので、不摂生になるかもしれない(家族がいると、家族の分の栄養をちゃんと考えなきゃという気になる。一人だと雑になる。)

それはそうと。

久々にスプレッドシートを触りました。楽しいぜ!

個人的に、ティラノスクリプトでノベルゲームを作る場合、スプレッドシートやエクセルのようなツールは必須級だと思っています。逆に、スプレッドシートもエクセルも使わない人は何を使っているんだろう。

私は、いつも以下の手順でノベルゲームのシナリオ部分を作っています。


(1) Notionでシナリオを書く。『話者・台詞』のフォーマットで書く。

(例)

  • 田中・なぁ、昨日の宿題やったか?
  • 山田・それがさぁ、学校に参考書を置いてきたから全く手付かずなんだよ!

(2) Notionで書いた文章をスプレッドシートにコピペする。

  このとき、SPLIT(B1:B, "・")のような関数を使って、話者のセルとセリフのセルに分解する。

(例)

田中 なぁ、昨日の宿題やったか?
山田 それがさぁ、学校に参考書を置いてきたから全く手付かずなんだよ!



(3) 別のシートにコピペする。



(4) コピペ先のシートで、文字数の管理や表情の指定を行う。

  1行当たりn文字までと決めているので、その行数を超えると赤く表示されるようにしている。

  文章の推敲作業などもまとめてやってしまう。



(5) 入力された情報を元にコード出力するようなシートになっているので、出力されたコードをコピペする。

(例)

# 田中
なぁ、昨日の宿題やったか?[p]
# 山田
それがさぁ、学校に参考書を置いてきたから[r]
全く手付かずなんだよ![p]



(6) 動作確認などをしながら背景やBGM、効果音を追加し、微調整して完成



もしスプレッドシートがなければ、ひとつひとつに「# 田中」と書かなければならないのだろうし、書いている行が規定文字数をはみ出していないか確認しないといけないので、絶対に面倒臭いです。スプレッドシートにはとても助けられています。

と、たびたび私はスプレッドシートExcelも同じく)はいいぞと言い続けているのですが、スプレッドシートは難しいと感じる方も少なくないです。敷居が高そうだと。

実際、スプレッドシートはそんなに難しいものじゃないのですが。勉強するための一歩が踏み出せない方のため、一つだけ。

どうにかして『IF関数』だけ覚えてください。他の関数のことは、一旦全部無視していいです。

IF関数は、「もし~なら、OO、そうじゃないならXX。」という処理をしてくれる関数です。

=IF(100>10, "正解!", "不正解!")

これは、100が10より大きければ、「正解!」、そうじゃなければ「不正解!」と表示する関数です。100は10より大きいですか? 大きいですよね。だから「正解!」です。

みたいな感じのことをしてくれるのが、IF関数。もっと慣れてきたら……

=IF(A1="大阪", A1&"府", A1&"県")

A1セルに入力されいるのが「大阪」なら「大阪府」、そうじゃないなら「XX県」みたいな感じに表示する関数です。……A1セルに東京と書いたら「東京県」になります。

……みたいな感じで。

なんかとにかく、IF関数に関していっぱい調べて、いっぱい書いてみて、あの手この手で遊んでみてください。最初は難しく感じるかもしれませんが、いつかは慣れてきます。IF関数マスターになってください。

スプレッドシートはIF関数以外に大量の関数があるのに、なぜIF関数だけマスターになることを薦めるかというと、『ほとんどの関数は、極論、IF関数で置き換えることができる』からです。

IF関数は最強です。

IF関数で遊んでいると、ある日、以下のような長〜い関数を思いつくかもしれません。

=IF(A1="TNK","田中",IF(A1="YMD","山田",IF(A1="OKD","岡田",IF(A1="TBC","田淵","その他"))))

複雑なことを書いていますが、全部IF関数です。

そして、「これもっと綺麗に書く方法とかないのかな〜」と疑問に思ったら、ChatGPTに質問をしてみてください。

私:
スプレッドシートです。
=IF(A1="TNK","田中",IF(A1="YMD","山田",IF(A1="OKD","岡田",IF(A1="TBC","田淵","その他"))))
という関数を書いたのですが、管理しづらいです。もっといい書き方はないですか?
ChatGPT:
そのような複雑なネストされたIF関数を簡潔にする方法があります。代わりに、以下の方法を試してみてください。
まず、VLOOKUP関数を使って参照テーブルを作成します。例えば、A列には"TNK"、"YMD"、"OKD"、"TBC"があり、それぞれに対応する名前がB列に並んでいるとします。
次に、以下の方法でVLOOKUP関数を使用します:
=IFERROR(VLOOKUP(A1,参照テーブルの範囲,2,FALSE),"その他")
ここで、「参照テーブルの範囲」はあなたが作成した列Aと列Bの範囲を指します。例えば、A1からB4までの範囲であれば「A1:B4」となります。これにより、より管理しやすく、柔軟性のある方法で条件に基づいた名前を取得できます。

上記は、実際の回答です。

こんな感じで、勉強していくうちに他の関数に関心が持てる機会がやってきます。そのときに初めて、その関数のことをちょっと齧ってみてください。

この例だと、「VLOOKUP関数」について触れられています。この関数について、興味が湧いて調べてみてください。すでにIF関数をマスターしていれば、VLOOKUP関数もいずれ理解できると思います。

……と、このように。

「IF関数を先にマスターし、それを元手に色々やってみて、他の関数へと興味を広げていく」というやり方を進めていけば、気づいた頃にはスプレッドシートが扱えるようになっていると思います。

スプレッドシートの勉強においてChatGPTは超便利なので、活用してみてください。

……と、書いてみたものの。

日報はいつもその場のノリと勢いで書いているので、推敲していないのですが、思っていたよりちゃんと役に立つ情報が提供できる気がするので、今度、ちゃんと書き直そうかな。