商品サンプル画像
【任天堂ライセンス商品】Nintendo Switch 2 専用液晶保護フィルム 9H×ブルーライトカット
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
METAL GEAR SOLID Δ: SNAKE EATER 【メーカー特典あり】 <初回限定特典> DLCコード:ユニフォーム「ホワイトタキシード」 同梱
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
たまごっちのプチプチおみせっち おまちど~さま! -Switch
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
Nintendo Switch 2(日本語・国内専用)
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
【PS5】Ghost of Yōtei( ゴースト・オブ・ヨウテイ )【早期購入特典】・ゲーム内アイテム 面頬 ・篤と羊蹄六人衆のアバターセット(全7種)(封入)
商品ページ
Amazon
収益広告(自動登録)
記事の概要
【プログラミング】実例で分かるかもしれない再帰処理
作成日:2024-12-15
最終更新日:2024-12-15
記事の文字数:2874
情報技術プログラミング
本記事のトピック
  • 本ページは以下動画の台本を書き起こしたものです
  • 解説の趣旨・方向性
  • 再帰処理とはどういったものか
  • 実例「会社の部署構造をツリー構造にして取得する」から考えてみる
  • 基本的な考え方の整理
  • 再帰処理を使わない場合で考える
  • 再帰処理を使う場合で考える
  • まとめ
【プログラミング】実例で分かるかもしれない再帰処理
本ページは以下動画の台本を書き起こしたものです

解説の趣旨・方向性
皆さん、こんばんは
今回はプログラミングで「稀」に使われる再帰処理について、こちらのトピックに従って説明したいと思います
尚分かりやすいかどうかは個人差があります
一つ目のトピック、「解説の趣旨・方向性」は今お話しているところです。
「再帰処理とはどういったものか」のトピックでは簡単に再帰処理について説明します。この動画を見てる人はここだけ見ても分からないと思います
「実例「会社の部署構造をツリー構造にして取得する」から考えてみる」では実例を交えて説明します。本動画のメイントピックで、急いでいる人はここから見ればよいと思います
「まとめ」は最後の総括です。
それではやっていきましょう
再帰処理とはどういったものか
再帰処理とは一言で言うと「Aという処理の中で再びAという処理を呼び出す処理」です
例えば「データベースからユーザデータを取得する処理の中で、再び同じようにユーザを取得する処理を呼び出す」みたいなことをしたいときに用います
つまり処理中で自分自身を呼び出すわけですが、なぜそんなことをするのか
こちらを次項で説明します
実例「会社の部署構造をツリー構造にして取得する」から考えてみる
それでは実例をもとに再帰処理の使い方、そしてなぜ使うかを説明していきます
今回では「データベースに保存されている会社の部署構造をツリー構造にして取得する」というのを考えてみましょう
すなわちデータベースにこのように保存されている部署構造を……
このようにツリー構造に変換する、ということです。
テーブルの各行には一つ一つの部署名と親部署名の二つが保持されています
皆さんも自分ならどうするかを考えながら見てください
基本的な考え方の整理
さて、どのように取得するかは色々ありそうですが……
データベースには親部署の情報が含まれているので、単純に上の階層の部署から順番にどんどん下の階層の部署を取っていく方法が良さそうです
「会社」部署が一番上なのは分かり切ってるので、まず一番最初に「会社」部署が親となっている「管理部」「営業部」「製造部」を取得します
その次に「管理部」が親となっている「人事部」「経理部」「総務部」を取得します
同様に「営業部」「製造部」をそれぞれ親とする部署を取得します
このように見ると「対象部署を親とする部署を取得する」処理を何度も行っていることに気づけますね
フローチャートで描いてみましょう
シンプルなフローチャートですね。このフローが何度も行われているということです
このフローに便宜上「getChildDepartment」という名前を付けます。Departmentは部署という意味です
再帰処理を使わない場合で考える
似たような処理が何度も呼ばれているということは「getChildDepartment」という処理をループ文で呼び出せば解決できそうです
ボクは賢いんだ
「会社」部署は決まり切ってるので、まず最初に「会社」部署を親とする部署を取得します
あっ、コードは雰囲気で書いてるので雰囲気で読んでください
ここでは「管理部」「営業部」「製造部」が取得できるので、今度はこれらを親とする部署を取得するためにforループが必要ですね
そうそうこんな感じです
同じように今度はさらにこの処理で取得した部署を取得する必要があるので同じようなコードを書けばよいですね
おや?
for文を使ってるのに結局何度もgetChildDepartmentというメソッドがコード上に存在しています
この会社は3つ目の階層しかないのでこのコードで十分取得できますが、もし部署の階層が増えたらコードもまたさらにfor文を増やさないといけません
これはすごい歪な構造です。なにか変です、for文がマトリョーシカのような入れ子構造になっています
再帰処理を使う場合で考える
ここで出てくるのが再帰処理です
最初の部署のツリー構造もよくよく見ると同じ処理が入れ子構造になっています
このような時は再帰処理を疑うと良いでしょう
どうもこいつは再帰処理っぽい……そう考えた上で「getChildDepartment」のフローチャートを見てみます
さっきのフローチャートはこれほどシンプルでした
でも先ほどのツリー構造の図で重なり合っていた以上、ここは再帰処理で作ることができるはずです
まず取得した子の部署ひとつひとつに対して処理を行うため、ループ処理は入ってくるでしょう
そしてこのループ内で子の部署を取得します。子の部署を取得するというのはまさに「getChildDepartment」のことです
つまりフローチャートはこうなります
まさに「getChildDepartment」の中で「getChildDepartment」を呼び出す再帰処理になっています
ツリー構造の図と比較すると、この図がまさにそのままフローチャートになっていることに気づきます。
「getChildDepartment」の処理をこのように作っておけば、メインのフローもこのようにシンプルな構造にできます
いびつさを感じないフローになりましたね
まとめ
ということでまとめです
再帰処理とは「処理中で自分自身を呼び出す」処理のことを言う
同じような処理が続くのにループ文でうまく解決できないときに再帰処理を疑う
絵やフローチャートで描いたとき、同じような処理がマトリョーシカのような構造になっているときに再帰処理を疑う
以上、それではまたどこかでお会いしましょう
コメントログ
※コメントは最新50件が表示されます
コメント投稿




