【2026年7月最新】C言語の関数(function)完全ガイド|宣言・引数・戻り値・プロトタイプ・ポインタ渡し・再帰まで徹底解説

【2026年7月最新】C言語の関数(function)完全ガイド|宣言・引数・戻り値・プロトタイプ・ポインタ渡し・再帰まで徹底解説

この記事の内容

  1. 01C言語の関数とは――処理を部品化して再利用する仕組み
  2. 02関数の定義と呼び出しの基本構文
  3. 03プロトタイプ宣言(関数宣言)とは
  4. 04引数の渡し方:値渡しと参照渡し(ポインタ)の違い
  5. 05配列・構造体を引数に取る関数の書き方
  6. 0

    C言語の関数を使いこなすためには、関数設計の「考え方」を身につけることが重要です。以下に実務でよく使われる関数設計の原則をまとめます。

    ✔️単一責任の原則:1つの関数は1つのことだけを行う。「入力の検証」と「データの処理」と「出力の整形」を別の関数に分離する
    ✔️関数名は動詞+名詞で命名:何をする関数かが一目でわかるよう「calculate_total」「print_report」「validate_input」のように動詞で始める
    ✔️関数の長さは画面1枚以内:1つの関数が長くなりすぎたら、処理を細かい関数に分割するサイン
    ✔️引数は3つ以内を目安:引数が多すぎる場合は構造体にまとめるか、関数の責任を分割することを検討する
    ✔️エラー処理を明示する:関数がエラーを返す可能性がある場合は戻り値でエラーコードを返し、呼び出し元でチェックする設計にする

    これらの原則はC言語固有のものではなく、あらゆるプログラミング言語に共通する設計の考え方です。C言語の関数でこれらを習得しておくと、C++・Java・Python等の他言語を学ぶ際にも役立ちます。

    実際の開発現場でよく見かける関数パターンとして「入力→変換→出力」のパイプライン型設計があります。例えば「データを読み込む関数(read_data)」→「データを処理する関数(process_data)」→「結果を出力する関数(output_result)」というように、それぞれを独立した関数に分割することでテスト・デバッグ・再利用がしやすくなります。main()はこれらの関数をつなぐ「司令塔」として、処理の流れを定義するだけの役割にするのが理想的な構造です。

    6
    再帰関数と関数ポインタの基礎
  7. 07Claude CodeでC言語の関数を自動生成する
  8. FAQよくある質問

「関数って何のために使うの?」「プロトタイプ宣言が必要な理由が分からない」「値渡しと参照渡しの違いが理解できない」——C言語の関数を学ぶ際に多くの人が最初にぶつかる疑問です。

C言語の関数(function)は、一連の処理をひとまとめにして名前を付け、何度でも呼び出せるようにする仕組みです。同じ処理を何度も書かずに済む(コードの再利用)、処理の目的が分かりやすくなる(可読性向上)、バグを修正するとき1箇所直せばOK(保守性向上)という3つのメリットがあります。

この記事では、C言語の関数について定義・呼び出し・プロトタイプ宣言・引数(値渡し/参照渡し)・戻り値・配列・構造体・再帰関数・関数ポインタまで、コード例付きで体系的に解説します。

代表菅澤 代表菅澤
関数はC言語プログラミングの基礎中の基礎であり、プログラムの品質を大きく左右します。「main関数に全処理を詰め込む」スタイルで書かれたコードは読みにくく、デバッグが困難になります。処理を適切な粒度で関数に分割する「関数分割設計」はC言語エンジニアとしての基本スキルです。
AI鬼管理山崎 AI鬼管理山崎
この記事では「なぜプロトタイプ宣言が必要なのか」「なぜ値渡しでは呼び出し元の変数が変わらないのか」という「なぜ」の部分を重点的に解説しています。コードを書く前に仕組みを理解することで、よくあるバグを事前に防げます。
✔️C言語の関数の基本概念とメリットが分かる
✔️関数の定義・呼び出し・戻り値の書き方が分かる
✔️プロトタイプ宣言(関数宣言)が必要な理由と書き方が分かる
✔️値渡しと参照渡し(ポインタ)の違いと使い分けが理解できる
✔️配列・構造体を引数や戻り値に使う方法が分かる
✔️再帰関数と関数ポインタの基本が理解できる
✔️Claude CodeでC言語の関数コードを自動生成・デバッグする方法が分かる
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理
📌 この記事の結論
【2026年7月最新】C言語の関数(function)完全ガイド|宣言・引数・戻り値・プロトタイプ・ポインタ渡し・再帰まで徹底解説
C言語の関数を完全解説。関数の定義と呼び出し・プロトタイプ宣言・引数(値渡し/参照渡し)・戻り値・配列/構造体引数・関数ポインタ・再帰関数まで、コード例付きで非エンジニア向けに解説。

