【AWS SAM×Bedrock】社内用セキュア生成AIチャットAPIの構築

はじめに

業務で生成AI(Amazon Bedrock)を活用したいけれど、「APIキーを直接開発者に配りたくない」「利用状況をログに残して管理したい」「特定のモデルだけを使わせたい」といった悩みはありませんか?
Bedrockを直接クライアントから叩くのではなく、API GatewayとLambdaを経由させる「プロキシAPI」を構築することで、これらのガバナンスやセキュリティの課題を解決できます。

今回は、AWS SAM (Serverless Application Model) を使って、この構成を最速・最小構成で構築する方法を紹介します。

以前の記事「AWS SAMを使って最もシンプルにLambda × APIGatewayのWebAPIを構築する」の応用編になりますので、SAMの基礎を知りたい方はそちらも合わせてご覧ください。

アーキテクチャ構成

作るものは非常にシンプルです。

User/App -> API Gateway -> Lambda -> Amazon Bedrock (Claude 3)

  • API Gateway: エンドポイントの公開、認証(将来的な拡張)
  • Lambda: リクエストの整形、Bedrockへのアクセス、ログ出力
  • Bedrock: 生成AIモデル (今回は Claude 3 Sonnet を使用)

IAMロールの権限管理により、LambdaだけがBedrockにアクセスできるようにするため、非常にセキュアです。

事前準備

  • AWS CLI と SAM CLI がインストールされていること
  • Amazon Bedrock のコンソールで、Claude 3 Sonnet のモデルアクセス許可が有効になっていること(これ重要です!有効化していないとエラーになります)

参考書籍

本記事の執筆にあたり、またはBedrock/SAMを深く学ぶために、2026年時点で最新の以下の書籍がおすすめです。特に『深掘りガイド』シリーズは実務で非常に役立ちます。

  • Amazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガイド]
    • Bedrockの基本からRAG、エージェントまで網羅された決定版。
  • AIエージェント開発/運用入門 [生成AI深掘りガイド]
    • LangGraphやBedrockを使った自律型エージェントの開発・運用(LLMOps)に特化した一冊。2025年の「AIエージェント元年」を象徴する良書。
  • TECHNICAL MASTER はじめてのAWSモダンアプリ開発入門
    • AWS Amplify Gen2とBedrockを組み合わせた最先端のモダンアプリ開発手法が学べます。

ディレクトリ構成

今回は既存のテンプレートを使わず、ゼロから作ります。最終的に以下の構成になります。

bedrock-sam-chat
│  template.yaml
└─hello_world
      app.py

実装ステップ

1. SAMテンプレート (template.yaml)

まずはインフラ定義です。
たったこれだけの記述で、API Gateway、Lambda関数、IAMロール(Bedrockへのフルアクセス権限付き)が作成されます。

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  Secure GenAI Chat API with Bedrock & SAM

Resources:
  ChatFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Runtime: python3.9
      Architectures:
        - x86_64
      Timeout: 120 # 生成AIはレスポンスに時間がかかる場合があるため長めに設定
      Policies:
        - AmazonBedrockFullAccess # 最小権限にする場合は絞ってください
      Events:
        ChatApi:
          Type: Api
          Properties:
            Path: /chat
            Method: post

Outputs:
  ChatApi:
    Description: "API Gateway endpoint URL for Prod stage for Chat function"
    Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/chat/"

ポイント:

  • Timeout: 120: デフォルトの3秒だと、生成AIの回答待ちでタイムアウトする可能性が高いため、長めに設定しています。
  • Policies: - AmazonBedrockFullAccess: LambdaにBedrockへのアクセス権限を付与しています。

2. Lambdaコード (hello_world/app.py)

次にアプリケーションロジックです。Pythonの boto3 を使ってBedrockを呼び出します。

import json
import boto3
import os

# クライアントの初期化はハンドラの外で行う(再利用のため)
bedrock = boto3.client('bedrock-runtime')

def lambda_handler(event, context):
    try:
        # リクエストボディからプロンプトを取得
        body = json.loads(event.get('body', '{}'))
        prompt = body.get('prompt', 'Hello')

        # 使用するモデルID (Claude 3 Sonnet)
        model_id = "anthropic.claude-3-sonnet-20240229-v1:0"

        # Bedrockへのリクエストペイロード作成
        # Claude 3向けのフォーマット (Messages API)
        request_body = json.dumps({
            "anthropic_version": "bedrock-2023-05-31",
            "max_tokens": 1000,
            "messages": [
                {
                    "role": "user",
                    "content": [{"type": "text", "text": prompt}]
                }
            ]
        })

        # Bedrock呼び出し
        response = bedrock.invoke_model(
            modelId=model_id,
            body=request_body
        )

        # レスポンスの解析
        response_body = json.loads(response.get('body').read())
        content = response_body.get('content')[0].get('text')

        return {
            "statusCode": 200,
            "body": json.dumps({
                "message": content
            }),
            "headers": {
                "Content-Type": "application/json"
            }
        }
    except Exception as e:
        print(f"Error: {str(e)}")
        return {
            "statusCode": 500,
            "body": json.dumps({
                "error": str(e)
            })
        }

デプロイと動作確認

デプロイ

プロジェクトのルートディレクトリで以下のコマンドを実行します。

sam build
sam deploy --guided

対話形式でスタック名などを聞かれますが、基本はデフォルト(Enter連打)でOKです。
デプロイが完了すると、Outputs セクションにAPIのURLが表示されます。

動作確認

curl コマンドでAPIを叩いてみましょう。

curl -X POST https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/chat/ \
     -H "Content-Type: application/json" \
     -d '{"prompt": "AWS SAMについて3行で教えて"}'

実行結果(例)

{"message": "AWS SAMは、サーバーレスアプリケーション構築のためのオープンソースフレームワークです。\nCloudFormationを拡張したシンプルな構文でリソースを定義できます。\nLambda、API Gateway、DynamoDBなどを簡単にデプロイ・管理できます。"}

無事、Claude 3からの回答が返ってくれば成功です!

さらなる拡張アイデア

この構成をベースに、以下のような機能を付け足していくと、立派な社内AIプラットフォームになります。

  1. VPCエンドポイント (PrivateLink): 以前の記事「AWS BedrockでVPCエンドポイント...」と組み合わせることで、社内ネットワークから閉域網でアクセス可能にできます。
  2. ログ保存: Lambda内でプロンプトと回答をDynamoDBやS3に保存すれば、誰がどんな使い方をしているか監査できます。
  3. ストリーミングレスポンス: 今回は簡易化のため待ち受け型(一括返信)にしましたが、LambdaのResponse Streamingを使えば、ChatGPTのように文字が少しずつ表示されるUIも実現可能です。

まとめ

AWS SAMを使えば、Bedrockを利用したチャットAPIがあっという間に構築できます。
まずはこの最小構成から始めて、プロジェクトの要件に合わせて育てていってみてください。
Happy Serverless Life!

Java Spring/SpringBoot習得向けおすすめ本

Java新人エンジニア必読!Spring/SpringBoot習得向けおすすめ参考書ロードマップ

Javaの市場需要と若手エンジニアのキャリア戦略

Javaはプログラミング言語の中で最も長い歴史を持ち、2026年現在でも企業システムの中核を担っています。Python、GoLang、Rust といった新言語が台頭する中でも、既存のエンタープライズシステムの運用・保守・改善業務において、Javaのスキルは今後も高い市場価値を維持されると予想されます。

特に若手エンジニアにとって、Java と Spring/Spring Boot の習得は以下のメリットがあります:

  • 求人数が多い:大手IT企業、金融機関、製造業など、あらゆる業界で Javaエンジニアの需要は依然として高い
  • 年収が高い傾向:エンタープライズシステム開発の経験は給与交渉時に有利に働く
  • キャリアパスが豊富:バックエンド開発、クラウドアーキテクチャ、マイクロサービス設計など、幅広い領域へ展開可能
  • モダンな開発手法の学習:Spring Boot は最新のクラウドネイティブ開発、コンテナ化(Docker・Kubernetes)と親和性が高く、次世代技術へのステップとなる

Java21・Spring 6時代のトレンドと参考書の重要性

2023年9月にリリースされた Java 21 は LTS(Long-Term Support)バージョンであり、以下のような革新的な機能が導入されました:

  • 仮想スレッド(Virtual Threads):スケーラビリティの大幅向上
  • レコードと switch 式の拡張:簡潔で読みやすいコード記述
  • テキストブロック(Text Blocks):SQL、JSON の記述がシンプルに

Spring 6 は Java 17 以上をサポートし、GraalVM ネイティブコンパイル対応、AOT(Ahead-of-Time)コンパイル対応など、次世代クラウド環境への適応が加速しています。

しかし、こうした最新トレンドの一方で、基礎を理解することは依然として不可欠です。本ロードマップで紹介する参考書は、モダンな Javaエコシステムの土台となる知識を、体系的かつ実践的に習得するために厳選されたものです。

このロードマップが対象とする読者

このロードマップは以下のような若手エンジニアを想定しています:

  • 新卒・既卒で IT企業に就職し、いきなり「Javaを学べ」と言われている人
  • Python や JavaScript の経験はあるが、Java は初めての人
  • Spring / Spring Boot を使ったシステム開発に携わることになり、体系的に学びたい人
  • エンタープライズシステムの開発現場で、プロフェッショナルとして活躍したい人

参考書を通じた段階的スキル習得の方針

単なる言語機能の習得ではなく、以下の3つのフェーズを経て、実務で即戦力となるレベルを目指します:

  1. 基礎フェーズ:Java の基本構文、オブジェクト指向の理解
  2. 実践フェーズ:デザインパターン、コード品質、Web 技術の理解
  3. 応用フェーズ:Spring / Spring Boot、設計思想(DDD)の習得

本記事では、10年以上のエンタープライズシステム開発経験を持つ筆者が、この3つのフェーズを通じて習得すべき良質な参考書を厳選し、各書籍の学習ポイントを詳しく解説します。

本文の構成

本文では、結果で紹介する書籍を1冊ずつ詳しく解説しています。構成は以下の通りです:

Springの3冊を最初に学習

まずプロになるためのSpring入門Spring徹底入門Spring Boot 3 プログラミング入門の3冊を紹介します。JavaでSpringを本格的に使うために必要な知識が詰まっており、DIコンテナの理解やフレームワークの使い方を学べます。

Java基礎から応用までの8冊

その後、やさしいJava からスタートして、入門書2冊で基礎を固め、プロになるJavaでレベルアップ。デザインパターンリーダブルコードオブジェクト指向など、実務で必要な知識を段階的に学んでいきます。最後にWebを支える技術で、Webシステム開発に必要な基礎知識を習得します。

番外編:ドメイン駆動設計の3冊

最後に、良い設計を目指す人向けに、ドメイン駆動設計入門から始まり、エリック・エヴァンスのドメイン駆動設計実践ドメイン駆動設計へとステップアップする3冊を紹介します。

