ようこそ!🌟

HNESTブログへようこそ!Hugo × PaperMod × GitHub Pagesで構築したモダンなブログです。ブログ構築・運営、Linuxサーバー設定、Pythonアプリ開発、YouTubeまとめ、おもちゃ・コンビニ新商品、子育て、政治など、暮らしと技術をつなぐ情報を丁寧にお届けします。
Next.js App Router入門|特徴・構造・Pages Routerとの違い・最小実装・データ取得まで

【初心者向け・完全ガイド】Next.js App Router入門|特徴・構造・Pages Routerとの違い・最小実装・データ取得まで

🚀 はじめに:この記事でできること App Routerの基本概念から最小実装、データ取得、Server Actions/Route Handlersまでを「操作→目的→結果→注意/補足」の順で習得します。ゴールは、app/ディレクトリで最小アプリを動かし、RSCのデータ取得と更新を体験できる状態です。 🧭 前提:対応バージョンと用語の整理 App RouterはNext.js 13.4以降で本格化したルーティングです。Pages専用API(getServerSideProps等)はApp Routerでは非推奨で、RSC(React Server Components)とファイル規約が基本になります。 操作 プロジェクトのNext.jsバージョンを確認し、app/ディレクトリが利用可能かを確認する 用語を把握:layout.tsx(レイアウト)/ page.tsx(ルート)/ loading.tsx / error.tsx / route.ts(API)/ RSC / Server Actions 目的 以降の手順で使う概念・ファイル規約の前提をそろえ、混乱を防ぐ 結果(この時点でできること) App Routerの章立てと各ファイル役割を前提知識として共有できる 注意 Pages RouterのAPI(getServerSideProps等)はApp Routerでは使わない クライアントでのみ動くAPI(window等)はClient Componentに分離("use client"を付与) 🧩 App Routerとは?(概要) App Routerはフォルダ=URL、page.tsx=公開ルート、layout.tsx=共通UIという規約で、RSC前提の「サーバ優先(Server First)」な構成を提供します。 操作 役割を把握: app/layout.tsx:アプリの共通レイアウト app/page.tsx:トップページ app/**/loading.tsx:セグメント単位のローディングUI app/**/error.tsx:セグメント単位のエラーUI app/api/**/route.ts:HTTPメソッドごとのAPIハンドラ 目的 ファイル規約とRSCの前提を結び付けて理解する 結果(この時点でできること) 「どのファイルが何を担うか」を説明できる 補足 レイアウトはナビゲーションでも状態が保持されやすい設計(ページだけ差し替え)です。 🗺️ 図解:App Routerのディレクトリと流れ 最小構成の関係性を図で理解します。 操作 以下の図/ツリーで、URLとファイルの対応を確認する 目的 セグメント(フォルダ)=URLという対応付けを視覚的に理解する 結果(この時点でできること) どの階層にpage.tsx等を置けばURLが有効化されるか判断できる 補足 layout.tsxは上位レイアウトを継承しながら子ページを差し替えます。 ...

Next.js 入門(App Router / Server Actions / Turbopack)

【初心者向け・最短30分】Next.js 入門(App Router / Server Actions / Turbopack):実例コードとチェックリストで安全に始める