01 C言語の関数とは――処理を部品化して再利用する仕組み 関数を使うメリットとmain関数の役割を理解する

C言語の関数は「処理のひとまとまりに名前を付けて、何度でも呼び出せるようにしたもの」です。料理のレシピに例えると、関数は「カレーの作り方」というレシピ(処理の手順)で、呼び出しはそのレシピを使って実際に調理することに当たります。

📚 用語解説

関数(function):C言語で処理のまとまりに名前を付けて再利用可能にしたコードブロック。「戻り値の型 関数名(引数リスト) { 処理; return 戻り値; }」の形式で定義します。main()もC言語の関数の1つで、プログラム実行時に最初に呼び出される特別な関数です。

比較項目関数なし(main一括)関数分割
コードの長さ1ファイルに全処理が集中各関数は短く読みやすい
再利用性同じ処理を何度もコピー関数を呼び出すだけ
デバッグのしやすさ原因の特定が困難問題のある関数を特定しやすい
チーム開発分担しづらい関数ごとに分担できる
バグ修正全箇所を修正が必要1つの関数を修正すれば全体に反映

C言語プログラムの中で特別な役割を持つのがmain()関数です。プログラム実行時に最初に呼び出される「エントリーポイント」で、他の関数をmain()から呼び出す形でプログラムが展開されます。

プログラム開始
OSがmain()を呼び出す
main()実行
他の関数を呼び出す
各関数を実行
処理が完了したら戻る
main()終了
return 0でプログラム終了

02 関数の定義と呼び出しの基本構文 戻り値の型・関数名・引数リスト・return文の書き方

C言語の関数定義は「戻り値の型 関数名(引数リスト) { 処理; return 戻り値; }」の形式です。戻り値がない場合はvoidを使います。

#include <stdio.h> /* 関数定義: int型の値を2つ受け取り、合計をint型で返す */ int add(int a, int b) { return a + b; /* 戻り値をreturnで返す */ } /* 戻り値なし(void)の関数 */ void print_hello(void) { printf("Hello, World!\n"); /* void関数にreturnは不要(または return; のみ)*/ } int main() { int result = add(3, 5); /* 関数を呼び出す */ printf("3 + 5 = %d\n", result); /* → 8 */ print_hello(); /* void関数は戻り値なし */ return 0; }
戻り値の型使いどころreturn文の書き方
int整数値を返す(計算結果、エラーコード等)return 整数値;
double / float小数点を含む値を返すreturn 小数値;
char *文字列(ポインタ)を返すreturn 文字列ポインタ;
void戻り値なし(処理だけを行う関数)return; または省略可
ポインタ型アドレスを返す(動的確保メモリ等)return ポインタ変数;
💡return文は関数を即座に終了させる

return文は関数の戻り値を指定すると同時に、関数の実行をその場で終了させます。「早期return(early return)」として、エラー条件を先にチェックしてreturnすることでネストを減らす設計パターンに使われます。void関数でも「return;」(値なし)で途中終了できます。

03 プロトタイプ宣言(関数宣言)とは 使う前に宣言が必要な理由とヘッダーファイルへの分離

C言語では、関数を使う前に「この関数が存在する」ことをコンパイラに知らせる必要があります。これがプロトタイプ宣言(関数宣言)です。プロトタイプ宣言なしで関数を後から定義すると、コンパイラが関数を認識できずエラーになる場合があります。