想定読者

  • 仕事を始めていきなり「とりあえずJava出来るようになって」と言われた人
  • JavaをSpringまで理解したい人

結果

いきなり結果です。
忙しい人はとりあえず結果だけご覧ください。

Spring良書

  1. プロになるためのSpring入門
  2. Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発
  3. Spring Boot 3 プログラミング入門

Java良書8選

  1. やさしいJava
  2. スッキリわかるJava入門
  3. スッキリわかるJava入門 実践編
  4. プロになるJava
  5. Java言語で学ぶデザインパターン入門
  6. リーダブルコード
  7. オブジェクト指向でなぜつくるのか
  8. Webを支える技術 ―― HTTP,URI,HTML,そしてREST

番外編:ドメイン駆動設計良書3選

  1. ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本
  2. エリック・エヴァンスのドメイン駆動設計
  3. 実践ドメイン駆動設計

それではここから1冊ずつ紹介です。

プロになるためのSpring入門

最初はプロになるためのSpring入門です。

プロになるためのSpring入門

Springを学ぶ最初の一冊がこれです。
Springを理解する上で最も重要なDIコンテナについて、実装はもちろん概念/理解する上でのイメージ図を含めて詳しく書かれているところが、プロを名乗るだけのことはある良本だと思えました。
JavaからSpringにそのまま学習を進めるのに最適な一冊で、同等の知識レベルで書かれています。

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

次はSpring徹底入門 Spring FrameworkによるJavaアプリケーション開発です。

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

数あるフレームワークの中でも、Javaで本格的なシステム開発をする際に必ず言っていいほど出てくるフレームワーク(その後、ほぼ採用されるフレームワーク)がSpring Frameworkです。具体的なシェアは把握していませんが、私が経験したプロジェクトではほぼ使用されていました。そのSpring Frameworkを初めて学ぶ方におすすめの入門書がこの一冊です。
この本は、初心者から中級者までを対象に、Spring Frameworkの基本から応用までをわかりやすく解説しています。多くの開発者に支持され、Springを学ぶ際に手に取るべき書籍とされています。その人気の証として、2024年5月には待望の第2版が発売されました。
最新の情報とともにさらに充実した内容で、Spring Frameworkの理解を深め、読者のスキルアップに貢献する一冊となると思います。
今やSpring Frameworkを扱う場合、必ず購入する本になっているのではないでしょうか。

Spring Boot 3 プログラミング入門

いよいよJava10冊のラストはSpring Boot 3 プログラミング入門です。

Spring Boot 3 プログラミング入門

クラウド開発がデファクトスタンダードになっている今では、SpringからSpring Bootという選択肢が増えていると思います。
Spring Bootに特化している参考書がまだまだ少ないのでこの本だけでは足りない部分もありますが、Spring Bootの入門書としての位置付けではこの本がマストと考えています。
人気書籍だったSpring Boot 2プログラミング入門の改訂版で、2023年2月27日発売のJDK17、Spring 6対応です。

やさしいJava

ここからはSpringを学ぶ前にJavaを基礎から学びたい人のための本の紹介です。最初はやさしいJavaです。

やさしいJava

Javaの入門書は今となっては多すぎるほどあるのですが、まずは入門書としてタイトルの通り非常にわかりやすいこの本から入るのがいいかなと思っています。
Javaの特徴として、プログラムの理解もありますが、他の言語に比べわかりにくい専門用語多く、初心者には最初のハードルがまず高い事が挙げられると思っています。
そのあたりをうまく説明して導入時の挫折が避けられるのが、この1冊からスタートすることかなと思って選出しています.

スッキリわかるJava入門

次はスッキリわかるJava入門です。

スッキリわかるJava入門

私の経験からですが、プログラミングの入門書は1冊では足りないと思っています。
理由としては、入門書だけで書ききれない重要なことが多く1冊では網羅できないこと。専門用語の解説がわかりやすい表記ではあるのですが、自分の中ですっきり理解できるかはその人の今までの経験によるところがあるからです。
そのため、入門書の位置付けで2冊目の紹介です。
2冊を読み比べて本当に重要なところ、わかりにくい概念の表現方法を比較して自分の理解力を高めることが重要と考えています。
人気シリーズのため最近実践編とともに第4版が発売されました。

スッキリわかるJava入門 実践編

次はスッキリわかるJava入門 実践編です。
タイトルの通りですが、スッキリわかるJava入門の続編です。

スッキリわかるJava入門 実践編

やさしいJavaと入門編でじっくり基礎を固めた後に実践編に入る流れで読み進めるといいかなと思います。

プロになるJava

次はプロになるJavaです。
タイトルの通りですが、ここからプロになりましょう(^^)

プロになるJava

ここまでで基礎を固める -> 実践を学ぶ -> プロになる というレベルアップを想定しています。
印象としては、実践を学ぶ -> プロになる 部分はちょっと飛躍的レベルアップなのですが、その部分は実際に自分の手を動かしてプログラミングした結果や実際やったこと読んだことをGoogle検索等で補完しながらレベルアップすることを想定しています。(ここまで読んだ読者ならそれが出来るだけのレベルアップがされていると考えています)

この本は、ITエンジニア本大賞2023 技術書部門ベスト10にも選ばれました。(Java関連の本で2023年のベスト10に選ばられるのは非常に凄い事だと思っています)これでJavaを仕事にする人は、必ず読んだ方が良い本になったのではないでしょうか。

Java言語で学ぶデザインパターン入門

プロになったら次はデザインパターンを学びましょう。

Java言語で学ぶデザインパターン入門

正直プロなったところがJavaで給料をもらえるというスタートラインと思います。
つまり、ここまでのJavaプログラマーでは現場で技術力の差別化が出来ません。
そこで、オッこの人はJavaがかなり出来るなと思ってもらえるようにデザインパターンを学びましょう。
現場でこれはGoFのAdapterのデザインパターンですね。なんて、会話が出来るとJavaで自信をもって仕事をしているなと言えると思います。
本書は、2001年に発売されて以来、増補改訂され2021年に発売されたものです。
実際のコードが記載されているのはもちろんのこと、デザインパターンの概念や用途を直感的に理解できるように書かれています。また、デザインパターンの使い方だけでなく、パターンを使わない場合の問題点や欠点、パフォーマンスについても考慮された説明がなされているため、より実践的な学びを得ることができます。
Javaのスペシャリストとして学んでおくべき1冊になっています。

リーダブルコード

次はリーダブルコードです。
Javaを十分学んできたので、ちょっと箸休めです。

リーダブルコード

内容を知っている人は、なぜここでリーダブルコード?と思う人もいると思うのですが、私はこのタイミングがベストと思います。
プログラム初心者が読む本として位置付けされることもあると思いますが、私はJavaが分かってから読むべき(一度読んでいても再読すべき)と考えています。
自身でJavaコードをある程度書けるようになってからこの本を読むとよりリアルな気づきがあると思います。そう言えばあの時書いたあのコード、リーダブルではなかったな。など。
コメントの書き方、関数やメソッドの命名方法、制御フローのシンプル化、適切なフォーマットなどが書かれており、これらのテクニックやスタイルを使うことで、コードの読みやすさが向上し、保守性や拡張性が高まるコードが書けます。
仕事でJavaを書く場合1人で完結しないことが多いです。何人かのチームでJavaを書くときに読みやすいコードを書くことはチームでの開発において非常に重要です。チームで開発を行う場合、コードの読みやすさはコミュニケーションコストを減らし、コードの品質を向上させるために不可欠です。ぜひ1度読んで、プロフェッショナルとして読みやすいコードが書けるように意識してみてください。
ちなみにこの本は少し古いですが、ITエンジニア本大賞2014 技術書部門大賞の本です。

オブジェクト指向でなぜつくるのか

次はオブジェクト指向でなぜつくるのかです。
こちらもJavaに特化した内容ではないため箸休め第2弾です。

オブジェクト指向でなぜつくるのか

そもそもなぜJavaがここまで流行ったのか、オブジェクト指向はどんなに便利なのか、Javaでオブジェクト指向で作るというのはどういうことなのか理解するのに良い本と考えています。

Webを支える技術 ―― HTTP,URI,HTML,そしてREST

次はWebを支える技術 ―― HTTP,URI,HTML,そしてRESTです。
箸休め第3弾(最後の箸休め)です。そろそろプログラムを見ることに疲れた人向けです(^^;)

Webを支える技術 ―― HTTP,URI,HTML,そしてREST

皆さんがJavaを勉強する理由は様々だと思いますが、最近はWebシステムを作るケースが多いのではないでしょうか。
そんな人向けの本になっているので、私はWeb関係ないという人は飛ばしてもらっていいのですが、Javaで「HTTP,URI,HTML,そしてREST」をプログラミングするという人はぜひ読んでおいてください。
コードが書けるだけではWebシステムは完成しません。なぜそのようなコードが必要かを理解できるようになると思います。

番外編:ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本

ここからは番外編になります。
まずはドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本です。
良いプログラムは良い設計の上に成り立ちます。
良いプログラムでも設計がいまいちであればそのシステムは扱いにくいものになるでしょう。

では、良い設計とは何か?
私の中での1つの答えはドメイン駆動設計と思っています。
ここからは設計というさらに上を目指す意識高い系の皆さん向けの番外編になります。

ドメイン駆動設計入門 ボトムアップでわかる!ドメイン駆動設計の基本

まずはドメイン駆動設計の入門書という位置づけのこの本を選びました。
最終的なゴールは最後に紹介する実践ドメイン駆動設計になるのですが、実践ドメイン駆動設計をいきなり読んで挫折なく読み切れる人はなかなかいないでしょう。(私も一度挫折しました。。。)
そのため、まずはこの本を入門書として位置付けています。

番外編:エリック・エヴァンスのドメイン駆動設計

次はエリック・エヴァンスのドメイン駆動設計です。

エリック・エヴァンスのドメイン駆動設計

一応、この本を間に挟む順番としました。
この本がなくても実践ドメイン駆動設計を理解できそうという人は直接実践ドメイン駆動設計を読んでもいいのですが、この本を挟んだ方が理解しやすいだろうなぁと思いラインナップに入れています。

番外編:実践ドメイン駆動設計

いよいよ最後実践ドメイン駆動設計です。

実践ドメイン駆動設計

この本の紹介はもはや何もいらないでしょう。
というぐらいドメイン駆動設計と言えば、この本という本になっています。
ただ、前述した通りいきなりこの本を読んで理解できる人は少ないと思うので今回は3冊を紹介する形で記載しました。

まとめ

今回は、Java初心者がSpring/Springbootを使えるようになるまでの10冊とドメイン駆動設計の3冊を紹介しました。
これらを理解すれば間違なく私はJavaのプロフェッショナルです。と、自信をもって仕事ができる人材になれるかなと思って選抜しているので、これからJavaを頑張ろうと思っている人がいたらぜひ参考に1冊でも読んでみてください。