画面下部の「コンタクト」からも連絡可能です。
管理人ツイート
商品サンプル画像
ドンキーコング バナンザ -Switch2
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
【任天堂純正品】Joy-Con 2 (L) ライトブルー/(R) ライトレッド 【Amazon.co.jp限定特典】Nintendo Switch 2 ロゴデザインステッカー 同梱
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
【任天堂ライセンス商品】Samsung microSD Express Card 256GB for Nintendo Switch 2(サムスン マイクロSDエクスプレスカード 256GB)
商品ページ
Amazon
収益広告(自動登録)
商品サンプル画像
ファンタジーライフi グルグルの竜と時をぬすむ少女 -Switch
商品ページ
Amazon
収益広告(自動登録)
管理人作品宣伝
VRoid用テクスチャセット約50種(Tシャツ・ショーツ・靴下)
3Dモデル / 最終更新:2025-05-23
■概要 VRoidStudio用の「Tシャツ」「靴下」「ショーツ」の以下が入っています…■概要 VRoidStudio用の「Tシャツ」「靴下」「ショーツ」の以下が入っています。 ・テクスチャ ・テクスチャの元素材(有料版のみ)  ※見本はサムネイルに載せています ・(参考として)作成するにあたって使用した「VRoid Custom Data」と「VRoidStudioデフォルトのテクスチャ」 用意した素材がそれだったので「水玉」「縞々」「ハート柄」が多いです。 ■内容物(一覧) 〇無料版  ・【PNG】テクスチャ(サムネイルで「無」というアイコンが付いてるものです)   ※ファイル名にも