📚 用語解説

プロトタイプ宣言(prototype declaration):関数の定義より先に「関数の名前・引数の型・戻り値の型」だけをコンパイラに伝える宣言。「戻り値型 関数名(引数型リスト);」の形式で、関数本体({...}の部分)は書かずセミコロンで終わります。通常はソースファイルの先頭またはヘッダーファイル(.h)に書きます。

#include <stdio.h> /* プロトタイプ宣言(ファイル先頭に書く) */ int multiply(int a, int b); void show_result(int result); int main() { int r = multiply(4, 7); show_result(r); return 0; } /* 関数本体(main()の後ろに書いてもOK) */ int multiply(int a, int b) { return a * b; } void show_result(int result) { printf("結果: %d\n", result); }
💡ヘッダーファイル(.h)でプロトタイプ宣言を管理する

複数のソースファイルに分割したプロジェクトでは、関数のプロトタイプ宣言をヘッダーファイル(例:calc.h)にまとめて書き、使う側のファイルで「#include "calc.h"」と読み込みます。標準ライブラリの「#include 」もprintf()等のプロトタイプ宣言をまとめたヘッダーファイルです。

Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

04 引数の渡し方:値渡しと参照渡し(ポインタ)の違い 呼び出し元の変数を変更できる参照渡しのしくみを理解する

C言語の関数に引数を渡す方法には値渡し(value passing)参照渡し(reference passing / ポインタ渡し)の2種類があります。この違いを理解することは、C言語プログラミングで最も重要なスキルのひとつです。

📚 用語解説

値渡し(value passing):関数呼び出し時に変数の値をコピーして渡す方法。関数内でコピーを変更しても、呼び出し元の元の変数は変更されません。C言語ではデフォルトで全ての引数が値渡しになります。

#include <stdio.h> /* 値渡し:関数内の変更は呼び出し元に反映されない */ void double_value(int x) { x = x * 2; /* xのコピーを変更するだけ */ printf("関数内: %d\n", x); } /* 参照渡し(ポインタ):関数内の変更が呼び出し元に反映される */ void double_pointer(int *x) { *x = *x * 2; /* 元の変数を直接変更 */ printf("関数内: %d\n", *x); } int main() { int num = 5; double_value(num); printf("値渡し後: %d\n", num); /* → 5(変わらない)*/ double_pointer(&num); printf("参照渡し後: %d\n", num); /* → 10(変わる)*/ return 0; }
比較項目値渡し参照渡し(ポインタ渡し)
引数の型通常の型(int x)ポインタ型(int *x)
呼び出し方func(num)func(&num) ← &でアドレスを渡す
関数内でのアクセスxとして使う*xとして使う(デリファレンス)
呼び出し元への影響なし(コピーを操作)あり(元データを直接操作)
使いどころ読み取り専用・小さいデータ変更が必要・大きいデータ(構造体等)
代表菅澤 代表菅澤
値渡しと参照渡しの混同は、C言語プログラマーが最初につまずく最大の落とし穴です。「関数内で変更したのに呼び出し元が変わらない」というバグの原因は必ずここにあります。「変更を外に持ち出したい=ポインタ渡し」と覚えておけば迷いません。

swap関数は参照渡しの理解のための定番練習です。2つの変数を交換する键渡し写法:値渡しでは交換できず、ポインタ渡しでのみ正しく動作します。

/* NG: 値渡しでは交換できない */ void swap_ng(int a, int b) { int tmp = a; a = b; b = tmp; } /* OK: ポインタ渡しで正しく交換 */ void swap_ok(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; } int main() { int x = 10, y = 20; swap_ng(x, y); printf("値渡し後: x=%d, y=%d ", x, y); /* -> 10, 20 */ swap_ok(&x, &y); printf("ポインタ渡し後: x=%d, y=%d ", x, y); /* -> 20, 10 */ return 0; }