🚀 はじめに このガイドは、最新の Next.js(App Router) を最短ルートで体験するための入門書です。プロジェクト作成 → 最小ページ → 画像最適化 → Server Actions → 環境変数の順に、再現性高く学べます。 この記事でできること App Router で新規プロジェクトを作成し、ローカル起動できる Server Components / Client Components の使い分けと Server Actions を使った最小フォーム処理が作れる 画像最適化と環境変数の基本が理解できる(チェックリストつき) こんな人におすすめ 最短で Next.js を試したい初心者〜中級者 フロント〜バックを一体で動かす体験をしたい人(API設計の前に“動く全体像”を掴みたい) 前提(迷いやすいポイントの先出し) Node.js は LTS の最新(18 以上が目安、20+ 推奨) を利用 本記事は App Router 前提(app/ ディレクトリ) コードは TypeScript 想定(*.tsx) 💡 概要:Next.js の要点(App Router で何が変わる?) App Router は React Server Components を活用し、サーバ側での描画・データ取得が標準で簡素化。ファイルベースルーティング、ネストレイアウト、ストリーミング、部分的再生成(ISR) によって、実務で必要な機能が揃います。 RSC(Server Components):デフォルトはサーバ実行。機密値や DB アクセスを安全に扱いやすい Client Components:UI操作やブラウザ API が必要な箇所に限定して use client を付与 Server Actions:フォーム送信やデータ更新を API ルートなし で実装可能 Turbopack:開発サーバが高速。互換性課題がある場合は webpack に切替可能 🗺️ 図解:Next.js の全体像(初心者向け) Next.js でのページ表示は、サーバ側でのデータ取得と描画を軸に、クライアント側の体験を必要最小限で足す「Server First」な設計です。 下図は、RSC/SSR/SSG・ルーティング・最適化機能の関係を簡略化したものです。 ...

Hugo サイトを Cloudflare Pages で公開するメリット

【初心者向け】Hugo + PaperMod を Cloudflare Pages で公開するメリットと始め方

🚀 はじめに:この記事でできること Hugo と PaperMod で作ったブログを、Cloudflare Pages を使って高速・無料で公開する方法を、初心者向けにわかりやすくまとめたガイドです。 この記事を読むと、次のことが理解できます。 Hugo + PaperMod + Cloudflare Pages の相性が良い理由 ローカル → GitHub → Cloudflare Pages の公開までの全体像 初心者がつまずきやすいポイントと回避方法 🧭 前提:必要な環境と対象読者 Cloudflare Pages で公開する前に、最低限そろえておきたい環境を整理します。 必要な環境 Hugo Extended v0.153.1 がローカルにインストール済み ※PaperMod v8.0 は SCSS を使うため Extended 版が必須 GitHub アカウント(push / pull ができる状態) Cloudflare アカウント(無料プランでOK) 想定する読者 コマンドは最低限なら使える GUI ベースの設定があると安心 「とにかく簡単に静的サイトを公開したい」人 💡 概要:Hugo + PaperMod + Cloudflare Pages の相性が良い理由 Hugo(静的サイトジェネレーター) Go 製でビルドが高速 Markdown で記事を書ける PaperMod などテーマが豊富 PaperMod(Hugo テーマ) 軽量・高速 ブログ向けの機能が充実 SCSS を使うため Hugo Extended が必須 Cloudflare Pages(ホスティング) 無料で使える グローバル CDN による高速配信 GitHub 連携で自動デプロイ HTTPS 証明書も自動発行 組み合わせるメリット git push するだけで自動デプロイ CDN による高速配信 無料枠が広く個人ブログに最適 Hugo のビルド設定が簡単 📱 Step 1:ローカルに Hugo + PaperMod 環境を用意する 1. Hugo Extended をインストール Windowsの場合 1. Hugo Extended の ZIP をダウンロード Hugo の公式 GitHub リリースページへアクセスします。 👉 https://github.com/gohugoio/hugo/releases (github.com) 2. ダウンロードするファイルを間違えないこと Windows 用の Extended 版は次のような名前です。 hugo_extended_0.153.1_windows-amd64.zip ※ `extended` と `windows-amd64` が入っているものを選ぶのがポイント。 3. ZIP を展開し、任意のフォルダに置く 例: `C:\Tools\Hugo\` など、わかりやすい場所に `hugo.exe` を置きます。 4. PATH を通す 1. Windows の検索で「環境変数」と入力 2. 「環境変数の編集」を開く 3. 「Path」を選択 →「編集」 4. `C:\Tools\Hugo\` を追加 5. OK を押して閉じる macの場合 brew install hugo インストール後、次で Extended 版か確認します。 ...

AndroidのTermuxでミニサーバー構築

【初心者向け・完全版】AndroidのTermuxでミニサーバー構築:nginx+Python(Flask/Gunicorn)と逆プロキシ