Boothで閲覧する利用素材等の詳細情報
AIの考えた怖い話-Part01
動画 / 最終更新:2024-11-28
怪談系の怖い話を載せています。特に設定部分は人の手が入ってますが、なるべく生成AI(C…怪談系の怖い話を載せています。特に設定部分は人の手が入ってますが、なるべく生成AI(ChatGPT)を利用して書いています。

YouTubeで閲覧するニコニコ動画で閲覧する利用素材等の詳細情報
作品一覧はこちら
関連ページ
JavaScriptでアナログ時計とデジタル時計を表示するコード
最終更新日:2025-05-29
概要 最近アナログ時計を使ったので、アナログ時計を表示するJavaScriptコードを載せます。 …
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-03
最終更新日:2025-04-20
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-02
最終更新日:2025-04-15
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する Part-01
最終更新日:2025-04-13
概要 three.js・three-vrm.jsを使用して、VRoidをWebページ上に表示する方…
記事を閲覧する
GIF / APNG(アニメーション付きPNG)ファイル解析ページ
最終更新日:2025-03-31
ファイル読込・操作 以下に調べたいファイルを読み込ませてください。 ファイル情報 カラーパレットを…
記事を閲覧する
gifler.js仕様メモ
最終更新日:2025-03-23
本ページの趣旨 「gifler.js」という、gifアニメーションをcanvasに簡単に表示できる…
記事を閲覧する
【プログラミング】実例で分かるかもしれない再帰処理
最終更新日:2024-12-15
本ページは以下動画の台本を書き起こしたものです 解説の趣旨・方向性 皆さん、こんばんは今回はプログ…
記事を閲覧する
SNSツイート一元化対応(Twitter・Misskey・Mastodon・Bluesky)-公開
最終更新日:2024-12-06
概要 SNSツイートを一元化するためのツールを作成しています(古い記事ですが、こちらのページで紹介…
記事を閲覧する
SNSツイート一元化対応(Twitter・Misskey・Mastodon・Bluesky)-Python
最終更新日:2024-10-13
概要 概要 SNSのツイートを一元化する際の備忘録というかPythonコードの共有です。 それぞれ…
記事を閲覧する
Windows-PowerShellを使用してのフォルダ内のファイル名を連番にリネームする
最終更新日:2024-10-08
以下PowerShellコードを実行することで、フォルダ内のすべてのファイルのファイル名を「0001…
記事を閲覧する
本サイトのタグ一覧
NovelAIR18VRoidWebサイト作成Webツールととモノ。アークナイツアークナイツ-ステージ攻略日記アズールレーンアズールレーン-日記ウマ娘ギャラリーゲームデビラビローグネットスラング系プログラミングホラーポケットタウン怪談気ままな日記情報技術情報技術-WebAPI知的財産権統合戦略白夜極光本サイトについて魔王スライム様がんばる!漫画
人気記事
メイド・オブ・ザ・デッド-攻略お助け情報
最終更新日:2024-05-01
スコア:796.4695 pt
ネタバレ注意! 本ページは『メイド・オブ・ザ・デッド』の情報を記録しているものです。 攻略の参考に…
記事を閲覧する
ポケットタウン_パズル一覧
最終更新日:2025-05-02
スコア:660.9757 pt
グレーのピースの数 (Number of gray pieces):検索グレーピースの数を入力して、…
記事を閲覧する
剣と魔法と学園モノ。2G - パーティ編成確認ツール
最終更新日:2024-05-09
スコア:654.5069 pt
ツール概要 ととモノ。2Gのパーティ編成を考える際に使うツールです。 あくまでストーリークリアまで…
記事を閲覧する
地獄先生ぬ~べ~で好きな切ないエピソード
最終更新日:2025-07-08
スコア:293.5873 pt
概要 初代というべきか、週刊少年ジャンプで連載されていた地獄先生ぬ~べ~の切ないエピソードの中で好…
記事を閲覧する
剣と魔法と学園モノ。3 - パーティ編成確認ツール
最終更新日:2025-05-07
スコア:170.6667 pt
ツール概要 ととモノ。3のパーティ編成を考える際に使うツールです。 攻略本や攻略wikiを参考にし…
記事を閲覧する
アークナイツ-常設商品-理性換算
最終更新日:2024-04-28
スコア:109.0909 pt
概要 "常設商品でお得な商品はどれか"というのを理性に換算して一覧化したものとなります。 絶対的に…
記事を閲覧する
ヒカルの碁で、なぜ佐為は消えたのか
最終更新日:2025-04-21
スコア:104.0400 pt
概要 ヒカルの碁で佐為が消えた理由について、「ヒカルの才能を目覚めさせるという役割を終えたから」と…
記事を閲覧する
本サイトについて
最終更新日:2025-07-22
スコア:103.0099 pt
本サイトの概要 概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報に…
記事を閲覧する
最新記事
スプシを使って柔らかくAPIからログ記録
最終更新日:2025-07-27
概要 Googleスプレッドシート(=スプシ)を使って、クライアント側の情報などを以下のように簡単…
記事を閲覧する
本サイトについて
最終更新日:2025-07-22
本サイトの概要 概要 個人ブログのようなものです。とくにジャンルはありません。 本サイト内の情報に…
記事を閲覧する
地獄先生ぬ~べ~新アニメで設定変わったところ(3話まで)
最終更新日:2025-07-13
概要 地獄先生ぬ~べ~の新アニメが2025-07-02(木)よりやっていますが、そこで設定が変わっ…
記事を閲覧する
地獄先生ぬ~べ~で好きな切ないエピソード
最終更新日:2025-07-08
概要 初代というべきか、週刊少年ジャンプで連載されていた地獄先生ぬ~べ~の切ないエピソードの中で好…
記事を閲覧する
商品サンプル画像
マリオカート ワールド -Switch2
商品ページ
Amazon
収益広告(自動登録)