ローカル変数は関数内で宣言し、関数終了と同時に消えます。グローバル変数はプログラム全体から参照できますが、値の追跡が困難になりバグの温床になりやすいため、必要な値はポインタ引数で渡すスタイルが推奨されます。

常用的なパターンとして、static変数(関数内で宣言するが値が保持される)もよく使われます。static int count = 0;と宣言すると、関数が呼ばれるたびに値が累積加算されるカウンター関数が作れます。変数スコープを関数内に限定したまま状態を保持したい場合に有効で、グローバル変数の代替として利用されます。

void count_up() { static int count = 0; /* static: 関数終了でも値保持 */ count++; printf("呼び出し回数: %d ", count); } int main() { count_up(); /* -> 1 */ count_up(); /* -> 2 */ count_up(); /* -> 3 */ return 0; }

05 配列・構造体を引数に取る関数の書き方 配列は自動的にポインタ渡しになる点に注意する

5-1. 配列を引数に渡す

C言語では、配列を関数に渡すと自動的にポインタとして扱われます(配列の先頭アドレスが渡される)。そのため関数内で配列を変更すると、呼び出し元の配列も変更されます。また、配列のサイズ情報は失われるため、サイズを別の引数として渡すのが一般的です。

#include <stdio.h> /* 配列引数:int arr[]はint *arrと同じ意味 */ void print_array(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int sum_array(int *arr, int size) { int total = 0; for (int i = 0; i < size; i++) { total += arr[i]; } return total; } int main() { int nums[] = {10, 20, 30, 40, 50}; int n = sizeof(nums) / sizeof(nums[0]); print_array(nums, n); printf("合計: %d\n", sum_array(nums, n)); return 0; }

📚 用語解説

配列の減衰(array decay):C言語で配列を関数に渡したり、ポインタに代入したりするとき、配列が先頭要素へのポインタに自動変換される現象。「int arr[5]」を関数に渡すと「int *」として扱われます。このとき配列サイズ(要素数)の情報は失われるため、サイズは別途引数として渡す必要があります。

5-2. 構造体を引数に渡す

typedef struct { char name[50]; int age; } Person; /* const付きポインタ渡し:変更なし・コピーコストなし(推奨) */ void print_person(const Person *p) { printf("%s: %d歳\n", p->name, p->age); } /* ポインタ渡し:関数内で変更可能 */ void birthday(Person *p) { p->age++; }

06 再帰関数と関数ポインタの基礎 自分自身を呼び出す再帰と関数を変数として扱う関数ポインタ

6-1. 再帰関数(recursive function)

再帰関数とは、関数の中から自分自身を呼び出す関数です。階乗(n!)・フィボナッチ数列・ツリー構造の探索など、問題が「同じ構造の小さな問題に分割できる」場合に有効です。必ず終了条件(ベースケース)を設けないと無限ループになります。

📚 用語解説

再帰関数(recursive function):関数の処理の中で、自分自身を呼び出す関数。「問題をより小さな同種の問題に分割して解く」という分割統治法に基づく手法。再帰には必ず「これ以上分割しない終了条件(ベースケース)」が必要で、ないと無限ループ(スタックオーバーフロー)になります。

/* 再帰で階乗を計算(5! = 5×4×3×2×1 = 120) */ int factorial(int n) { if (n <= 1) return 1; /* ベースケース(終了条件)*/ return n * factorial(n - 1); /* 再帰呼び出し */ } /* factorial(5)の実行イメージ */ /* 5 * factorial(4) */ /* 4 * factorial(3) */ /* 3 * factorial(2) */ /* 2 * factorial(1) */ /* return 1 ← ここで終了 */

6-2. 関数ポインタ(function pointer)

関数ポインタは、関数のアドレスを格納するポインタです。コールバック関数・テーブル駆動設計・qsortの比較関数など、「処理の内容を動的に切り替えたい」場面で使います。