おまけ

Javaの開発環境と言えばEclipseです。
最近はVSCodeも人気になっているのでEclipseのオススメ本が少なくなってきた印象です。
ただこの本は、この1冊読んでおけば困らない。という内容になっているのでまさにパーフェクトガイドだと思います。


JavaエンジニアのためのEclipse パーフェクトガイド

本投稿が少しでも皆さんの良いJavaライフの助けになればと思います( )

コナン主要事件まとめ

コナン主要事件まとめ

ネタバレ満載。
私が考える個人的に重要な事件のまとめです。

主要事件

  • 事件No.92 第170~171話「暗闇の中の死角」
    • 関連組織:黒の組織
    • ベルモットの正体を紐解く際に必要になる重要なエピソード
  • 事件No.237 第701~704話「漆黒の特急[ミステリートレイン] [発車/隧道/交差/終点] 」
    • 関連組織:FBI
    • 灰原(シェリー)が死んだことになる重要な内容
  • 事件No.259 第779~783話「緋色シリーズ[交錯/帰還/真相]」
    • 関連組織:公安/FBI
    • 死んだはずの赤井秀一がじつは生きているという重要なエピソード
  • 事件No.264 第810~812話「県警の黒い闇」
    • 関連組織:長野県警
    • 黒田兵衛初登場
  • 事件No.276 第866~867話「裏切りのステージ」
    • 関連組織:公安/FBI
    • 諸伏景光が亡くなるシーンが描かれているエピソード
  • 事件No.292 第952~954話「迷宮カクテル」
    • 関連組織:公安
    • 安室透と灰原(宮野)親子に関係があったエピソード
    • 赤井秀一と安室透の対峙シーンもある
  • 事件No.294 第983~984話「キッドVS高明 狙われた唇」
    • 関連組織:公安/長野県警
    • 諸伏高明の弟諸伏景光(スコッチ)の壊れた携帯が出てくる

公安シリーズ

主要人物

  • 安室透/降谷零(バーボン)
  • 風見裕也

FBIシリーズ

主要人物

  • 沖矢昴/赤井秀一

長野県警シリーズ

主要人物

  • 大和敢助
  • 上原由衣
  • 諸伏高明

参考:コナン編纂室 | 少年サンデー

https://websunday.net/conandb/

Azureを使ったアプリケーション開発のおすすめ書籍

Azureを使ったアプリケーション開発のおすすめ書籍

本記事は20代エンジニア向けに、Azureでのアプリ開発に役立つ実務寄りの書籍を厳選して紹介します。入門から設計、モダンアプリ開発まで、短時間で実務に活かせるポイントと「誰が今読むべきか」「学んだらまず試すべきこと」を明確に示します。学習効率を上げて現場で成果を出したい若手に最適なガイドです。

Azureの知識地図 〜クラウドの基礎から実装・運用管理まで


Azureの知識地図 〜クラウドの基礎から実装・運用管理まで

『Azureの知識地図 〜クラウドの基礎から実装・運用管理まで』は、Azureの全体像を「地図」として俯瞰しながら学べると高く評価されている入門書です。クラウドサービスの基礎から、IaaS・PaaS・SaaSの主要サービス、システム構築・運用までを一気通貫で整理してくれるため、「断片的な知識はあるけれど全体像がつながっていない」という20代エンジニアに特におすすめです。

レビューでは、「過去最強のAzure入門書」といった声もあり、サブスクリプションやリソースグループなどの概念から実務でよく見る代表的なアーキテクチャまで、広く浅くちょうどよくカバーしている点が支持されています。公式ドキュメントを読み解くための前提知識を整理してくれるので、「ドキュメントが難しくて挫折した」という人にとっても強い味方になります。

また、キーワードマップやコラムが充実しており、歴史的な表記ゆれや日本語特有の分かりにくさまでフォローしてくれるため、「用語が多すぎてつらい」という共通の悩みに寄り添ってくれます。新入社員やクラウド初心者にまず勧めたいという感想も多く、「この1冊を読めばAzure学習のスタートダッシュが切れる」と感じて購入につながっているようです。

Azure定番システム設計・実装・運用ガイド


Azure定番システム設計・実装・運用ガイド 改訂新版

クラウドエンジニアとして一歩先を目指すなら、『Azure定番システム設計・実装・運用ガイド 改訂新版』は必読です。Azureの基本から高可用性・セキュリティ設計まで、現場で必要な知識が網羅されており、学びながらすぐに実践へ活かせる構成になっています。特に、サンプル設計やベストプラクティスが豊富に掲載されているため、「実際にこう組むのか!」と腹落ちしやすいのが魅力です。

これからクラウド設計を始めたい20代エンジニアにとって、迷いがちな構成設計やコスト設計の考え方を実務レベルで理解できる貴重な一冊です。どんなに忙しくても、「この設計思想を自分の武器にしたい」と思わせてくれる内容になっています。Azureを扱うエンジニアとして成長したい方は、ぜひ手に取って読んでみてください。

Azureクラウド設計完全ガイド 最適なサービスを選定して組み合わせる


Azureクラウド設計完全ガイド 最適なサービスを選定して組み合わせる

『Azureクラウド設計完全ガイド 最適なサービスを選定して組み合わせる』は、Azureでシステム設計を行うエンジニアに向けて、サービスカタログではなく「アーキテクチャ設計の考え方」を体系立てて整理した一冊です。 第1章でAzureの基本概念と設計アプローチを示し、インフラ、実行基盤、データ連携、開発、監視・運用、AIといった各アーキテクチャを章ごとに分けて解説する構成になっており、現場でそのまま設計書の雛形として使える実務寄りの内容が特徴です。
特に、数百あるAzureサービスを「どれを、なぜ組み合わせるか」という視点で選定基準とパターンを提示している点が優れており、コストやセキュリティ、運用性まで踏まえた判断軸を身につけたいアーキテクトに適しています。 一方で、多数のサービスを幅広く扱うため、個々のサービスの詳細な使い方やチュートリアルを期待すると物足りなさはありますが、「手を動かす前に設計の腹落ちをさせたい」中級以上のAzureエンジニアには心強い設計ガイドと言える内容です。

はじめてのAzureモダンアプリ開発入門


TECHNICAL MASTER はじめてのAzureモダンアプリ開発入門

『TECHNICAL MASTER はじめてのAzureモダンアプリ開発入門』は、Azureでモダンなクラウドアプリ開発を一通り押さえたい20代エンジニアにかなりフィットする1冊だといえます。Microsoft Azureをベースに、クラウドネイティブなアプリ開発の考え方を体系的に身につけられる構成になっています。

特に「モダンアプリ開発」「コンテナ」「CI/CD」といった、現場で当たり前に求められるキーワードを、Azureの具体的なサービスとセットで学べるのが魅力です。実案件でいきなり出てくる用語の背景が整理されるので、「聞いたことはあるけど説明できない」というモヤモヤを解消しやすくなります。

また、クラウド前提のアーキテクチャを学べるため、「オンプレは分かるけどクラウドは不安」という若手エンジニアが次のステージへ進む足がかりにもなります。Azureの基礎だけでなく、スケーラビリティや信頼性といった設計視点にも触れられるので、単なる画面作りで終わらないエンジニアを目指す人に向いている内容です。

レビュー件数自体はまだ多くありませんが、出版社公式の連載として内容の一部が公開されており、モダンアプリ開発の必須技術を丁寧に扱う姿勢が確認できます。公開されているセクションからも、入門書でありつつ実務を意識した解説がなされていることが伝わり、「現場で使えるAzureの入口」として期待できる一冊だといえます。

まとめ

本記事で紹介した書籍は、Azureの基礎から設計、モダンアプリ開発まで実務に直結する内容を厳選しました。まずは一冊を選んで手を動かすこと。3週間で小さなハンズオンを完了し、学びを職場で試すことで短期間で成長を実感できます。継続して学びを積み上げ、次のステップへ進みましょう。

Pythonによるデータ分析のおすすめ書籍

Pythonによるデータ分析のおすすめ書籍

最近、仕事で「データに基づく意思決定」の重要性が高まり、Pythonによるデータ分析が注目されています。とはいえ、いざ学ぼうと思っても「何から始めればいいのか」「どの本を選べばいいのか」で迷う人は多いはず。そこで本記事では、初心者から中級者まで、レベルや目的に応じて学べるおすすめ書籍をご紹介します。手を動かしながら、実際の仕事に活かせる本ばかりを集めました!

まずは初心者向け

Python2年生 データ分析のしくみ 第2版 体験してわかる!会話でまなべる!

一番シンプルに一番簡単に学べる本はこのシリーズではないでしょうか。
Pythonの基本は少し触ったけれど、「データ分析って何をするの?」「Pandasやグラフってどう使うの?」と感じている超入門者にぴったりの一冊が、『Python 2年生 データ分析のしくみ』です。

このシリーズ最大の特長は、キャラクター同士の会話形式で進む、やさしい解説スタイル。小難しい説明を最小限に抑えながら、「なぜそうなるのか?」を対話で自然に理解できる構成になっています。

以下のような内容を、ストーリー仕立てで段階的に学んでいきます:

  • データ分析とは何か?の基礎的な考え方
  • Jupyter Notebookの使い方
  • Pandasによる表データの扱い(DataFrameの基本)
  • グラフの作成(棒グラフ、折れ線グラフ、散布図)
  • 集計・並べ替え・フィルタリングなどの基礎操作
  • 分析結果の可視化と解釈のコツ

この本の魅力は、会話式で読みやすく「読み進めているうちに自然と手が動く」点にあります。

  • キャラの質問 → 解説 → コードの実行 → 結果確認 というテンポの良い構成
  • すべてのサンプルコードがJupyter Notebookで実行できる
  • イラストや図解も豊富で、視覚的に理解しやすい

特に、「表形式のデータを扱うってこういうことなんだ」と体感的に理解できるため、初心者がつまずきやすい“Pandasの第一歩”に最適です。

身に付くスキル

  • Jupyter NotebookでPythonコードを試せるようになる
  • 表データ(CSVなど)の読み込みと加工の基本操作
  • 分析結果を棒グラフ・折れ線グラフで視覚化できる
  • データ分析の全体像をイメージとして理解できる

こんな人におすすめ

  • データ分析をはじめて学ぶ学生や社会人
  • 難しい数式や理論にアレルギーがある人
  • 楽しく、ストレスなく、基礎を身につけたい人

基礎を学んだら次は実際の仕事でどう使うかを学ぶ

Python実践データ分析100本ノック 第2版

「基礎は学んだ。でも実際に手を動かす機会が少ない」
「実務を意識したトレーニングを積みたい」
そんな人に次におすすめしたいのが、『Python実践データ分析100本ノック』です。