🚀 はじめに AndroidスマホにTermuxを入れるだけで、nginx(静的配信)とPython(動的アプリ)を組み合わせたミニサーバーを構築できます。この記事は、インストールから逆プロキシでFlaskを公開、つまずき対策までを一気通貫で解説します。 この記事で達成できること スマホ上でnginxを起動し、静的ファイルを配信 **Python(Flask+Gunicorn)**でWebアプリを動かす nginxの逆プロキシでPythonアプリを外部公開 よくあるエラー(ポート、スリープ、権限)を回避 ※ Playストア版Termuxは更新停止。F-Droid版のTermuxが安全です。 🧭 前提と準備 本番前に、インストール元・権限・ポート・IPなど、初心者が混乱しやすい前提を整えます。 1-1. Termuxのインストール(F-Droid版推奨) 操作 F-Droidアプリをインストール → Termuxで検索 → 最新版をインストール 目的 保守されている配布元からTermuxを導入し、最新パッケージを利用可能にする。 結果(この時点でできること) 以降のpkgによる導入と更新が安定して行える。 注意/補足 Play版Termuxは古いため非推奨。F-Droid版を使用。 1-2. 初期設定(更新・権限・必須ツール) 操作 # パッケージ更新 pkg update && pkg upgrade -y # ストレージアクセス(/sdcard を使えるように) termux-setup-storage # よく使うツール pkg install -y git curl vim tmux # サーバー関連 pkg install -y nginx python # (必要なら)サービス管理とSSH pkg install -y termux-services openssh 目的 基本ツール・Webサーバー・Python環境を揃え、ストレージ権限を付与する。 結果(この時点でできること) nginxとpythonが利用可能、/sdcardへの読み書きも許可済み。 注意/補足 termux-setup-storageで権限付与。定期的にpkg upgradeで更新。 1-3. 使うポートとIPを確認 操作 ...

AndroidのTermuxでGit/GitHubを始める開発フロー

【初心者向け・完全版】AndroidのTermuxでGit/GitHubを始める開発フロー|SSH鍵・ghログイン・GitHub Pagesまで

🚀 はじめに:この記事でできること Android端末上のTermux環境で、Git/GitHubを安全に使うための実践フローを、SSH鍵作成→GitHub登録→ghログイン→clone/commit/pushまで手順化します。 さらに、Hugo(PaperMod) の記事を GitHub Actions → GitHub Pages で自動公開する最小構成も併せて整えます。 補足 本記事は 初心者が混乱しやすい前提(Termux独自パッケージ、共有ストレージ権限、拡張Hugoの有無)を先に明示し、各Stepを 操作 → 目的 → 結果 → 注意/補足 の順で進めます。 🧭 前提:環境と基本方針 Termuxは通常のLinuxと異なる点があり、公式パッケージ(pkg)優先・外部配布物を直接入れないことが安全運用の鍵です。共有ストレージ権限やパスの違いも混乱の元になるため、最初に整理します。 操作 Termuxアプリをインストールし、起動 以降のセットアップは pkg を用いる(aptは可能だが推奨はpkg) 目的 Termux環境を最新化し、Git/SSH/gh を公式ビルドで導入して安定運用する 前提 Android端末でTermuxが正常動作(ネット接続可) ファイル操作は $HOME(例:~/)を基本に行う 結果(この時点でできること) 後続のインストールや鍵作成が 権限・互換性の問題を回避 しながら進められる 注意 Termuxで外部レポジトリや他ディストリのdebを直接導入すると破損の原因になります。必ず Termux公式のパッケージ を利用しましょう。 📱 Step 1:Termuxの初期セットアップ(更新・権限・導入) Termuxを最新化し、共有ストレージ権限を付与、必要なパッケージを導入します。 操作(目的/前提を読んでから実行) 目的 パッケージを最新化し、ストレージ操作とGit/GitHubに必要なコマンド群を整える 前提 Termuxが起動可能 インターネット接続が安定している # パッケージの最新化 pkg update && pkg upgrade -y # 共有ストレージへのアクセス(初回のみ) termux-setup-storage ls ~/storage/shared # 必要パッケージの導入(Git / OpenSSH / GitHub CLI) pkg install git openssh gh -y # (任意)クリップボード操作を使う場合 pkg install termux-api -y 結果(この時点でできること) ...