#include <stdio.h> int add(int a, int b) { return a + b; } int mul(int a, int b) { return a * b; } int main() { /* 関数ポインタの宣言:int (*変数名)(int, int); */ int (*fp)(int, int); fp = add; /* add関数のアドレスを代入 */ printf("add: %d\n", fp(3, 4)); /* → 7 */ fp = mul; /* mul関数のアドレスを代入(切り替え可能) */ printf("mul: %d\n", fp(3, 4)); /* → 12 */ return 0; }
Claude Code 完全解説セミナー|経営者・会社役員専用 1on1 60分 無料Claude Codeを経営に活かしたい方へ — AI鬼管理

07 Claude CodeでC言語の関数を自動生成する 日本語で要件を伝えるだけで関数定義・プロトタイプ・ヘッダーが完成

C言語の関数設計は「どんな引数を取るか」「値渡しかポインタ渡しか」「戻り値の型は何か」など、考慮すべき点が多い作業です。Claude Codeを使えば、日本語で要件を伝えるだけで関数定義・プロトタイプ宣言・ヘッダーファイル構成まで自動生成できます。

✔️「配列の要素数と平均値を計算して返す関数を書いて。配列サイズも引数で受け取って」
✔️「この関数の値渡しをポインタ渡しに変えて。関数定義とプロトタイプ宣言の両方修正して」
✔️「5の階乗を再帰で計算するC言語のコードをコメント付きで書いて」
✔️「qsortで文字列配列を辞書順にソートする比較関数を書いて」
✔️「このC言語コードのセグメンテーション違反の原因を特定して修正して」

特に効果的なのが「既存コードのデバッグ」です。「関数を呼び出したのに値が変わらない」「ポインタ渡しにしたつもりが値渡しになっている」といったバグは、コードをClaude Codeに貼り付けて「問題を特定して修正して」と指示するだけで即座に解決します。

弊社(株式会社GENAI)の実感では、C言語の関数設計・プロトタイプ宣言・ヘッダー構成などの定型作業にかかる時間が、Claude Code活用後は約70%削減されています。特に「複数ファイルへの関数分割」「ヘッダーファイルの構成」など、設計判断が必要な作業での効果が大きいです。

AI鬼管理山崎 AI鬼管理山崎
C言語でプロトタイプ宣言を書き忘れたときのコンパイルエラーは「implicit declaration of function」です。このエラーが出たらプロトタイプ宣言が必要なサインです。Claude Codeにエラーメッセージとコードを見せると、どこに宣言を追加すべきかも含めて修正コードを返してくれます。
✔️関数は処理を部品化して再利用可能にする仕組み。戻り値型・関数名・引数リスト・returnの4要素が基本
✔️プロトタイプ宣言は関数を使う前に型情報だけをコンパイラに伝える宣言。ヘッダーファイルに書くのが一般的
✔️値渡しは変数のコピーを渡す(呼び出し元は変わらない)。参照渡しはアドレス(ポインタ)を渡す(元の変数を変更できる)
✔️配列は自動的にポインタに変換されて渡される。サイズ情報は失われるため別引数で渡す
✔️構造体引数はconstポインタ渡しが効率的(コピーコスト削減+誤変更防止)
✔️再帰関数には必ず終了条件(ベースケース)が必要。ないとスタックオーバーフロー
✔️Claude CodeでC言語の関数設計・デバッグ・最適化を大幅に効率化できる

C言語の関数設計・デバッグをClaude Code×AI鬼管理で加速

値渡し・参照渡し・再帰・関数ポインタなど複雑なC言語の関数設計を、Claude Codeを活用して素早く正確に実装する方法をご紹介します。

代表菅澤 代表菅澤
C言語の関数設計で迷ったとき、Claude Codeに「こんな動きをする関数が必要」と日本語で伝えるだけで、引数の型・戻り値・プロトタイプ宣言まで含む完全なコードが出てきます。学習と実装の両方で活用できます。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

よくある質問