名前の通り、本書は 100問の実践的な問題を解いていくことで、実務レベルのデータ処理・分析スキルを身につけられる問題集形式の書籍です。
書籍の概要

この本では、架空のEC企業のデータを用いて、実際にありそうな課題をPythonで解決していきます。
以下のようなステップで構成されており、1問ずつ着実にスキルを積み上げていく設計です。

  • データの読み込み、整形(Pandasの基本操作)
  • 欠損値や異常値の処理
  • 集計や条件分岐によるデータ加工
  • グループ化と統計指標の計算
  • 時系列データの扱い
  • 可視化の実践

この本の特長は、「実際に起こりそうな仕事での課題にどう処理すればいいのか?」を自分で考えながら手を動かすスタイルにあります。

  • 単なる写経ではなく、問題解決力が鍛えられる
  • 各ノックが「現場でありがち」な課題設定になっている
  • 模範解答も付いており、つまづいても安心

例えば、こんな課題があります:

  • 「新規顧客と既存顧客の購入傾向に違いはあるか?」
  • 「キャンペーン前後で購入回数に差は出たか?」
  • 「商品カテゴリごとの月別売上を一覧で出力せよ」

どれも現実の仕事で起こりそうな分析課題です。

身に付くスキル

  • Pandasの実践的な使い方(apply, groupby, merge などの頻出パターン)
  • データ分析における思考プロセス(仮説 → 検証)
  • ビジネスデータを扱う現場での“型”が身につく
  • コードの読みやすさや再利用性も自然に意識できるようになる

こんな人におすすめ

  • データ分析の実力を“実務レベル”に引き上げたい人
  • 自走できるスキルを身につけたい初〜中級者
  • 手を動かしながら「試して覚える」学習スタイルが合う人

統計学という学術的な面も踏まえて学ぶ

Pythonで学ぶあたらしい統計学の教科書 第2版

「平均値や標準偏差は知っているけれど、統計学って本当はどう使うの?」
「Pythonで統計の考え方も一緒に学びたい」
そんな方に最適な1冊が、『Pythonで学ぶあたらしい統計学の教科書』です。

この本は、統計学の基本を、Pythonコードとともに直感的に学べる構成になっており、数学が苦手な人でも安心して読み進められるのが特徴です。

この本は、数式をできるだけ使わず、「なぜその考え方が必要か」「どう活用するのか」にフォーカスした構成です。

主な内容は以下の通り:

  • 統計学の考え方の基礎(母集団、標本、平均、分散)
  • データの可視化(ヒストグラム、箱ひげ図、散布図)
  • 確率分布(正規分布、二項分布)
  • 回帰分析(単回帰、重回帰の基本)
  • Python(Pandas、NumPy、Matplotlib)での実装例

この本の強みは、以下のように理論と実践のバランスが取れている点です。

  • 難しい数式を極力省き、考え方をストーリーで理解できる
  • Pythonコードを使って、実際に統計処理を動かしながら学べる
  • 図解が豊富で、視覚的にも理解しやすい

たとえば、正規線形モデルや機械学習といった「よく聞くけど意味が曖昧な概念」も、会話形式や具体例を交えて解説されているため、すっと頭に入ってきます。

身に付くスキル

  • 統計学の基本的な概念と用語の正確な理解
  • Pythonで統計的な処理を実装する基礎力
  • 分析結果を“根拠をもって説明する力”
  • 統計的推定や回帰分析など、実務でよく使う手法の実践力

こんな人におすすめ

  • データ分析を本質的に理解したいPython初学者
  • 数式ではなく「実際に手を動かして」統計を理解したい人
  • 分析に説得力を持たせたいビジネスパーソンや学生

プロとしてもう1冊 分析の幅を広げる1冊

Pythonによるあたらしいデータ分析の教科書 第3版【リフロー型】

「ツールの使い方だけでなく、なぜその分析が必要なのかまで深く理解したい」
「データ分析を“技術”と“考え方”の両面から学びたい」
そう考える読者に強くおすすめできるのが、『Pythonによるあたらしいデータ分析の教科書』です。
ひとつ前の本と同じあたらしい教科書シリーズでこちらは第3版まで出ている人気本です。

この本は、データ分析の全体像・基本原則・実践手法を、Pythonコードと図解で体系的に学べる構成になっています。

本書は、いわゆる“手法の寄せ集め”ではなく、「分析とは何か」という本質からスタートし、以下のような実践的なテーマに進んでいきます:

  • データ分析のステップと考え方(問題設定、仮説構築、評価など)
  • Pythonによる前処理、可視化、モデリング(Pandas・Matplotlib・Scikit-learn)
  • データの特徴を活かした加工・変換方法
  • 回帰分析、分類、クラスタリングなどの基礎モデル
  • モデルの評価・チューニングと実践への落とし込み
  • 分析レポートのまとめ方・伝え方

手法と理論、そして“意味づけ”まで学べる一冊。
この本の優れている点は、「手法を使って終わり」ではなく、なぜその手法を選ぶのか、どう考えるのかまで丁寧に解説していることです。

  • 単なる機械的な分析ではなく、「背景を意識した分析」が身につく
  • 実データ(ECサイトの販売情報など)を通じて、リアルな分析経験が積める
  • コードとグラフを交互に使い、視覚的な理解も重視されている

身に付くスキル

  • データ分析プロジェクトの全体像を描く力
  • Pythonによる一連の分析スキル(前処理→分析→可視化→説明)
  • 仮説思考とデータ根拠のバランスをとったレポーティング能力
  • 基礎的な機械学習のモデル設計・評価スキル

こんな人におすすめ

  • データ分析を体系的に学び直したい初〜中級者
  • ツールの使い方だけでなく、分析の背景や思考を重視したい人
  • 分析業務において「もっと本質的に考えたい」と感じている人

最後に機械学習や理論に発展させ知識を自分のものにする

[第3版]Python機械学習プログラミング 達人データサイエンティストによる理論と実践 impress top gearシリーズ

「基礎的な機械学習は一通り学んだ」
「次は理論的な背景を理解し、実務への応用力を高めたい」
そんな中級者以上におすすめなのが、『Python機械学習プログラミング 達人データサイエンティストによる理論と実践』です。

本書はタイトルの通り、“理論に強く、実装にも踏み込んだ”中・上級者向けの一冊です。

この本は、データサイエンティストとして現場で通用するための「理論力」「実装力」「ビジネス感覚」をバランスよく学べるように設計されています。

主な内容は以下の通り:

  • 機械学習の基礎理論(回帰、分類、クラスタリング、次元削減)
  • 各手法の数理的な背景とPythonコードでの実装
  • 前処理・特徴量設計・評価指標の選び方
  • Scikit-learnを中心としたライブラリ活用
  • モデルの精度を上げるためのチューニング技術
  • 実務プロジェクトの進め方やビジネス観点の重要性

理論 × コード × 現場感の三拍子が揃う。
この本の特長は、手法ごとに「理論の背景 → 数式の解説 → Pythonでの実装」の流れで理解が深まると思います。

  • ハイパーパラメータ調整やモデルの評価など、現場でのノウハウも丁寧に紹介
  • 数学的にもしっかりした解説があり、「なぜそうなるのか」を論理的に理解できる

身に付くスキル

  • 各種機械学習モデルの仕組みと内部動作の理解
  • Scikit-learnでの応用的な実装力
  • 精度や汎化性能を意識したモデル評価の習慣
  • 実務プロジェクトを推進する際の技術的判断力

こんな人におすすめ

  • 機械学習の基礎は一通り学んだ中級者以上の人
  • 数理的な理解を深めて、分析の説得力を高めたい人
  • 実務に即した機械学習の設計・運用に興味があるエンジニアや分析担当者

まとめ

これらの書籍を通じて学ぶ最大の利点は、基礎から実践、そして応用までを段階的に体系的に習得できることです。Pythonの使い方だけでなく、データの扱い方、分析の考え方、統計や機械学習の理論、ビジネスへの応用まで幅広くカバーされています。独学でも実務に通じるスキルが身につき、分析結果を根拠を持って伝える力がきっと実際の仕事の現場で活きてきます。

ChatGPT・GPTs・生成AI・AIエージェント書籍10選【入門~実践

ChatGPT・GPTs・生成AI・AIエージェントおすすめ本10選【入門~実践】

はじめに

みなさん、ChatGPTがどんどん便利になっていますが、使っていますか?
私はヘビーユーザーです。無料ユーザでしたが便利さに驚き、ChatGPT Plusの有料プランにも遂に課金してしまいました。

本記事では、それらChatGPTに代表されるGPTsやAIエージェントを活用してAIをより効果的に使うためのおすすめ本を紹介します。これらの本は、GPTの基礎知識から実践的な応用までをカバーしており、初心者から上級者まで幅広く役立つ内容となっています。

この記事で分かること

  • GPTsやChatGPT、生成AIに関するおすすめ本
  • 各本の特徴やおすすめポイント
  • 自分に合った本の見つけ方

おすすめ本リスト

プログラム無しですぐ使えるChatGPTオススメ本リスト3選

1-1.「GPTsでChatGPTを優秀な部下にしよう!」


GPTsでChatGPTを優秀な部下にしよう! GPTsパーフェクト作成ガイド

1-2.「ChatGPT GPTsが作れるようになる本」


ChatGPT GPTsが作れるようになる本

1-3.「ChatGPT 120%投資術」


ChatGPT 120%投資術

生成AIをプログラムしたいエンジニア向けおすすめ本(AWS 主にBedrock編)

2-1.[AWS生成AIアプリ構築実践ガイド]


AWS生成AIアプリ構築実践ガイド

2-2.「Amazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガイド]」


Amazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガイド]

2-3.[AIエージェント開発/運用入門 [生成AI深掘りガイド]]


AIエージェント開発/運用入門 [生成AI深掘りガイド]

生成AIをプログラムしたいエンジニア向けおすすめ本(AWS ChatGPT/OpenAI編)

3-1.[Azure OpenAI ServiceではじめるChatGPT/LLMシステム構築入門 エンジニア選書]


Azure OpenAI ServiceではじめるChatGPT/LLMシステム構築入門 エンジニア選書

3-2.「ChatGPT/LangChainによるチャットシステム構築[実践]入門」


ChatGPT/LangChainによるチャットシステム構築[実践]入門

3-3.[LangChainとLangGraphによるRAG・AIエージェント[実践]入門 (エンジニア選書)]


LangChainとLangGraphによるRAG・AIエージェント[実践]入門 (エンジニア選書)

3-4.「つくりながら学ぶ!生成AIアプリ&エージェント開発入門」


つくりながら学ぶ!生成AIアプリ&エージェント開発入門

内容紹介

ここからはいくつかのおすすめ本の抜粋での紹介になります。
もう少し詳細を知りたい人は読んでみてください。

1-1.「GPTsでChatGPTを優秀な部下にしよう!」

本の概要