TermuxとPythonの実践ガイド

【初心者向け・実践完全版】Termux+Pythonでできること10選|スマホだけで始める開発・自動化ガイド

🚀 はじめに:この記事でできること Termux は、Android 上に Linuxライクなコマンドライン環境 を用意できる強力なアプリです。 この記事では、Termux に Python を導入し、「スマホだけでできる10の実践例」 を通して、開発・自動化の第一歩を具体的な手順で解説します。 この記事を読むとできること Termux を安全にインストールし、Python を正しく動かせる スマホだけで Linux コマンド・Python スクリプト・pip を使いこなせる Webスクレイピング・APIアクセス・自動バックアップ・通知・簡易Webサーバーなど 10の実用パターン を理解できる 想定している読者 スマホだけでプログラミングを始めたい人 PCがなくても Python を学びたい人 Termux を入れたけれど、「結局何ができるの?」から抜け出したい人 エラーや設定でつまずきたくない初心者 補足 すべての例は「実際に動くこと」を前提にしています。環境の違いで動かない可能性がある箇所は、注意点や回避策もあわせて紹介します。 💡 Termux+Pythonの概要と前提 Termux で何ができるかを整理しつつ、この記事で前提とする環境を明確にします。 操作 Android に Termux をインストールし、Linuxコマンドと Python を使う パッケージ管理コマンド pkg を使って必要なツールを導入する 目的 「Termux+Python」という組み合わせのイメージを掴み、何ができる環境なのか を理解する 後続の手順で混乱しないよう、前提条件をそろえる 前提 Android スマホを使用している インターネット接続がある コマンドラインにほとんど触れたことがない初心者も想定 説明 Termux には次のような特徴があります。 Linuxコマンド がそのまま使える パッケージ管理(pkg)で Python や Git が簡単にインストールできる スマホだけで開発環境が完結する Python を組み合わせることで、次のようなことが可能です。 ...

VPNサーバーについてやさしく説明

【初心者向け・完全版】VPNサーバーとは?仕組み・用途・自宅構築の基本をやさしく解説

🚀 はじめに:この記事でできること VPNサーバーの基本から、自宅やクラウドでの構築イメージ、WireGuard を使った Ubuntu での設定の流れまでを、初心者向けに一通りつかめるように解説します。 この記事を読むと次のことができるようになります: VPNサーバーの仕組みと役割が理解できる 自宅やクラウドに VPN サーバーを構築するイメージがつかめる Linux(Ubuntu)で WireGuard を動かすための基本コマンドが分かる 初心者がつまずきやすいポイントや注意点を事前に押さえられる こんな人におすすめです: ネットワーク初心者 Python や Linux に興味があり、環境構築を学びたい 自宅サーバーやクラウドで何かサービスを動かしてみたい 安全にリモートアクセスできるようになりたい 専門用語はできるだけ噛み砕きつつ、最低限押さえておきたいポイントは漏らさず説明します。 🧭 前提:この記事で扱う環境と想定読者 この記事では、代表的な構成として Ubuntu 上の WireGuard を使った VPN サーバー を例に解説します。 前提となる環境・知識 Ubuntu 20.04 以降(または近い Debian 系ディストリビューション) sudo 権限を持つユーザーアカウント 公開ポート(UDP 51820 など)を 1 つ開けられる環境(自宅ルーター or クラウドのセキュリティグループ) cd / ls / nano / sudo など、基本的な Linux コマンドの操作経験が少しあること この記事でカバーしないもの(概要のみ) 企業向けの大規模 VPN 設計 IPsec / OpenVPN など、WireGuard 以外の実装の詳細設定 高度なセキュリティ運用(監査ログ収集、ゼロトラスト設計など) 補足 コマンドやパッケージ名、設定ファイルの場所は、ディストリビューションやバージョンによって将来的に変わる可能性があります。詳細は後半の「参考リンク」にある公式ドキュメントも合わせて確認してください。 ...