Q. C言語の関数とマクロ(#define)はどちらを使うべきですか?

A. 基本的には関数を使うことを推奨します。マクロは「型チェックがない」「デバッグが難しい」「副作用が発生しやすい(引数に式を渡した場合)」といった問題があります。速度が重要で型が固定の場合はinline関数(C99以降)が安全な代替手段です。#defineマクロは定数定義や条件コンパイルに限定して使うのが現代の推奨スタイルです。

Q. 関数の戻り値でエラーを返す方法は?

A. C言語では関数の戻り値でエラーを通知するのが一般的です。成功時は0(または正の値)、失敗時は負の値やNULLを返すパターンが広く使われます。stdlib.hの「errno」グローバル変数に詳細なエラーコードを設定する手法も使われます。複数の情報を返したい場合は構造体を返すか、ポインタ引数で追加情報を渡します。

Q. プロトタイプ宣言はいつ省略できますか?

A. 関数定義がmain()より前(ファイルの上部)にある場合は、プロトタイプ宣言を省略できます。ただし実務では、関数の順序に依存しないよう全関数のプロトタイプ宣言をファイル先頭かヘッダーファイルに書くスタイルが推奨されます。コンパイラによっては宣言なしでの呼び出しを警告やエラーにするため、常に明示的に宣言する習慣をつけることを勧めます。

Q. 再帰関数で「スタックオーバーフロー」になりました。どう直しますか?

A. 再帰の終了条件(ベースケース)を見直してください。終了条件に到達しないと再帰が無限に続き、スタック(関数呼び出しの記録領域)が溢れます。原因は「終了条件の記述ミス」「終了条件に到達できない入力値」が多いです。printfで現在の引数値を出力するデバッグか、Claude Codeにコードを貼り付けて「終了条件を確認して」と聞くのが最速の解決策です。

Q. C言語で複数の値を関数から返すにはどうすればいいですか?

A. 方法は3つあります。①構造体を返す(最もC言語らしい方法)②ポインタ引数を使って複数の変数に書き込む「出力引数パターン」③グローバル変数に書き込む(非推奨)。推奨は①または②です。例えば「int *max, int *min」のようなポインタ引数を2つ受け取って書き込む方法が実務でよく使われます。

さらに実務的なC言語関数のパターンとして、コールバック関数があります。コールバック関数とは「関数ポインタを引数として受け取り、適切なタイミングで呼び出す」設計パターンです。標準ライブラリのqsort()がその典型例で、ソート順序を決める比較関数をポインタとして渡すことで、汎用的なソート処理を実現しています。

#include <stdio.h> #include <stdlib.h> /* qsortに渡す比較関数(コールバック) */ int compare_asc(const void *a, const void *b) { return (*(int*)a - *(int*)b); /* 昇順 */ } int compare_desc(const void *a, const void *b) { return (*(int*)b - *(int*)a); /* 降順 */ } int main() { int nums[] = {50, 10, 30, 20, 40}; int n = sizeof(nums) / sizeof(nums[0]); /* 昇順ソート */ qsort(nums, n, sizeof(int), compare_asc); for (int i = 0; i < n; i++) printf("%d ", nums[i]); printf(" "); /* -> 10 20 30 40 50 */ /* 降順ソート */ qsort(nums, n, sizeof(int), compare_desc); for (int i = 0; i < n; i++) printf("%d ", nums[i]); printf(" "); /* -> 50 40 30 20 10 */ return 0; }

qsortの比較関数は「負の値を返すと第1引数が先」「正の値を返すと第2引数が先」「0なら同順」というルールで動作します。この仕組みを使えば、構造体配列を特定のメンバ(名前・年齢・スコアなど)でソートする独自の比較関数も作れます。

C言語の関数を体系的に学ぶことで、他のプログラミング言語(C++・Java・Python・Rust)の関数・メソッドの概念も自然と理解しやすくなります。C言語は「言語の仕様がシンプルで動作が透明」な分、関数・ポインタ・メモリの動きを深く理解できる学習言語として今も根強い人気があります。現場で使われるシステムプログラミング・組み込み開発・ゲームエンジン開発の多くがC言語ベースであり、この記事で解説した関数の概念は直接業務に役立つスキルです。

AIAI鬼管理

AI鬼管理へのお問い合わせ

この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。

会社名を入力してください
業種を選択してください
お名前を入力してください
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年7月18日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。