この本は、ChatGPTを使ったGPTsの作成方法が丁寧に書かれていてオススメです。
解説内容も読者の目的に合わせた「文章作成」「意思決定支援」「画像生成」といった内容から、GPTsのメニューに合わせた「Code Interpreter」「Knowlege」「API」という構成になっているので非常に自分の目的に合わせて読みやすくこんなことも出来るのかとワクワクして読める内容でした。
コードサンプルとして付属しているnoteの内容も流用可能なものが多く秀逸でした。

おすすめポイント

  • 実践的なアプローチ:目的な別な構成になっており、具体的な使用例が豊富に紹介されています。
  • 初心者にも優しい:GPTの基礎知識から丁寧に説明されているので、初心者でも理解しやすいです。
  • 即実践可能:読んだその日から実践できるテクニックが満載です。

1-2.「ChatGPT GPTsが作れるようになる本」

本の概要

この本は、GPTモデルの構築からカスタマイズまでを詳しく解説しています。技術的な部分を深く掘り下げており、GPTを自分で作りたいと考えている人に最適です。サンプルコードや具体的な手順が豊富に含まれており、実践的なガイドとなっています。
特に、購入者特典としてGPTを活用するためサンプルが用意されていて、これには、プロンプト集や、API認証設定の解説、サムネイル画像を自動生成する方法などがあります。情報をまとめたスプレッドシートも提供され、初心者から上級者まで幅広く役立つ内容となっています。

おすすめポイント

  • 技術的な深掘り:モデルの構築プロセスが詳細に説明されており、開発者にとって非常に有益です。
  • 具体的なサンプルコード:サンプルコードが豊富に掲載されており、実践に役立ちます。
  • 応用例が豊富:様々な応用例が紹介されており、実際の開発に活かせる内容です。

1-3.「ChatGPT 120%投資術」

本の概要

この本は、ChatGPTを活用した投資戦略について解説している一冊です。GPTsの分析能力を駆使して、効果的な投資判断を行う方法を学ぶことができます。市場の動向を予測するための具体的な手法や、過去のデータを基にしたシミュレーションが紹介されています。
120%シリーズとしてシリーズされている本の投資編になります。

おすすめポイント

  • 投資に特化:投資に特化した内容で、具体的な戦略が紹介されています。
  • 実践的なアプローチ:理論だけでなく、実際の投資シミュレーションが豊富に含まれています。
  • 幅広い応用:GPTを活用した投資以外の応用方法も紹介されています。

3-4.「つくりながら学ぶ!生成AIアプリ&エージェント開発入門」


つくりながら学ぶ!生成AIアプリ&エージェント開発入門

本の概要

PythonをベースにLangChain、Streamlitを使って以下のようなAIアプリやAIエージェントを作成している本です。アーキテクトの解説や実際のコードが含まれるため実践的な良書と思える1冊でした。

  • URLを入力すると、そのページの内容を自動で取得して要約してくれるAIアプリ
  • YouTubeのURLを投げると、その動画を見て内容を要約してくれるAIアプリ
  • PDFをアップロードして、その内容についてLLMに質問できるAIアプリ
  • Webで検索を行い、調べ物をしてくれるAIエージェント
  • BigQueryと連携して、データ分析を行うAIエージェント

おすすめポイント

  • 最新技術を学べる:Python、LangChain、Streamlitといった技術が学べます。
  • 実務に使えそうなサンプルアプリ:サンプルアプリでいろいろカスタマイズして実務に使えそうです。

まとめ

今回紹介した書籍は、いずれもAIを活用するための具体的な知識と実践的な方法が書かれています。みなさんにもそれぞれの本が持つ独自の視点とアプローチを活かせる場面がきっとあると思うのでぜひ読んでみてください。

おまけ:ChatGPTのおすすめ本

ChatGPTのおすすめ本ならこの1冊です。
最近流行りでたくさんの本ができてますが、誰でも入門書として最初に購入する1冊と思っています。

頭がいい人のChatGPT&Copilotの使い方

本の概要

ChatGPTとCopilot、両者の違いや特徴、実務への活かし方が豊富な事例とともに説明されていて、プロンプト設計例やAIを“思考の補助輪”として使う発想法、ブレストやデータ分析への応用法など、使いこなせる具体的なノウハウが満載です。

おすすめポイント

  • AI本にありがちな難解さがなく、やさしい言葉と多彩なケーススタディが特徴です。営業・企画・マーケター・主婦など幅広い読者を想定し、「すぐ試せる」活用法が多数紹介されています。
  • ChatGPTとCopilotのダブル解説です。ChatGPTだけでなく、ExcelやWordの自動化・資料作成に強いCopilotの活用法が章立てで丁寧に説明されています。
  • 「仕事時間が1/3になる」「プロンプト例が豊富」「Chapter0からステップ式で初歩から実践まで身につく」といった、効果をすぐに実感できる内容になっています。

Spring Security HttpFirewallの仕様確認

Spring Security HttpFirewallの仕様確認

Spring Security HttpFirewall を仕様(実装)を確認したのでその内容説明になります。

Spring Security HttpFirewall の説明は以下になります。
https://spring.pleiades.io/spring-security/reference/servlet/exploits/firewall.html

ここでは、DefaultHttpFirewall/StrictHttpFirewall を見ていきます。
名前にDefaultが付いていて紛らわしいですが、SpringSecurityのデフォルト実装はStrictHttpFirewallになります。

[JavaDoc]
DefaultHttpFirewall
https://spring.pleiades.io/spring-security/site/docs/6.2.4/api//org/springframework/security/web/firewall/DefaultHttpFirewall.html#setAllowUrlEncodedSlash(boolean)

StrictHttpFirewall
https://spring.pleiades.io/spring-security/site/docs/6.2.4/api//org/springframework/security/web/firewall/StrictHttpFirewall.html

DefaultHttpFirewall

それではDefaultHttpFirewallから見ていきます。
JavaDocによるとチェック仕様は以下の2点。

[クラス概要]

正規化されていないパス(ディレクトリトラバーサル文字シーケンスを含む)が見つかった場合、リクエストはすぐに拒否されます。

[setAllowUrlEncodedSlashメソッド]

アプリケーションが URL エンコードされたスラッシュ文字を許可するかどうかを設定します。
true(デフォルトは false)の場合、URL エンコードされたスラッシュは URL で許可されます。

注意点としては、

servletPath および pathInfo の一貫した値を提供するためにリクエストをラップするデフォルトの実装であり、パスパラメーター(RFC 2396 で定義されている)を含みません。

です。

それぞれの実装は以下の通りでした。

[正規化されていないパス判定]

    /**
     * Checks whether a path is normalized (doesn't contain path traversal sequences like
     * "./", "/../" or "/.")
     * @param path the path to test
     * @return true if the path doesn't contain any path-traversal character sequences.
     */
    private boolean isNormalized(String path) {
        if (path == null) {
            return true;
        }
        for (int i = path.length(); i > 0;) {
            int slashIndex = path.lastIndexOf('/', i - 1);
            int gap = i - slashIndex;
            if (gap == 2 && path.charAt(slashIndex + 1) == '.') {
                // ".", "/./" or "/."
                return false;
            }
            if (gap == 3 && path.charAt(slashIndex + 1) == '.' && path.charAt(slashIndex + 2) == '.') {
                return false;
            }
            i = slashIndex;
        }
        return true;
    }

[スラッシュ文字許可判定]

    /**
     * <p>
     * Sets if the application should allow a URL encoded slash character.
     * </p>
     * <p>
     * If true (default is false), a URL encoded slash will be allowed in the URL.
     * Allowing encoded slashes can cause security vulnerabilities in some situations
     * depending on how the container constructs the HttpServletRequest.
     * </p>
     * @param allowUrlEncodedSlash the new value (default false)
     */
    public void setAllowUrlEncodedSlash(boolean allowUrlEncodedSlash) {
        this.allowUrlEncodedSlash = allowUrlEncodedSlash;
    }

    private boolean containsInvalidUrlEncodedSlash(String uri) {
        if (this.allowUrlEncodedSlash || uri == null) {
            return false;
        }
        if (uri.contains("%2f") || uri.contains("%2F")) {
            return true;
        }
        return false;
    }

StrictHttpFirewall

次はStrictHttpFirewallになります。
冒頭でも書いたようにこちらのSecuritySecurityのデフォルト実装であり、特に指定しない場合はこちらのFirewallが適用されます。

JavaDocによるとチェック仕様は以下の2点。

[クラス概要]

 次のルールがファイアウォールに適用されます。

    許可されていない HTTP メソッドを拒否します。これは HTTP 動詞の改ざんと XST 攻撃をブロックするように指定されています。setAllowedHttpMethods(Collection) を参照
    セキュリティの制約を回避するために、正規化されていない URL を拒否します。この制約を無効にすることは非常に危険であると考えられるため、これを無効にする方法はありません。この動作を許可するいくつかのオプションは、ファイアウォールの前にリクエストを正規化するか、代わりに DefaultHttpFirewall を使用することです。リクエストの正規化は脆弱であり、リクエストが正規化ではなく拒否される理由に留意してください。
    出力可能な ASCII 文字ではない文字を含む URL を拒否します。この制約を無効にすることは非常に危険であると考えられるため、これを無効にする方法はありません。
    セミコロンを含む URL を拒否します。setAllowSemicolon(boolean) を参照
    URL エンコードされたスラッシュを含む URL を拒否します。setAllowUrlEncodedSlash(boolean) を参照
    バックスラッシュを含む URL を拒否します。setAllowBackSlash(boolean) を参照
    null 文字を含む URL を拒否します。setAllowNull(boolean) を参照
    URL エンコードパーセントを含む URL を拒否します。setAllowUrlEncodedPercent(boolean) を参照
    許可されていないホストを拒否します。setAllowedHostnames(Predicate) を参照
    許可されていないヘッダー名を拒否します。setAllowedHeaderNames(Predicate) を参照
    許可されていないヘッダー値を拒否します。setAllowedHeaderValues(Predicate) を参照
    許可されていないパラメーター名を拒否します。setAllowedParameterNames(Predicate) を参照
    許可されていないパラメーター値を拒否します。setAllowedParameterValues(Predicate) を参照

基本的に細かい内容は各メソッド参照の形のため、例えば
[setAllowedHeaderNames]メソッドを確認すると

デフォルトでは、ISO 制御文字および定義されていない文字を含むヘッダー名は拒否されます。

となっています。
実装は、以下になります。

    private static final Pattern ASSIGNED_AND_NOT_ISO_CONTROL_PATTERN = Pattern
            .compile("[\\p{IsAssigned}&&[^\\p{IsControl}]]*");

    private static final Predicate<String> ASSIGNED_AND_NOT_ISO_CONTROL_PREDICATE = (
            s) -> ASSIGNED_AND_NOT_ISO_CONTROL_PATTERN.matcher(s).matches();

    private Predicate<String> allowedHeaderNames = ASSIGNED_AND_NOT_ISO_CONTROL_PREDICATE;

