<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>🏃 Usage on mosty</title><link>https://tamada.github.io/mosty/usage/</link><description>Recent content in 🏃 Usage on mosty</description><generator>Hugo -- gohugo.io</generator><language>ja</language><copyright>Copyright &amp;copy; 2026 by Haruaki Tamada. Made with [Hugo](https://gohugo.io/). Deployed to [GitHub Pages](https://pages.github.com/).</copyright><lastBuildDate>Fri, 25 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tamada.github.io/mosty/usage/index.xml" rel="self" type="application/rss+xml"/><item><title>Excel ファイルの前提</title><link>https://tamada.github.io/mosty/usage/workbook/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://tamada.github.io/mosty/usage/workbook/</guid><description>&lt;p&gt;&lt;strong&gt;mosty&lt;/strong&gt; は、次のような構造の Excel ファイル（&lt;code&gt;.xlsx&lt;/code&gt;、&lt;code&gt;.xlsm&lt;/code&gt;）を想定しています。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;📄 シートの構造&#10; &lt;div id="-シートの構造" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e3%82%b7%e3%83%bc%e3%83%88%e3%81%ae%e6%a7%8b%e9%80%a0" aria-label="アンカー"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1 つのファイルに、複数のシートがある。&lt;/li&gt;&#10;&lt;li&gt;各シートは &lt;strong&gt;1 行が 1 人の学生&lt;/strong&gt; を表す表になっている。&lt;/li&gt;&#10;&lt;li&gt;各行の先頭の数列（既定では A〜C 列）に、&lt;strong&gt;学生証番号&lt;/strong&gt; と &lt;strong&gt;氏名&lt;/strong&gt; がある。&#10;&lt;ul&gt;&#10;&lt;li&gt;どちらが左でも構いません。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;表の上に、タイトルや見出しの行があっても構いません。&lt;/li&gt;&#10;&lt;li&gt;表の途中に、空行、小見出しの行、集計の行があっても構いません。学生証番号のない行は、学生の行として扱いません。&lt;/li&gt;&#10;&lt;li&gt;表が A1 から始まっていなくても構いません。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;例:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;A&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;B&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;C&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;D&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;E&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;課題の成績&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;3&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;学生証番号&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;氏名&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;課題1&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;課題2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;合計&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1234001&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;京都 太郎&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;9&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;=SUM(C4:D4)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;1234002&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;京産 花子&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;10&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;8&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;=SUM(C5:D5)&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;配点表やメモのように、学生の行を持たないシートがあっても構いません。そのようなシートは検証の対象外になります。&lt;/p&gt;</description></item><item><title>設定ファイルを作る（init）</title><link>https://tamada.github.io/mosty/usage/init/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://tamada.github.io/mosty/usage/init/</guid><description>&lt;p&gt;&lt;code&gt;mosty init&lt;/code&gt; は、Excel ファイルの各シートについて、学生証番号の列、氏名の列、学生の行の範囲を推定し、設定ファイルに書き出します。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;🚀 使い方&#10; &lt;div id="-使い方" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e4%bd%bf%e3%81%84%e6%96%b9" aria-label="アンカー"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mosty init grades.xlsx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;&lt;code&gt;grades.xlsx&lt;/code&gt; と同じディレクトリに、設定ファイル &lt;code&gt;mosty.grades.xlsx.json5&lt;/code&gt; を書き出します。&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Analyze the Excel files and write the config files &lt;span style="color:#f92672"&gt;(&lt;/span&gt;pass 1&lt;span style="color:#f92672"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Usage: mosty init &lt;span style="color:#f92672"&gt;[&lt;/span&gt;OPTIONS&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &amp;lt;EXCEL_FILEs&amp;gt;...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Arguments:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;EXCEL_FILEs&amp;gt;... The target Excel files &lt;span style="color:#f92672"&gt;(&lt;/span&gt;.xlsx, .xlsm&lt;span style="color:#f92672"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Options:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -p, --id-pattern &amp;lt;REGEX&amp;gt; Specify the pattern of student ids &lt;span style="color:#f92672"&gt;[&lt;/span&gt;default: ^&lt;span style="color:#f92672"&gt;[&lt;/span&gt;0-9&lt;span style="color:#f92672"&gt;]{&lt;/span&gt;7&lt;span style="color:#f92672"&gt;}&lt;/span&gt;$&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -C, --max-column &amp;lt;INDEX&amp;gt; Specify the last column index &lt;span style="color:#f92672"&gt;(&lt;/span&gt;0-origin&lt;span style="color:#f92672"&gt;)&lt;/span&gt; to search student ids and names &lt;span style="color:#f92672"&gt;[&lt;/span&gt;default: 2&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -o, --output &amp;lt;FILE&amp;gt; Specify the destination of the config file &lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; means stdout&lt;span style="color:#f92672"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -f, --force Overwrite the existing config files&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -l, --level &amp;lt;LEVEL&amp;gt; Specify the log level &lt;span style="color:#f92672"&gt;[&lt;/span&gt;default: warn&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;possible values: error, warn, info, debug, trace, off&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -h, --help Print help &lt;span style="color:#f92672"&gt;(&lt;/span&gt;see more with &lt;span style="color:#e6db74"&gt;&amp;#39;--help&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;オプション&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;説明&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-p, --id-pattern&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;学生証番号の正規表現（&lt;a href="../workbook#-%E5%AD%A6%E7%94%9F%E8%A8%BC%E7%95%AA%E5%8F%B7%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9" &gt;Excel ファイルの前提&lt;/a&gt;）。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-C, --max-column&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;学生証番号と氏名を探す最後の列。0 始まりの番号で、既定の &lt;code&gt;2&lt;/code&gt; は A〜C 列を意味します。D 列まで探すなら &lt;code&gt;3&lt;/code&gt; です。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-o, --output&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;設定ファイルの書き出し先。&lt;code&gt;-&lt;/code&gt; を指定すると標準出力に出します。Excel ファイルを 1 つだけ指定したときに使えます。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-f, --force&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;設定ファイルがすでにあるときに上書きします。指定しないと、上書きせずにエラーになります。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;複数の Excel ファイルを指定すると、それぞれの設定ファイルを書き出します。&lt;/p&gt;</description></item><item><title>参照を検証する（check）</title><link>https://tamada.github.io/mosty/usage/check/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://tamada.github.io/mosty/usage/check/</guid><description>&lt;p&gt;&lt;code&gt;mosty check&lt;/code&gt; は、設定ファイルに従って、シートをまたいだ参照が正しい学生の行を指しているかを検証します。&#10;&lt;code&gt;mosty verify&lt;/code&gt; でも同じように動きます。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;🚀 使い方&#10; &lt;div id="-使い方" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e4%bd%bf%e3%81%84%e6%96%b9" aria-label="アンカー"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mosty check grades.xlsx&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;&lt;code&gt;grades.xlsx&lt;/code&gt; と同じディレクトリの &lt;code&gt;mosty.grades.xlsx.json5&lt;/code&gt; を読み込んで検証します。&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Verify the cross-sheet references with the config files &lt;span style="color:#f92672"&gt;(&lt;/span&gt;pass 2&lt;span style="color:#f92672"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Usage: mosty check &lt;span style="color:#f92672"&gt;[&lt;/span&gt;OPTIONS&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &amp;lt;EXCEL_FILEs&amp;gt;...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Arguments:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;EXCEL_FILEs&amp;gt;... The target Excel files &lt;span style="color:#f92672"&gt;(&lt;/span&gt;.xlsx, .xlsm&lt;span style="color:#f92672"&gt;)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Options:&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -c, --config &amp;lt;FILE&amp;gt; Specify the config file&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -p, --id-pattern &amp;lt;REGEX&amp;gt; Specify the pattern of student ids&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --no-init Exit with an error when the config file is missing, instead of running &lt;span style="color:#e6db74"&gt;`&lt;/span&gt;init&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -o, --output &amp;lt;FILE&amp;gt; Specify the destination of the results &lt;span style="color:#f92672"&gt;(&lt;/span&gt;&lt;span style="color:#e6db74"&gt;`&lt;/span&gt;-&lt;span style="color:#e6db74"&gt;`&lt;/span&gt; means stdout&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;default: -&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -F, --format &amp;lt;FORMAT&amp;gt; Specify the output format of the results &lt;span style="color:#f92672"&gt;[&lt;/span&gt;default: default&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;possible values: default, json, markdown&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -l, --level &amp;lt;LEVEL&amp;gt; Specify the log level &lt;span style="color:#f92672"&gt;[&lt;/span&gt;default: warn&lt;span style="color:#f92672"&gt;]&lt;/span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;possible values: error, warn, info, debug, trace, off&lt;span style="color:#f92672"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; -h, --help Print help &lt;span style="color:#f92672"&gt;(&lt;/span&gt;see more with &lt;span style="color:#e6db74"&gt;&amp;#39;--help&amp;#39;&lt;/span&gt;&lt;span style="color:#f92672"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;オプション&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;説明&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-c, --config&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;設定ファイルを指定します。Excel ファイルを 1 つだけ指定したときに使えます。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-p, --id-pattern&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;学生証番号の正規表現。設定ファイルの &lt;code&gt;id_pattern&lt;/code&gt; より優先します。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;--no-init&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;設定ファイルがないときに、&lt;code&gt;mosty init&lt;/code&gt; を実行せずにエラーにします。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-o, --output&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;検証結果の書き出し先。省略したときと &lt;code&gt;-&lt;/code&gt; のときは標準出力に出します。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;-F, --format&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;検証結果の出力形式（&lt;code&gt;default&lt;/code&gt;、&lt;code&gt;json&lt;/code&gt;、&lt;code&gt;markdown&lt;/code&gt;）。&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;複数の Excel ファイルを指定すると、それぞれを検証し、結果をまとめて出力します。&#10;一部のファイルが読めなくても、検証できたファイルの結果は出力します。&lt;/p&gt;</description></item><item><title>検出される問題</title><link>https://tamada.github.io/mosty/usage/problems/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://tamada.github.io/mosty/usage/problems/</guid><description>&lt;p&gt;&lt;code&gt;mosty check&lt;/code&gt; が検出する問題の種類と、直し方をまとめます。&#10;括弧内は、JSON 形式で出力したときの &lt;code&gt;kind&lt;/code&gt; の値です。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;🔀 学生証番号の不一致（&lt;code&gt;id_mismatch&lt;/code&gt;）&#10; &lt;div id="-学生証番号の不一致id_mismatch" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e5%ad%a6%e7%94%9f%e8%a8%bc%e7%95%aa%e5%8f%b7%e3%81%ae%e4%b8%8d%e4%b8%80%e8%87%b4id_mismatch" aria-label="アンカー"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最終成績!C4 (1234003 山田 一郎) -&amp;gt; 課題!E7 (1234004 佐藤 次郎): student id mismatch&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;参照元の行の学生と、参照先の行の学生が異なります。いわゆる「1 行ずれ」です。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;よくある原因&lt;/strong&gt;: 参照先のシートで行を挿入・削除した、数式をコピーしたときに参照がずれた、など。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;直し方&lt;/strong&gt;: 参照元の数式が、同じ学生の行を指すように直します。同じ列で連続して報告されている場合は、途中から行がずれていることが多いので、ずれ始めた行を探してください。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;氏名のセルが別の行を参照している場合も、この問題として報告します。&#10;学生証番号と氏名を別々に名簿から参照していて、片方だけずれている場合に見つかります。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;📊 複数の学生にまたがる範囲の参照（&lt;code&gt;multi_student_range&lt;/code&gt;）&#10; &lt;div id="-複数の学生にまたがる範囲の参照multi_student_range" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e8%a4%87%e6%95%b0%e3%81%ae%e5%ad%a6%e7%94%9f%e3%81%ab%e3%81%be%e3%81%9f%e3%81%8c%e3%82%8b%e7%af%84%e5%9b%b2%e3%81%ae%e5%8f%82%e7%85%a7multi_student_range" aria-label="アンカー"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;最終成績!H3 (1234002 京産 花子) -&amp;gt; 課題!E4:E8: range spans multiple students&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;ある学生の行から、複数の学生の行を含む範囲を参照しています（&lt;code&gt;=SUM(課題!E4:E8)&lt;/code&gt;、&lt;code&gt;=MAX(試験!C:C)&lt;/code&gt; など）。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;よくある原因&lt;/strong&gt;: 1 人分の範囲のつもりで、複数行の範囲を書いてしまった。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;直し方&lt;/strong&gt;: その学生の行だけを参照するように直します。全員の平均などを意図している場合は、学生の行ではない集計の行で計算するか、検索関数（&lt;code&gt;VLOOKUP&lt;/code&gt; など）を使ってください。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;👯 学生証番号の重複（&lt;code&gt;duplicated_id&lt;/code&gt;）&#10; &lt;div id="-学生証番号の重複duplicated_id" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e5%ad%a6%e7%94%9f%e8%a8%bc%e7%95%aa%e5%8f%b7%e3%81%ae%e9%87%8d%e8%a4%87duplicated_id" aria-label="アンカー"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;試験: duplicated student id 1234003 at 試験!A4, 試験!A5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;同じシートの学生の範囲に、同じ学生証番号が複数あります。&lt;/p&gt;</description></item><item><title>設定ファイル</title><link>https://tamada.github.io/mosty/usage/config/</link><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid>https://tamada.github.io/mosty/usage/config/</guid><description>&lt;p&gt;設定ファイルは、各シートのどの行がどの学生を表しているかを書いたファイルです。&#10;&lt;code&gt;mosty init&lt;/code&gt; が書き出し、&lt;code&gt;mosty check&lt;/code&gt; が読み込みます。利用者が直接書き直しても構いません。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;📁 ファイル名&#10; &lt;div id="-ファイル名" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e5%90%8d" aria-label="アンカー"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;既定では、Excel ファイルと同じディレクトリの &lt;code&gt;mosty.&amp;lt;Excel ファイル名&amp;gt;.json5&lt;/code&gt; です。&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Excel ファイル&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;設定ファイル&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;grades.xlsx&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;mosty.grades.xlsx.json5&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;grades.xlsm&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;mosty.grades.xlsm.json5&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;先頭を &lt;code&gt;mosty.&lt;/code&gt; にしているのは、シェルで Excel ファイル名を補完するときに、設定ファイルが候補に混ざらないようにするためです。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&#10;&lt;h2 class="relative group"&gt;📝 書式&#10; &lt;div id="-書式" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#-%e6%9b%b8%e5%bc%8f" aria-label="アンカー"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://json5.org/" &gt;JSON5&lt;/a&gt; で書きます。JSON5 は JSON を拡張したもので、コメント（&lt;code&gt;//&lt;/code&gt;、&lt;code&gt;/* */&lt;/code&gt;）、末尾のカンマ、クォートなしのキーが使えます。普通の JSON で書いても構いません。&lt;/p&gt;&#10;&lt;div class="highlight-wrapper"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json5" data-lang="json5"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;id_pattern:&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;^[0-9]{7}$&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;sheets:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;名簿&amp;#34;&lt;/span&gt;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;id_column:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;0,&lt;/span&gt; &lt;span style="color:#75715e"&gt;// A 列&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;name_column:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;1,&lt;/span&gt; &lt;span style="color:#75715e"&gt;// B 列&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;start_row:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;1,&lt;/span&gt; &lt;span style="color:#75715e"&gt;// Excel の 2 行目&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;end_row:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;120,&lt;/span&gt; &lt;span style="color:#75715e"&gt;// Excel の 121 行目&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;最終成績&amp;#34;&lt;/span&gt;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;id_column:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;1,&lt;/span&gt; &lt;span style="color:#75715e"&gt;// B 列&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;name_column:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;0,&lt;/span&gt; &lt;span style="color:#75715e"&gt;// A 列（氏名が学生証番号の左にある）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;start_row:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;3,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;end_row:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;122,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;配点&amp;#34;&lt;/span&gt;: { &lt;span style="color:#960050;background-color:#1e0010"&gt;skip:&lt;/span&gt; &lt;span style="color:#960050;background-color:#1e0010"&gt;true&lt;/span&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&lt;span style="color:#960050;background-color:#1e0010"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#960050;background-color:#1e0010"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;p&gt;&lt;strong&gt;行と列の番号は 0 始まり&lt;/strong&gt; です。列の &lt;code&gt;0&lt;/code&gt; が A 列、行の &lt;code&gt;0&lt;/code&gt; が Excel の 1 行目です。&lt;/p&gt;</description></item></channel></rss>