GitHub Actions ホストランナーをWireGuard VPN経由で国内IPにする方法

【初心者向け・完全版】GitHub Actions ホストランナーを自前WireGuard VPN経由で国内IPにする方法

🚀 はじめに:この記事でできること GitHub Actions ホストランナー(GitHub管理ランナー) 上でジョブを実行しながら、自前のWireGuard VPNサーバー(国内)を出口としてインターネットへ接続する方法を解説します。 root権限・一時実行環境・Secrets制約といったActions特有の前提を踏まえ、操作 → 目的 → 結果 → 注意/補足 の流れで安全に構築します。 想定ユースケース 国内IPからのみアクセス可能なAPI/サイトの検証 クローリング・E2Eテストでの地域制約回避(合法・規約順守前提) CIからの外部通信を自前ネットワークに集約 🧭 前提:構成上の制約と選択肢 ホストランナーは短命・共有・一時的という前提があります。ここを理解することが成功の鍵です。 操作 ランナーの権限制約と接続方式を確認する 目的 「できること/できないこと」を把握し、ハマりどころを回避する 前提 GitHub Actions ホストランナー(ubuntu-latest 等) 既に 国内に設置したWireGuard VPNサーバー が稼働している sudo が使える(GitHubホストランナーでは可) 外向き UDP 51820 がランナーから到達可能(通常は可) 結果(この時点でできること) ホストランナーでも ユーザースペースでVPNを張れる ことを理解できる 注意(重要) ホストランナーは systemd常駐や自動起動は不可。 VPNは ジョブ内で起動→終了 する設計が必須。 複数ジョブ/マトリクスでは同時起動不可(競合防止)。 🧩 準備:Secrets と VPN クライアント設計 この章では、ホストランナーに状態を残さない ための安全な設計を行います。 1-1. GitHub Actions Secrets の準備 操作 VPN接続に必要な情報を Secrets に登録する 目的 設定値・鍵をリポジトリに残さず、安全に参照する 前提 ...

WireGuardで超シンプルVPNサーバー構築

【初心者向け・完全版】WireGuardで超シンプルVPNサーバー構築|Ubuntu/Raspberry Pi/クラウドVPS対応

🚀 はじめに:この記事でできること WireGuardベースのVPNサーバーを最短手順で構築し、ノートPC/スマホから自宅ネットワークへ安全に接続できる状態を作ります。公共Wi-Fi利用時もクラウドVPS経由で通信を保護できるように、操作→目的→結果→注意/補足の順で迷わず進められる構成です。 対象読者 技術初心者〜中級者(Linuxを触り始めた方を含む) 「エラーで詰まりたくない」「確実に動く手順が欲しい」方 自宅NAS、Raspberry Pi、Ubuntu/Debianサーバー、クラウドVPSを活用したい方 🧭 前提:環境・用語・成功の条件 この章では、以降の設定がスムーズに進むよう、環境差・用語・ネットワーク前提を整理します。 操作 対象OSと必要権限、ネットワーク要件を確認する 目的 以降の手順で「設定は正しいのに繋がらない」を防ぐ土台を作る 前提 対象OS:Ubuntu 22.04/24.04、Debian 12、Raspberry Pi OS(Bullseye/Bookworm) サーバー:自宅機 or クラウドVPS 管理者権限:sudo が使えること 自宅用はルーターで UDP 51820 をサーバーへポートフォワード可能 結果(この時点でできること) 自分の環境に必要な準備物(ポート開放、権限、OS対応)を把握できる 用語メモ Peer:VPNの参加者(サーバー/クライアント) AllowedIPs:VPN経由で通す宛先プレフィックス(ルーティングの要) Endpoint:接続先のグローバルIP/ドメインとポート(例:vpn.example.com:51820) 注意 CGNAT(一部ISP)でグローバルIPが割り当てられないと自宅側ポートフォワード不可。対策:クラウドVPS経由で構築、または管理型WireGuard(例:Tailscale等)を検討。 🧩 準備:インストールとベース設定 この章では、WireGuardと周辺設定(IPフォワーディング・UFW)を安全に適用します。 1-1. パッケージのインストール(Ubuntu/Debian) 操作 パッケージ更新と WireGuard / UFW をインストールする 目的 WireGuardのコマンド群(wg/wg-quick)とファイアウォールを導入 前提 apt が利用可能、ネットワーク接続がある # パッケージ更新とWireGuard/UFWのインストール sudo apt update sudo apt install -y wireguard wireguard-tools ufw 結果(この時点でできること) wg/wg-quick が使えるようになり、UFWでポート制御できる 補足 wireguard-tools に wg / wg-quick が含まれます。 ...