正規表現の部分がキモになっており、正規表現パターン [\p{IsAssigned}&&[^\p{IsControl}]]* は、次のような意味を持ちます:

[\p{IsAssigned}&&[^\p{IsControl}]]* は、Unicodeのすべての割り当てられた文字(\p{IsAssigned})であり、制御文字(\p{IsControl})ではないものを0回以上繰り返すパターンです。

この正規表現パターンは、Unicodeのすべての文字を対象にしており、制御文字を除外しています。制御文字は、改行やタブなどの特定の制御を目的とした文字となります。

例えば、次のような文字列がこの正規表現パターンに一致します:

"Hello, World!" (制御文字が含まれていないため)
"12345" (制御文字が含まれていないため)
"こんにちは" (日本語の文字も一致します)
一方で、次のような文字列は一致しません:

"Hello\tWorld!" (タブ文字が制御文字として含まれているため)
"Line\nBreak" (改行文字が制御文字として含まれているため)

Mr.Children映像化ライブセットリスト集

Mr.Children(ミスチル)映像化LIVEセトリ集

映像化されているMr.Childrenライブのセットリストを全曲一覧でまとめて内容です♪
曲探しの参考になれば。

NEWアルバム「産声」2026年3月25日発売!!
【Amazon.co.jp限定】産声 (初回生産限定盤) - Mr.Children (メガジャケ付)

※本ページはプロモーションが含まれています。

LIVE音源で聞く特にオススメの元気の出る10曲は次の記事で投稿しています♪

やる気が溢れる 元気が出る Mr.Children エネルギーソング

miss you

オススメポイント

  • ☆☆☆☆☆:未完 このライブではみんなの背中には羽があって軽やかに飛んでいけると思える曲♪
  • ☆☆☆☆:アンダーシャツ レア曲です♪昔の曲なのに miss you のために歌われた曲みたいです!
  • 2025年6月25日、アリーナtourの最終公演 大阪城ホールのライブ映像と大阪フェスティバルホールでの貴重なホールtour映像を“一挙同時収録”した『miss you LIVE』として発売です♪

miss you LIVE

セットリスト

