環境構築で挫折しない!ブラウザで動く「Play with Docker」でDocker入門

Play with Dockerというサービスは知っていますか?私は恥ずかしながら先日知りました🥲

www.docker.com

初心者向けにDockerをテーマで数回ぐらいのハンズオンをしようと考えていたのですが、参加者のPCのにDockerをインストールしてもらうのが結構ハードル高いんですよね。Play with Dockerを使えば、ブラウザだけでDockerを試せるので、非常に便利だなと感じました。「Dockerに興味はあるけど、いきなり自分のPCに入れるのはちょっと...」という方にピッタリではないかと思います。

今回はどれくらいのことができるのかなと試してみたことについて、書いてみました。

Play with Dockerってなに?

Play with Docker(以下PWDは、ブラウザ上でDockerを試せる無料の学習環境となります。Docker公式が提供しているサービスで、面倒なインストール作業は一切不要。時間限定とはなりますが、ブラウザさえあれば、すぐにDockerを体験できます。

インフラ周りはDocker-in-Docker(DIND)という技術で動作していて、複数のノード(仮想マシン的なもの)を作ることもで可能です。Dockerの基本を学ぶには最適な環境と言えるでしょう。

⚠️ 使う前に知っておいてほしいこと

PWDはあくまで学習用のサービスです。以下の制限があるので頭に入れておいてください。

  • セッションは約2時間で自動削除される(以前は4時間だったらしい)
  • 作れるインスタンス数に上限がある(だいたい5つくらい)
  • 大事なデータは絶対に保存しない

あくまで「試しに触ってみる」「学習する」という用途で使いましょう。本番環境のつもりで使っちゃダメです💦

続きを読む

【初心者向け】Pythonリンター&フォーマッタ、Ruffの始め方|インストールからVSCode設定まで

Pythonでコードを書いていると、「このインデントおかしくない?」 「importの順番これでいいんだっけ?」みたいな細かいところが気になります。 最近は、エディタの機能でほぼなんとかなるのですが、たまにコピー&ペーストをVimなどに行うとズレてひどい目に合うこともあります。

そんなときに活躍するのがリンター(コードのチェックツール)フォーマッター(コードの整形ツール)です。 従来はflake8でチェックしてblackで整形してisortでimportを並べ替えて……と、複数のツールを組み合わせる必要があり正直ちょっと面倒でした🥲

そこで、Ruffという、これらの機能を1つのツールに統合した、Rust製の高速リンター&フォーマッターとなります。しかも圧倒的に速い。従来のツールと比べて10〜100倍速いと言われています。

この記事では、Ruffをグローバルインストールして、どのプロジェクトでもすぐに使えるようにしたいと思います。

Ruffとは

RuffAstral社が開発しているPython用のリンター&フォーマッターです。同社はuvというパッケージマネージャーも開発しており、Python界隈では注目度の高い企業です。

astral.sh

astral.sh

Ruffの主な特徴をまとめると以下のようになります。

  • Rust製で超高速(従来ツールの10〜100倍速)
  • リンターとフォーマッターを1つのツールで提供
  • flake8isortpyupgradeなど多くのルールに対応
  • 設定はpyproject.tomlで一元管理可能

先程は速度10倍から100倍と言いましたが、実際に使ってみると体感明らかに速いことがわかるでしょう。大きなプロジェクトでも一瞬で終わるので、ストレスがありません。

Ruffのインストール方法

Ruffはプロジェクトごとにインストールすることもできますが、リンターやフォーマッターは複数のプロジェクトで横断的に使うことが多いので、グローバルインストールがおすすめです。

uvを使う場合(おすすめ)

最近は、uvを使っている方も多いと思います。uvにはツールをグローバルにインストールする機能があるので、これを使うのが手軽ではないでしょうか。

$ uv tool install ruff

これだけでruffコマンドがPATHに追加され、どこからでも使えるようになります。

その他の方法

uvを使っていない場合は、以下の方法でもインストールできます。

# pipxを使う場合
$ pipx install ruff

# スタンドアロンインストーラー(macOS/Linux)
$ curl -LsSf https://astral.sh/ruff/install.sh | sh

基本的な使い方

インストールが完了すれば、すぐに使い始められます。

# リンター(コードのチェック)
$ ruff check .

# フォーマッター(コードの整形)
$ ruff format .

# リンターで自動修正可能なものを修正
$ ruff check --fix .

ruff check .コマンドを実行すると、カレントディレクトリ以下のPythonファイルをチェックして、問題があれば表示してくれます。ruff format .コマンドはコードを自動的に整形してくれます。

問題のあるソースコードをチェックするといかのようなメッセージが表示されます。

コマンドが見つからない場合

uv tool installでインストールしたのにコマンドが見つからない場合は、PATHが通っていない可能性があります。シェルの設定ファイル(.bashrc.zshrc)に以下を追加してください。

export PATH="$HOME/.local/bin:$PATH"

追加したら、ターミナルを再起動するかsource ~/.bashrcsource ~/.zshrcなどで設定を反映させてください。

(おまけ)uvのツール管理コマンド

uvでインストールを行った場合は、以下のコマンドで管理できます。

# インストール済みツール一覧
$ uv tool list

# アップグレード
$ uv tool upgrade ruff

# アンインストール
$ uv tool uninstall ruff

一時的に試したい場合

「まだインストールするか決めてないけど、ちょっと試してみたい」という場合はuvxコマンドが便利です。

$ uvx ruff check .

uvxは一時的な環境でツールを実行してくれるので、試しに使ってみたいときに重宝します。

pyproject.tomlでの設定

プロジェクトのルートにpyproject.tomlを置くことで、Ruffの挙動をカスタマイズが可能です(設定がない場合はデフォルト値が使われます)。

[tool.ruff]
line-length = 120

[tool.ruff.lint]
select = [
    "E",  # pycodestyle error
    "F",  # Pyflakes
    "I",  # isort
    "W",  # pycodestyle warning
]

[tool.ruff.format]
quote-style = "double"

上記の設定の概要は以下の通り

セクション 設定項目 説明
[tool.ruff] line-length 1行の最大文字数。デフォルトは88文字ですが、120文字程度に広げておくと改行が減って読みやすくなります
[tool.ruff.lint] select 有効にするリンタールールを指定します。Eはpycodestyleのエラー、FはPyflakes、Iはisort(import順)、Wはpycodestyleの警告に対応しています
[tool.ruff.format] quote-style 文字列のクォートスタイルを指定します。"double"でダブルクォート、"single"でシングルクォートに統一されます

selectで指定できるルールは他にも多数あります。たとえば"B"(flake8-bugbear)や"UP"(pyupgrade)などを追加すると、より厳密なチェックが可能です。 また、line-lengthはデフォルトだと88文字ですが、個人的には120文字くらいにしておくといい感じでしょうか😊

VisualStudio Codeとの連携

VSCodeを使っている場合は、Ruff公式の拡張機能をインストールすると、エディタ上でリアルタイムにチェックに動作可能です。さらに保存時に自動フォーマットも可能です。

VSCode拡張機能で検索を行うと以下が見つかります。

拡張機能をインストールしたら、.vscode/settings.jsonに以下の設定を追加します。

{
    "[python]": {
        "editor.formatOnSave": true,
        "editor.defaultFormatter": "charliermarsh.ruff",
        "editor.codeActionsOnSave": {
            "source.fixAll": "explicit",
            "source.organizeImports": "explicit"
        }
    }
}```

この設定を入れておけば、ファイルを保存するたびに自動でフォーマットされるのでコーディングに集中できます。

# おわりに

今回は**Ruff**をグローバルインストール方法を書いてみました。**uv tool install ruff**を実行するだけで、どのプロジェクトでも**ruff**コマンドが使えるようになります。
設定ファイルを使わなくても十分使えますし、必要に応じて`pyproject.toml`でカスタマイズもできます。

個人的には、**Ruff**の導入で一番嬉しいのは「速さ」ですね。従来のツールだとチェックに数秒かかることもありましたが、**Ruff**なら大規模なプロジェクトでも一瞬です🤩

AIエージェントの2025年を振り返る|MCP・A2Aとは何かを初心者向けにやさしく解説してみた

この画像はエントリの内容ををNano Banana Proのインフォグラフィックスとなります

なぜ今さら"規格"の話が大事なのか

2025年はAIエージェントの年になるって予想がいろいろ出ていましたよね。2026年1月現在の振り返ってみると、少なくともAIエージェントの年になり得る条件はだいぶ整ってきたという印象でしょうか。

その核にあるのが エージェント周辺の標準化(プロトコル整備) です。

  • MCP … エージェントが 外部ツール/データ にアクセスするための標準化
  • A2A … エージェント同士が 安全に協調 するための標準化

この2つによって、チャットで便利から一段進んで、業務としての"自動化" を設計しやすくなります。ここが私の技術的な興味で一番ワクワクするポイントですね😊

続きを読む

AI活用の第一歩|ファインチューニング・LoRA・RAGの違いを説明できるようにする

ファインチューニング / LoRA / RAG は何が違うの?

AIや大規模言語モデルLLM)の話をしていると、次のような質問がありますよね。

  • ファインチューニング(Fine-Tuning
  • LoRA
  • RAG

最近AIを勉強はじめた方と話をしていると、この3つの違いについて質問されることが多いのです。ただ、違いを明確にして説明してと言われると、自分は結構困ります🥲(そんな即応的な回答は私には無理)

結局、どの機能もモデルを賢くする方法になるのですが、実は「変えている場所」が違います。 今回はこの3つを「何を変える技術なのか」という視点で整理してみました。


まず結論から

簡単にいうと、次のような違いがあります。

方法 何を変える?
ファインチューニング モデルそのもの
LoRA モデルの考え方・振る舞い
RAG モデルが参照する情報

「どれが機能上か」という考えではなく、変える部分の役割が違うと考えるのが良さそうです。

続きを読む

【開発者目線】2025年のIBM AI動向振り返り:エージェントの時代が来た感じがする

これまで、OpenAI、Anthropic、Googleといったメジャーどころの生成AIモデルやサービスの動向を追ってきましたが、IBM関連の技術も追っているため、2025年のIBMのAI戦略と技術動向についてもまとめてみようと思います。

IBMのAI関連サービスは「watsonx」というブランド名で統一されていますが、如何せん日本語の情報が少なく、エンジニア視点での解説記事もあまり見かけないため、私自身の理解を深める意味も込めて整理してみた次第です。

はじめに

2025年のIBMは、生成AIの活用フェーズが「チャット」から「エージェント(実行)」へ明確にシフトした1年になっていたように感じます。

私は現在、大学院ではAIの研究を中心に開発をしていますが、その他でも個人でも開発をしています。そしてIBM Championとしてコミュニティ活動をしています。今年はどうなるかわかりませんけどね🤔そうした多角的な視点でIBMの今年の動きを見てみると、企業としては「LLM単体の性能競争」から「AIエージェントを組み立て、動かすための道具箱(ツールチェーン)の整備」に方向を変えたといえるでしょう。

この記事では、2025年にリリースされた主要な機能やサービスについて、ビジネス的な話は抜きにして、我々エンジニアにとって何が便利になったのかという視点でまとめています。

合っているかは自分の英語能力に依存しますので、もし間違いがあれば教えてください🙇

続きを読む