AndroidのTermuxでUbuntuを安全に構築する方法(proot-distro)

【初心者向け・完全版】Termux+proot-distroでAndroidにUbuntu環境を構築する方法|Root不要・安全・Python開発まで

🚀 はじめに:この記事でできること Android端末(Root不要)で Termux+proot-distro を使い、Ubuntu環境を構築します。インストール→ログイン→パッケージ管理→Python開発→共有ストレージ連携までを、操作→目的→結果(この時点でできること)→注意/補足の順で丁寧に解説します。初心者が混乱しやすい前提(擬似root・systemd不可・/sdcardの扱い)も最初に整理します。 用語メモ TermuxはAndroid向けのLinux端末アプリ。PRootはユーザー空間でのchroot相当を実現、proot-distroはその管理ラッパー(配布rootfsの取得・展開・ログインを簡素化)。 🧭 前提:仕様と制限の理解(混乱しやすいポイント) 操作 以降の手順はRoot不要/スマホのみで進めます。 目的 擬似rootと本物のrootの違い、systemd不可、/sdcard連携などの制約を把握してから構築する。 結果(この時点でできること) 「動かないもの」を事前に理解し、失敗切り分けが容易になる。 注意 PRootは本物のrootではないため、systemd依存サービス・カーネル機能・Snapの多くは動作しません。サービス常駐はtmux/screen等で代替。 早見表 できる:CLI学習/Python開発/apt管理/共有ストレージ(/sdcard)連携 難しい:本格的なデスクトップ常用、systemd必須のサービス、カーネルモジュール 📱 Step 1:Termuxの準備(権限付与と更新) 目的:Termux側でパッケージ更新と共有ストレージ権限を設定し、後続のインストールとデータ連携を安定化する。 前提:Google Play版ではなく、互換性のあるTermux配布(F-Droid等)を利用している。 # パッケージリスト更新 pkg update -y # 共有ストレージ(/sdcard)へのアクセス許可 termux-setup-storage # → 権限ダイアログが出たら「許可」 結果(この時点でできること):Termuxから~/storage//sdcardが参照でき、後でUbuntu内からもデータを扱える。 注意:権限不調時は一度許可を取り消して再付与。~/storage/sharedが内部共有ストレージに対応。 🧩 Step 2:proot-distroの導入とディストロ確認 目的:proot-distroをインストールし、提供ディストリビューション(Ubuntu等)の一覧を把握する。 前提:Step 1が完了し、Termuxのネットワークが正常。 # proot-distroを導入 pkg install -y proot-distro # 提供ディストリビューション一覧 proot-distro list 結果(この時点でできること):Ubuntu(最小rootfs)の取得準備が整い、以降のinstall→loginが可能。 注意:提供バージョンはメンテナの方針で単一またはローリングの場合あり。細かな版指定は原則不可。 🏁 Step 3:Ubuntuのインストールとログイン 目的:最小rootfsをダウンロード・展開し、Ubuntu環境にログインできる状態にする。 前提:Termuxのストレージ準備・ネットワークが正常。 # Ubuntuの最小rootfsを取得・展開 proot-distro install ubuntu # ルートシェルでログイン(擬似root) proot-distro login ubuntu 結果(この時点でできること):Ubuntuシェルに入ってaptやファイル操作が可能。 注意:擬似rootであり、本物のrootが必要な操作(カーネル・systemd必須機能)は不可。 ...