■Mr.Children tour 2024 miss you arena tour
(収録曲)

  1. OPENING
  2. 叫び祈り
  3. I MISS YOU
  4. REM
  5. アンダーシャツ ☆☆☆☆
  6. Everything (It's you)
    (MC)
  7. 靴ひも
  8. Fifty's map ~おとなの地図
  9. 青いリンゴ
  10. つよがり
  11. Are you sleeping well without me?
  12. LOST
  13. アート=神の見えざる手
  14. 雨の日のパレード
  15. 血の管
  16. Party is over
  17. We have no time
  18. ケモノミチ
  19. 365日
  20. 記憶の旅人
    (MC)
  21. The song of praise
  22. End of the day
  23. 未完 ☆☆☆☆☆
  24. 終わりなき旅
    25.〈ENCORE〉
  25. Hallelujah
  26. 優しい歌
  27. Sign
    (MC)
  28. in the pocket
  29. END ROLL
    全27曲

■Mr.Children tour 2023/24 miss you
(収録曲)

  1. OPENING
  2. Birthday
  3. 青いリンゴ
  4. 名もなき詩
    (MC)
  5. Fifty's map ~おとなの地図
  6. 口がすべって
  7. 常套句
  8. Are you sleeping well without me?
  9. LOST
  10. アート=神の見えざる手
  11. 雨の日のパレード
  12. Party is over
  13. We have no time
  14. ケモノミチ
  15. pieces
  16. 放たれる
  17. 幻聴
  18. Your Song
    (MC)
  19. おはよう
    21.〈ENCORE〉
  20. 優しい歌
    (MC)
  21. The song of praise
  22. 祈り ~涙の軌道
  23. END ROLL
    全22曲

Mr.Children 30th Anniversary Tour 半世紀へのエントランス

オススメポイント

  • ☆☆☆☆:名曲揃いですがコロナ禍というタイミングもあって タガタメ 染みます♪

Mr.Children 30th Anniversary Tour 半世紀へのエントランス (Blu-ray)

セットリスト

Mr.Children 30th Anniversary Tour 半世紀へのエントランス - 2022.6.19 YANMAR STADIUM NAGAI – 完全版

  1. OPENING
  2. 終わりなき旅
  3. 名もなき詩
  4. 海にて、心は裸になりたがる
  5. シーソーゲーム ~勇敢な恋の歌~
  6. innocent world.
  7. <MC>
  8. 彩り
  9. 口笛
  10. <MC>
  11. 車の中でかくれてキスをしよう
  12. <MC>
  13. Sign
  14. タガタメ ☆☆☆☆
  15. Documentary film
  16. DANCING SHOES
  17. LOVEはじめました
  18. フェイク
  19. ニシエヒガシエ
  20. Worlds end
  21. <MC>
  22. 永遠
  23. others
  24. <SE>
  25. Tomorrow never knows
  26. 光の射す方へ
  27. fanfare
  28. エソラ
  29. <MC>
  30. GIFT
  31. <ENCORE> / <MC>
  32. HANABI
  33. <MC>
  34. 生きろ
  35. ENDROLL
    全25曲

Mr.Children 30th Anniversary Tour 半世紀へのエントランス - 2022.5.10 TOKYO DOME – 完全版

  1. OPENING
  2. Brand new planet
  3. youthful days
  4. 海にて、心は裸になりたがる
  5. シーソーゲーム ~勇敢な恋の歌~
  6. innocent world
  7. <MC>
  8. Over
  9. Any
  10. <MC>
  11. くるみ
  12. 僕らの音
  13. タガタメ ☆☆☆☆
  14. Documentary film
  15. DANCING SHOES
  16. ロックンロールは生きている
  17. ニシエヒガシエ
  18. Worlds end
  19. <MC>
  20. 永遠
  21. others
  22. <SE>
  23. Tomorrow never knows
  24. fanfare
  25. エソラ
  26. <MC>
  27. GIFT
  28. <ENCORE> / <MC>
  29. Your Song
  30. <MC>
  31. 生きろ
    全23曲

Mr.Children Dome Tour 2019 “Against All GRAVITY”

オススメポイント

  • ☆☆☆☆☆:名曲と知っていたのですがAgainst All GRAVITYのライブ映像の SUNRISE は段違いです♪
  • ☆☆☆☆☆:このライブは名曲揃いでしたのでもう1曲 Prelude。これから何かに頑張りたいときに背中を押してくれます♪

Live DVD Mr.Children Dome Tour 2019 “Against ALL GRAVITY"

セットリスト

01 OPENING
02 Your Song
03 Starting Over
04 himawari
05 〈S.MC〉
06 everybody goes 〜秩序のない現代にドロップキック〜
07 〈MC〉
08 HANABI
09 Sign
10 〈MC〉
11 名もなき詩
12 〈MC〉
13 CANDY
14 旅立ちの唄
15 〈MC〉
16 ロードムービー
17 addiction
18 Dance Dance Dance
19 Monster
20 SUNRISE ☆☆☆☆☆
21 Tomorrow never knows
22 Prelude ☆☆☆☆☆
23 innocent world
24 海にて、心は裸になりたがる
25 SINGLES
26 Worlds end
27 〈MC〉
28 皮膚呼吸
29 END ROLL

Mr.Children Tour 2018-19 重力と呼吸

Live Blu-ray 「Mr.Children Tour 2018-19 重力と呼吸」[Blu-ray]

01 OPENING
02 SINGLES
03 Monster
04 himawari
05 幻聴
06 〈MC〉
07 HANABI
08 NOT FOUND
09 忘れ得ぬ人
10 〈MC〉
11 花 -Mémento-Mori-
12 addiction
13 Dance Dance Dance
14 ハル
15 and I love you
16 しるし
17 〈S.MC〉
18 海にて、心は裸になりたがる
19 擬態
20 Worlds end
21 〈MC〉
22 皮膚呼吸
23 here comes my love
24 風と星とメビウスの輪
25 〈MC〉
26 秋がくれた切符
27 〈S.MC〉
28 Your Song
29 END ROLL

Mr.Children DOME & STADIUM TOUR 2017 Thanksgiving 25

Live Blu-ray 「Mr.Children DOME & STADIUM TOUR 2017 Thanksgiving 25」[Blu-ray]

  1. <Prologue>
  2. OPENING
  3. CENTER OF UNIVERSE
  4. シーソーゲーム 〜勇敢な恋の歌〜
  5. 名もなき詩
  6. <MC>
  7. GIFT
  8. Sign
  9. <MC>
  10. ヒカリノアトリエ
  11. <MC>
  12. 君がいた夏
  13. innocent world
  14. Tomorrow never knows
  15. <MC>
  16. Simple
  17. <VTR>
  18. 思春期の夏 〜君との恋が今も牧場に〜
  19. 365日
  20. HANABI
  21. <MC>
  22. 1999年、夏、沖縄
  23. 足音 〜Be Strong
  24. ランニングハイ
  25. ニシエヒガシエ
  26. ポケット カスタネット
  27. himawari
  28. Printing
  29. Dance Dance Dance
  30. fanfare
  31. エソラ
  32. <ENCORE>
  33. overture
  34. 蘇生
  35. <MC>
  36. 終わりなき旅
  37. ENDROLL

Mr.Children、ヒカリノアトリエで虹の絵を描く

  1. <Document 1>
  2. <Opening>
  3. お伽話
  4. <Document 2>
  5. <Document 3>
  6. You make me happy
  7. PIANO MAN
  8. <Document 4>
  9. クラスメイト
  10. <Document 5>
  11. <MC>
  12. 妄想満月
  13. 虹の彼方へ
  14. <Document 6>
  15. しるし
  16. こころ
  17. <MC>
  18. <Document 7>
  19. ヒカリノアトリエ
  20. <Document 8>
  21. メインストリートに行こう
  22. 跳べ
  23. <Document 9>
  24. 終わりなき旅
  25. <End Roll>

Mr.Children Stadium Tour 2015 未完

  1. <Prologue"未完">
  2. <OPENING>
  3. 未完
  4. 擬態
  5. ニシエヒガシエ
  6. 光の射す方へ
  7. CHILDREN’S WORLD
  8. <MC>
  9. 運命
  10. FIGHT CLUB
  11. 斜陽
  12. I Can Make It
  13. <MC>
  14. 忘れ得ぬ人
  15. <MC>
  16. and I love you
  17. タガタメ
  18. <SE>
  19. 蜘蛛の糸
  20. REM
  21. WALTZ
  22. フェイク
  23. ALIVE
  24. <SE>
  25. 進化論
  26. 終わりなき旅
  27. 幻聴
  28. 足音 〜Be Strong
  29. <ENCORE>
  30. I wanna be there
  31. overture〜蘇生
  32. fantasy
  33. Tomorrow never Knows
  34. innocent world
  35. <ENDING>
  36. Starting Over
  37. <END ROLL>

Mr.Children TOUR 2015 REFLECTION

  1. <Prologue>
  2. <OPENING>
  3. fantasy
  4. ロックンロールは生きている
  5. 旅人
  6. fanfare
  7. <MC>
  8. Melody
  9. FIGHT CLUB
  10. 斜陽
  11. I Can Make It
  12. <MC>
  13. 口笛
  14. <MC>
  15. HANABI
  16. <MC>
  17. 口がすべって
  18. <SE>
  19. 蜘蛛の糸
  20. REM
  21. WALTZ
  22. 放たれる
  23. <SE>
  24. 進化論
  25. 足音 〜Be Strong
  26. 幻聴
  27. <ENCORE>
  28. Everything(It’s you)
  29. エソラ
  30. Marshmallow day
  31. <MC>
  32. Starting Over
  33. <ENDING>
  34. 未完
  35. <END ROLL>

(an imitation) blood orange

DISC 1

  1. OPENING
  2. 過去と未来と交信する男
  3. LOVE はじめました
  4. Worlds end
  5. NOT FOUND
  6. (MC)
  7. 花言葉
  8. やわらかい風
  9. 抱きしめたい
  10. (MC)
  11. Surrender
  12. Pink~奇妙な夢
  13. 常套句
  14. CENTER OF UNIVERSE
  15. 擬態
  16. fanfare
  17. (MC)
  18. イミテーションの木
  19. pieces
  20. Happy Song
  21. hypnosis
  22. End of the day
  23. innocent world
  24. エソラ
  25. Marshmallow day
  26. (ENCORE)
  27. 天頂バス
  28. HERO
  29. 祈り ~涙の軌道
  30. ENDROLL

Mr.Children TOUR POPSAURUS 2012

DISC 1

  1. OPENING
  2. エソラ
  3. 箒星
  4. youthful days
  5. LOVE
  6. GIFT
  7. Everything(It's you)
  8. <MC>
  9. デルモ
  10. End of the day
  11. 終わりなき旅
  12. Dance Dance Dance
  13. ニシエヒガシエ
  14. フェイク
  15. <SE>
  16. 365日
  17. しるし
  18. <MC>
  19. くるみ
  20. Sign
  21. <MC>
  22. 1999 年、夏、沖縄
  23. ロックンロールは生きている
  24. Round About ~孤独の肖像~
  25. Worlds end
  26. fanfare
  27. innocent world
  28. <ENCORE>
  29. ラララ
  30. 彩り
  31. 光の射す方へ
  32. overture ~ 蘇生
  33. 祈り ~涙の軌道
  34. END ROLL

BONUS
Talk about 20th ANNIVERSARY & Selected Live from POPSAURUS 2012
 GIFT(2012.4.29 / 福岡 Yahoo! JAPAN ドーム)
 終わりなき旅(2012.4.22 / 埼玉 西武ドーム)
 innocent world(2012.5.25 / 東京ドーム)
 東京(2012.5.23 / 東京ドーム)
 Simple(2012.6.6 / ナゴヤドーム)

Mr.Children STADIUM TOUR 2011 SENSE -in the field-

  1. OPENING
  2. かぞえうた
  3. Prelude
  4. HOWL
  5. 未来
  6. I'm talking about Lovin'
  7. innocent world
  8. <MC>
  9. Replay
  10. 君が好き
  11. <MC>
  12. Mirror
  13. I
  14. CENTER OF UNIVERSE
  15. <SE>
  16. 365日
  17. ハル
  18. ロックンロールは生きている
  19. ニシエヒガシエ
  20. Everything is made from a dream
  21. 風と星とメビウスの輪
  22. HERO
  23. 擬態
  24. エソラ
  25. <ENCORE>
  26. fanfare
  27. 星になれたら
  28. Tomorrow never knows
  29. かぞえうた
  30. 終わりなき旅
  31. END ROLL

Mr.Children TOUR 2011 “SENSE”

  1. OPENING
  2. NOT FOUND
  3. <MC>
  4. HOWL
  5. 名もなき詩
  6. I’m talking about Lovin’
  7. エソラ
  8. <MC>
  9. HANABI
  10. くるみ
  11. 花 -Mémento-Mori-
    12.【es】~ Theme of es ~
  12. Dive
  13. シーラカンス ~ 深海
  14. I
  15. ロザリータ
  16. <SE>
  17. 365日
  18. ロックンロールは生きている
  19. フェイク
  20. ポケット カスタネット
  21. HERO
  22. 擬態
  23. Prelude
  24. ENCORE ~ <MC>
  25. 横断歩道を渡る人たち
  26. fanfare
  27. Forever
  28. <MC>
  29. かぞえうた
  30. ENDROLL

Split the Difference

DVD

  1. Documentary
  2. NOT FOUND
  3. Everything(It's you)
  4. SUNRISE
  5. Another Mind
  6. Surrender
  7. ファスナー
  8. 終わりなき旅
  9. TIME AFTER TIME
  10. 横断歩道を渡る人たち
  11. ニシエヒガシエ
  12. End Roll

DVD特典映像
 隔たり
 Jealous Guy
 Heavenly kiss
 僕らの音
 しるし

~SUPERMARKET FANTASY~ IN TOKYO DOME

  1. OPENING
  2. ラヴ コネクション
  3. Dance Dance Dance
  4. Worlds end
  5. MC
  6. HANABI
  7. ロードムービー
  8. 風と星とメビウスの輪
  9. ALIVE
  10. LOVE はじめました
  11. Monster
  12. ニシエヒガシエ
  13. CANDY
  14. MC
  15. Simple
  16. Drawing
  17. 彩り
  18. fanfare
  19. 箒星
  20. 名もなき詩
  21. エソラ
  22. 終わりなき旅
  23. 365日
  24. and I love you
  25. GIFT
  26. END ROLL

Mr.Children Tour 2009~終末のコンフィデンスソングス~

オススメポイント

  • ☆☆☆☆:お客さんがメインで歌っている innocent world の大合唱
  • ☆☆☆:ライブで歌うのは今のところこのライブだけが唯一となる熱い曲 少年

セットリスト

  1. OPENING
  2. 終末のコンフィデンスソング
  3. everybody goes -秩序のない現代にドロップキック-
  4. 光の射す方へ
  5. MC
  6. 水上バス
  7. つよがり
  8. MC
  9. ロックンロール
  10. 東京
  11. 口がすべって
  12. ファスナー
  13. フェイク
  14. MC
  15. 車の中でかくれてキスをしよう
  16. HANABI
  17. youthful days
  18. エソラ
  19. innocent world ☆☆☆☆
  20. 風と星とメビウスの輪
  21. GIFT
  22. 少年 ☆☆☆
  23. 花の匂い
  24. 優しい歌
  25. END ROLL

Mr.Children"HOME"TOUR 2007 ~in the field~

オススメポイント

  • ☆☆☆☆:ちょっとマイナーな曲ですが もっと を聞けるのはHOMEだけです♪

セットリスト

  1. OPENING
  2. 彩り
  3. 名もなき詩
  4. 星になれたら
  5. シーソーゲーム~勇敢な恋の歌~
  6. CROSS ROAD
  7. Tomorrow never knows
  8. my life
  9. ひびき
  10. もっと ☆☆☆☆
  11. HERO
  12. Imagine
  13. CENTER OF UNIVERSE
  14. Dance Dance Dance
  15. フェイク
  16. Any
  17. 口笛
  18. Sign
  19. ポケット カスタネット
  20. Worlds end
  21. 終わりなき旅
  22. しるし
  23. Wake me up!
  24. innocent world
  25. 旅立ちの唄
  26. END ROLL

Mr.Children “HOME” TOUR 2007

  1. OPENING
  2. 彩り
  3. and I love you
  4. youthful days
  5. 箒星
  6. Another Story
  7. もっと
  8. いつでも微笑みを
  9. PIANO MAN
  10. ランニングハイ
  11. Imagine
  12. CENTER OF UNIVERSE
  13. Dance Dance Dance
  14. フェイク
  15. Any
  16. to U
  17. タガタメ
  18. ポケット カスタネット
  19. Worlds end
  20. 終わりなき旅
  21. しるし
  22. あんまり覚えてないや
  23. overture ~ 蘇生
  24. 彩り

MR.CHILDREN DOME TOUR 2005“ I ♥ U ” ~ FINAL IN TOKYO DOME ~

  1. OPENING
  2. LOVEはじめました
  3. Dance Dance Dance
  4. ニシエヒガシエ
  5. 跳べ
  6. innocent world
  7. 言わせてみてぇもんだ
  8. くるみ
  9. CANDY
  10. 靴ひも
  11. 隔たり
  12. ファスナー
  13. Monster
    Bonus Track 抱きしめたい
    Bonus Track Simple
    Bonus Track Over
    Bonus Track 君が好き
    Bonus Track 2日遅れのクリスマス
  14. CENTER OF UNIVERSE
  15. ランニングハイ
  16. 名もなき詩
  17. ラララ
  18. overture~蘇生
  19. Worlds end
  20. Hallelujah
  21. and I love you
  22. 未来
  23. 僕らの音
  24. 潜水
  25. Sign
    Bonus Track 靴ひも
    Bonus Track 未来
    Bonus Track and I love you

Mr.Children Tour 2004 シフクノオト

  1. OPENING
  2. 終わりなき旅
  3. 光の射す方へ
  4. PADDLE
  5. 名もなき詩
  6. 口笛
  7. Everything(It's you)
  8. Pink~奇妙な夢
  9. 血の管
  10. ニシエヒガシエ
  11. Image
  12. overture~蘇生
    EX01. : SPECIAL LIVE at OKINAWA
    EX02. : SOCCER
  13. youthful days
  14. innocent world
  15. くるみ
  16. Any
  17. 天頂バス
  18. HERO~ENCORE~
  19. INTERVIEW
  20. Mirror
  21. MC
  22. Tomorrow Never Knows
  23. タガタメ
  24. Sign
    EX01: SPECIAL LIVE at OSAKA
    EX02: JEN'S PHOTO

wonederful world on DEC 21

  1. OPENING
  2. Dear wonderful world
  3. CENTER OF UNIVERSE
  4. NOT FOUND
  5. 名もなき詩
  6. 渇いたkiss
  7. Drawing
  8. つよがり
  9. MC
  10. 君が好き
  11. youthful days
  12. ファスナー
  13. Bird Cage
  14. ニシエヒガシエ
  15. LOVE はじめました
  16. ALIVE
  17. 終わりなき旅
  18. 光の射す方へ
    --- ENCORE ---
  19. 虹の彼方へ
  20. Any
  21. いつでも微笑みを
  22. overture
  23. 蘇生
  24. It's a wonderful world
  25. HERO
  26. HERO
  27. Dear wonderful world
  28. ファスナー
  29. いつでも微笑みを
  30. It's a wonderful world
  31. talks & interview

Mr.Children CONCERT TOUR POPSAURUS 2001

  1. OPENING
  2. I'll be
  3. ラララ
  4. 君がいた夏
  5. LOVE
  6. 星になれたら
  7. 車の中でかくれてキスをしよう
  8. 抱きしめたい
  9. Printing
  10. Dance Dance Dance
  11. Round About~孤独の肖像~
  12. Dive
  13. シーラカンス
  14. 手紙
  15. マシンガンをぶっ放せ
  16. ニシエヒガシエ
  17. 光の射す方へ
  18. 深海
  19. Tomorrow never knows
  20. Hallelujah
  21. everybody goes -秩序のない現代にドロップキック-
  22. innocent world
  23. 独り言
  24. 優しい歌

Mr.Children Concert Tour Q 2000~2001

オススメポイント

  • ☆☆☆☆: Everything is made from a dream が特別な演出があって必見です♪そこからの Hallelujah への繋がみがライブならではの見所です(^^)

セットリスト

  1. OPENING
  2. その向こうへ行こう
  3. 光の射す方へ
  4. ニシエヒガシエ
  5. 終わりなき旅
  6. Heavenly kiss
  7. クラスメイト
  8. ロードムービー
  9. 抱きしめたい
  10. Surrender
  11. つよがり
  12. 十二月のセントラルパークブルース
  13. スロースターター
  14. everybody goes-秩序のない現代にドロップキック-
  15. 名もなき詩
  16. CENTER OF UNIVERSE
  17. NOT FOUND
  18. Everything is made from a dream ☆☆☆☆
  19. Hallelujah
    --- ENCORE ---
  20. 友とコーヒーと嘘と胃袋
  21. 口笛

TOUR '99 DISCOVERY

  1. OPENING
  2. DISCOVERY
  3. アンダーシャツ
  4. 名もなき詩
  5. Prism
  6. Everything(It's you)
  7. I'll be
  8. 花 -Memento-Mori-
  9. Simple
  10. ラヴ コネクション
  11. Dance Dance Dance
  12. ニシエヒガシエ
  13. ラララ
  14. Tomorrow never knows
  15. 終わりなき旅
  16. 光の射す方へ
    --- ENCORE ---
  17. everybody goes -秩序のない現代にドロップキック-
  18. Image

regress or progress '96~'97 IN TOKYO DOME

  1. OPENING
  2. 旅人
  3. ラヴ コネクション
  4. 傘の下の君に告ぐ
  5. Round About ~孤独の肖像~
  6. Dance Dance Dance
  7. 抱きしめたい
  8. Talk
  9. my life
  10. Dive
  11. シーラカンス
  12. 手紙
  13. ありふれた Love Story ~男女問題はいつも面倒だ~
  14. Mirror
  15. Making Songs
  16. 名もなき詩
  17. So Let´s Get Truth
  18. 臨時ニュース
  19. マシンガンをぶっ放せ
  20. ゆりかごのある丘から
  21. 花 -Memento-Mori-
  22. 深海
  23. Brandnew my lover
  24. タイムマシーンに乗って
  25. everybody goes -秩序のない現代にドロップキック-
  26. ALIVE
  27. Everything(It's you)
  28. ボレロ


以上!ミスチルを存分に楽しんでください!!

JavaのSpringSecurityでAESの暗号化/復号化処理を実装する

サクっと作るなら以下が参考になります。

http://terasolunaorg.github.io/guideline/current/ja/Security/Encryption.html

暗号化

    public static String encryptTextByAesWithGcm(String secret, String salt, String plainText) {
        TextEncryptor aesTextEncryptor = Encryptors.delux(secret, salt);

        return aesTextEncryptor.encrypt(plainText);
    }

復号化

    public static String decryptTextByAesWithGcm(String secret, String salt, String cipherText) {
        TextEncryptor aesTextEncryptor = Encryptors.delux(secret, salt);

        return aesTextEncryptor.decrypt(cipherText);
    }

補足

ここからが個人的には重要

1.secretはプレーンテキストでいいのですが、saltはプレーンテキストではダメなので以下みたいになります。

String salt = new String(Hex.encodeHexString("salt".getBytes()));

2.参考サイト

暗号化の結果について
encryptメソッドの返り値 (暗号化の結果) は実行毎に異なる値を返すが、鍵とソルトが同一であれば復号処理の結果は同一になる (正しく復号できる) 。

の記載、初期化ベクトル (iv)の役割よるものです。
ivは、同じ鍵を使用して同じ平文データを複数回暗号化するときに異なる暗号文を生成します。
ivはランダムな値で、セッションごとに生成される。

セッションごと?確かにソースをSpringSecurityのソースを追っていくと、以下になっている。

    /**
     * Creates a standard password-based bytes encryptor using 256 bit AES encryption.
     * Derives the secret key using PKCS #5's PBKDF2 (Password-Based Key Derivation
     * Function #2). Salts the password to prevent dictionary attacks against the key. The
     * provided salt is expected to be hex-encoded; it should be random and at least 8
     * bytes in length. Also applies a random 16-byte initialization vector to ensure each
     * encrypted message will be unique. Requires Java 6. NOTE: This mode is not
     * <a href="https://en.wikipedia.org/wiki/Authenticated_encryption">authenticated</a>
     * and does not provide any guarantees about the authenticity of the data. For a more
     * secure alternative, users should prefer
     * {@link #stronger(CharSequence, CharSequence)}.
     * @param password the password used to generate the encryptor's secret key; should
     * not be shared
     * @param salt a hex-encoded, random, site-global salt value to use to generate the
     * key
     *
     * @see Encryptors#stronger(CharSequence, CharSequence)
     */
    public static BytesEncryptor standard(CharSequence password, CharSequence salt) {
        return new AesBytesEncryptor(password.toString(), salt, KeyGenerators.secureRandom(16));
    }

以下のJavaDocによると、、、

https://spring.pleiades.io/spring-security/site/docs/current/api/org/springframework/security/crypto/encrypt/AesBytesEncryptor.html

new AesBytesEncryptorの第三引数の KeyGenerators.secureRandom(16) がiv

確かに乱数

では、復号化にも同じ値のivがいるのかなと思ったらソース見たら以下のように暗号化後のテキストから取得しているようなので大丈夫そうでした。

    @Override
    public byte[] decrypt(byte[] encryptedBytes) {
        synchronized (this.decryptor) {
            byte[] iv = iv(encryptedBytes);
            CipherUtils.initCipher(this.decryptor, Cipher.DECRYPT_MODE, this.secretKey, this.alg.getParameterSpec(iv));
            return CipherUtils.doFinal(this.decryptor,
                    (this.ivGenerator != NULL_IV_GENERATOR) ? encrypted(encryptedBytes, iv.length) : encryptedBytes);
        }
    }

    private byte[] iv(byte[] encrypted) {
        return (this.ivGenerator != NULL_IV_GENERATOR)
                ? EncodingUtils.subArray(encrypted, 0, this.ivGenerator.getKeyLength())
                : NULL_IV_GENERATOR.generateKey();
    }

まとめ

ということで改めて復習です。

Secret:
Secretは一般的にユーザーが選択する文字列で、秘密情報を保護するために使用されます。
Secretベースのセキュリティでは、ユーザーのSecretから導かれた鍵を生成します。このとき、パスワードを安全に保管し、強力な鍵導出関数(PBKDF2、bcrypt、Scryptなど)を使用することが重要です。

Salt:
SaltはSecretベースのセキュリティで使用され、Secretに追加されるランダムなデータです。
Saltはユーザーごとに異なり、同じSecretを持つユーザーのハッシュ値を異なるものにします。これにより、レインボーテーブル攻撃から保護されます。

初期化ベクトル (iv):
ivは、同じ鍵を使用して同じ平文データを複数回暗号化するときに異なる暗号文を生成します。
ivはランダムな値で、セッションごとに生成される。

Javaコーディング規約・実装注意事項整理

Javaにおけるコーディング規約・実装注意事項整理

一般的なJavaのコーディング規約はよくGoogleとかにまとめられているのですが、いざ実際現場に適用すると多すぎて担当者が理解しきれないので、最低限を整理してみました。

観点として,全て共通する一般的な観点とクラス設計,エラー処理,マルチスレッド,性能と分けています。

参考書籍

こちらの本が良い本だったので影響を受けて自分でもまとめようと思いまとめました。

良いコード/悪いコードで学ぶ設計入門―保守しやすい 成長し続けるコードの書き方

一般的観点

  • メソッドやクラスの役割や責務を明確にし、シンプルな設計を心掛けること
  • インデントやスペース、命名規則などのコーディング規約に従い、一貫性のあるコードを書くこと
  • マジックナンバー(直接的な数値)を使わず、意味のある定数や列挙型を使用すること
  • メソッドやクラスの長さを適切に制御し、読みやすさを向上させること
  • 分岐処理では条件分岐を漏らさず記載し、必ずElse節を書くこと
  • 固定値はシステム設定の外部ファイルに定義し、リファクタリングや設定変更が容易にできるようにすること
  • データベースアクセスやネットワーク通信などの外部リソースにアクセスする際は、適切なエラーハンドリングを行い、リトライやロールバックなどのリカバリー処理を実装すること

クラス設計観点

  • メソッドの入力引数や戻り値の型には具体的なクラスやインターフェースを使用し、できる限り抽象化すること
  • 外部からのインプット引数/戻り値はnullである可能性を考慮し、適切なnullチェックを行うこと
  • 不変な変数には極力final修飾子を付け、再代入を防ぐこと

エラー処理観点

  • Catchに指定するExceptionは上位クラスのExceptionにまとめないこと
  • Catchした例外は必ずログに出力し、上位にThrowする際はCatchした例外を保持してThrowすること

マルチスレッド観点

  • マルチスレッド環境での競合状態を避けるために、適切な同期やロックを使用すること
  • 変数のスコープを意識して使用すること(サーブレット定義の変数はシングルトンとなる)
  • 使用するJavaライブラリの処理がスレッドセーフかどうか意識して使うこと(SimpleDateFormatなど)
  • マルチスレッド対応のクラス(ConcurrentHashMapやThreadLocalなど)を過信せず正しく使用すること

性能観点

  • リソースの解放漏れを避けるため、try-with-resources文を使用してリソースの自動クローズを行うこと
  • 文字列の連結や変更が頻繁に行われる場合は、StringBuilderやStringBufferを使用して効率的な文字列操作を行うこと
  • 大規模なループ処理の場合には、パフォーマンスを意識して最適化すること(無駄な処理や重複した操作の排除)
  • 再帰呼び出しを行う場合は、スタックオーバーフローのリスクに対処するために適切な終了条件を設定すること

まとめ

これら全てを理解して実装していくのは結構大変ですよね。
丸暗記ではなく,ダメな背景を理解して定期的に見直し,体の一部にしていきたいと思います。