広告です。クリックいただけると励みになります。

人気記事(昨日)

    2026年05月19日

    Erlangの言語的特徴

    igor-omilaev-W86NHngn0ik-unsplash.jpg

    質問

    Erlangの言語的特徴をまとめて


    すごいErlangゆかいに学ぼう! [ フレッド・ハバート ]

    価格:4180円
    (2026/5/4 10:59時点)
    感想(0件)

    実践プロパティベーステスト PropErとErlang/Elixirではじめよう [ Fred Hebert ]

    価格:4950円
    (2026/5/4 10:59時点)
    感想(0件)


    解答

    Erlangは「並行・分散・高可用」を最優先に設計された、かなり思想のはっきりした言語です。

    表面的な文法よりも、実行モデルと失敗の扱い方に特徴があります。


    全体像(ひとことで)

    • 軽量プロセスを大量に動かし、メッセージでつなぐ

    • 壊れる前提で設計し、壊れたら監視して再起動する


    1. 並行性モデル(Actorモデル)

    Erlangの中核です。

    • プロセス = 超軽量(数十万〜数百万作れる)

    • 共有メモリなし

    • メッセージパッシングのみで通信

    Pid ! Message.

    受信:

    receive    Pattern -> 処理end

    特徴:

    • ロック不要(データ競合が起きない)

    • 並行処理のバグが減る

    • スケールしやすい


    2. 不変データ(Immutable)

    • 変数は一度束縛したら再代入不可

    • 状態は「新しい値を作る」ことで表現

    X = 10.X = 20. % エラー

    → 副作用が少なく、並行処理と相性が良い


    3. パターンマッチ

    代入ではなく「構造に一致するか」を使う。

    {ok, Value} = Result.

    関数定義にも使える:

    f({ok, V}) -> V;f(error) -> 0.

    特徴:

    • 分岐が明確

    • エラーハンドリングが自然


    4. 関数型言語

    • 副作用を避ける

    • 関数が第一級オブジェクト

    • 再帰が基本(ループの代わり)

    sum([], Acc) -> Acc;sum([H|T], Acc) -> sum(T, Acc + H).

    5. プリエンプティブスケジューリング

    • VM(BEAM)がプロセスを管理

    • 自動でCPU時間を分配

    → 1つの処理が暴走しても全体が止まりにくい


    6. 分散システムが標準機能

    • ノード間通信が言語レベルでサポート

    rpc:call(Node, Module, Function, Args).

    特徴:

    • 別マシンのプロセスに透過的にメッセージ送信

    • クラスタリングが簡単


    7. フォールトトレランス(ここが最重要)

    Erlangの思想の核:

    エラーは防ぐのではなく、起きたら隔離して再起動する

    Let it crash

    • 無理に例外を握りつぶさない

    • プロセスを落とす

    監視(Supervision Tree)

    • 親プロセスが子を監視

    • 落ちたら自動再起動

    Supervisor ├ Worker1 ├ Worker2

    再起動戦略:

    • one_for_one

    • one_for_all など


    8. ホットコードスワップ

    • システムを止めずにコード更新可能

    特徴:

    • 高可用性システムで重要

    • 通信サービスなどで実績あり


    9. メッセージキューと非同期性

    • 各プロセスにメールボックス

    • 非同期通信が基本

    注意:

    • メッセージ順序は保証される(同一送信元→同一受信先)

    • ただし処理順は設計次第


    10. 型システム(動的+型記述)

    • 基本は動的型

    • Dialyzerで静的解析的なチェックが可能


    11. VM(BEAM)の存在

    Erlangは:

    • OSスレッドではなくVM上で動く

    • 軽量プロセス

    • GCもプロセス単位

    → 一部プロセスのGCが全体を止めない


    向いている領域

    • 通信システム(電話、チャット)

    • リアルタイム処理

    • 高可用性サーバ

    • 分散システム


    苦手な領域

    • 数値計算(HPC)

    • 低レベル制御

    • 単純なCRUDアプリ(やや過剰設計)


    まとめ(本質)

    Erlangは:

    • 並行性を「簡単にする」言語ではなく

    • 壊れてもシステム全体を守るための言語

    設計思想は一貫しています:

    • 共有しない

    • 非同期

    • 失敗を前提にする

    • 自動回復する




    はじめてつくるWebアプリケーション 〜Ruby on Railsでプログラミングへの第一歩を踏み出そう【電子書籍】[ 江森真由美 ]

    価格:2860円
    (2026/3/11 19:08時点)
    感想(0件)


    Cython —Cとの融合によるPythonの高速化

    価格:1479円
    (2025/7/24 12:48時点)
    感想(0件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 10:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2026年04月04日

    main.goを実行するコマンド

    robynne-o-HOrhCnQsxnQ-unsplash.jpg

    質問

    main.goを実行するコマンドは


    Golang Go プログラミング言語 - Go Developers のためのGo Logo Tシャツ

    価格:2826円
    (2026/3/22 19:05時点)
    感想(0件)


    解答

    main.go を実行する基本コマンドはこれです。

    go run main.go

    複数ファイルがある場合

    同じディレクトリ内のすべての Go ファイルを実行するなら:

    go run .

    ビルドしてから実行する場合

    go build main.go./main   # Windowsなら main.exe

    go.mod があるプロジェクトの場合(推奨)

    go run .

    これが一番一般的です。

    もしエラーが出ているなら、ディレクトリ構成も教えてください。






    徹底攻略Python 3 エンジニア認定[基礎試験]問題集 [ 株式会社ビープラウド ]

    価格:2640円
    (2025/12/30 00:55時点)
    感想(5件)


    WEB DB PRESS Vol.125 [ WEB DB PRESS編集部編 ]

    価格:1628円
    (2023/11/14 12:46時点)
    感想(0件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 13:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2026年03月16日

    初心者がプログラミング学習をする際、現代ではどのような方法が最も効率がいいと思いますか?

    howard-bouchevereau--WPdgomuLT4-unsplash.jpg

    質問

    初心者がプログラミング学習をする際、現代ではどのような方法が最も効率がいいと思いますか?


    Pythonではじめるゲーム制作 超入門 知識ゼロからのプログラミング&アルゴリズムと数学 (ゲーム開発スキルアップ) [ 廣瀬 豪 ]

    価格:2640円
    (2026/2/28 20:09時点)
    感想(3件)


    解答

    良い問いですね。
    結論から言うと、現代で最も効率が良い方法は:

    「小さな実用プロジェクトを作りながら、AIを“メンター兼デバッガー”として使う学習法」

    です。

    ただし条件があります。
    「AIに書いてもらう」のではなく、自分が主導で考え、AIは補助にすることです。


    なぜ昔の学習法は非効率になったのか

    従来は:

    • 本を最初から最後まで読む

    • 文法を完全理解してから作る

    • エラーは自力で数時間悩む

    という流れでした。

    しかし今は:

    • 文法は検索すればすぐ分かる

    • エラーの意味はAIが即説明できる

    • サンプルコードも無限にある

    つまり、

    **ボトルネックは「知識」ではなく「設計力」と「問題分解力」**になっています。


    現代の最効率ルート(初心者向け)

    STEP 1:目的を先に決める(超重要)

    ❌「とりあえずPython」
    ⭕「家計簿アプリを作りたい」
    ⭕「Webサイトを作りたい」
    ⭕「業務を自動化したい」

    目的がないと、学習効率は激減します。


    STEP 2:言語選択(迷わない)

    目的おすすめ
    Web制作JavaScript
    データ分析・自動化Python
    スマホアプリFlutter / Swift
    就職志向Java / Python

    初心者なら Python or JavaScript で十分です。


    STEP 3:超小さな成果物を作る

    例:

    • 1日目:電卓

    • 3日目:ToDoリスト

    • 1週間:簡単なWebページ

    • 2週間:データ自動処理ツール

    ここで重要なのは:

    「理解してから作る」ではなく
    「作りながら理解する」


    STEP 4:AIの正しい使い方

    効率が爆上がりする使い方はこれです:

    良い使い方

    • エラーの意味を聞く

    • コードの改善点を聞く

    • なぜそう書くのか理由を聞く

    • 別の書き方を比較する

    悪い使い方

    • 丸投げ

    • コピペして終わり

    • 理解しないまま進む

    AIは答え生成機ではなく、解説付きの家庭教師として使うのが最強です。


    最短で伸びる学習サイクル

    1. 作る

    2. エラー出る

    3. 調べる(AI含む)

    4. 修正

    5. 改善する

    6. リファクタリング

    このループを高速回転させること。


    初心者がハマる罠

    • 完璧主義

    • 文法暗記主義

    • 環境構築にこだわりすぎ

    • 教材ジプシー

    現代は特に「教材集め」が最大の時間ロスです。


    効率を最大化する具体的戦略

    ① 期間を決める

    例:30日間

    ② 成果物を決める

    例:自分用Webアプリ

    ③ 毎日必ずコードを書く

    たとえ10行でもOK

    ④ 人に見せる

    GitHub公開でも可


    学習効率の本質

    プログラミング学習の効率は:

    学習効率 = 試行回数 × フィードバック速度

    AIはこの「フィードバック速度」を極限まで上げます。

    だから今が歴史上もっとも学習効率が高い時代です。




    毎日がうまくいく 朝のスイッチーーー1日が変わる25のルーティン【電子書籍】[ 大嶋信頼 ]

    価格:1540円
    (2025/4/28 09:48時点)
    感想(1件)


    Webデザインの現場で使えるVue.jsの教科書 [ 廣末 丈士 ]

    価格:3630円
    (2025/12/14 20:18時点)
    感想(0件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 10:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2026年03月07日

    これからのプログラミング言語に求められる仕様


    logan-voss-9frU-O_A74g-unsplash.jpg質問

    これからのプログラミング言語に求められる仕様を挙げてください。
    過去のものと比べてどういった点が重要になりますか?


    Spring徹底入門 第2版 Spring FrameworkによるJavaアプリケーション開発【電子書籍】[ 株式会社NTTデータ ]

    価格:4730円
    (2026/2/23 12:41時点)
    感想(0件)

    Cloud Native Java Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry【電子書籍】[ Josh Long ]

    価格:3080円
    (2026/2/23 12:42時点)
    感想(0件)


    解答

    とても本質的な問いです。
    結論から言うと、これからのプログラミング言語は「人が書く言語」から「人とAIが共同で扱う言語」へ移行します。
    その結果、過去とは評価軸そのものが変わります。


    1. 過去のプログラミング言語で重視されていたもの

    まず対比のために整理します。

    従来(1970〜2010年代)

    重視点は主に以下でした。

    • 実行速度

    • メモリ効率

    • ハードウェア制御のしやすさ

    • 人間の書きやすさ(構文美・簡潔さ)

    • 処理系の安定性

    背景:

    • 人がすべて書く

    • 計算資源が貴重

    • バグ修正コストが比較的低かった


    2. これからの言語に求められる中核要件

    以下が今後10〜20年で重要度が上がる仕様です。


    ① 意味が明確で曖昧さが少ない(機械可読性)

    なぜ重要か

    • AIがコードを読む・書く・修正する

    • 曖昧な文法や暗黙仕様は致命的

    求められる仕様

    • 明確な型システム

    • 暗黙変換の抑制

    • 副作用の可視化

    • 未定義動作の排除

    過去:

    「賢く書ける人向け」

    未来:

    「誰(人・AI)が読んでも同じ意味になる」


    ② 安全性がデフォルト(Safety by default)

    なぜ重要か

    • システムが社会インフラ化

    • バグ=事故・損害・法的責任

    求められる仕様

    • メモリ安全

    • 例外安全

    • 並行性安全

    • 不変性(immutability)の推奨

    過去:

    高速だが危険でもOK

    未来:

    遅くても壊れない方が価値が高い


    ③ 並行・分散が自然に書ける

    なぜ重要か

    • マルチコア前提

    • クラウド・分散環境が標準

    • 非同期処理が日常

    求められる仕様

    • 非同期が第一級

    • データ競合を型で防ぐ

    • 並行モデルが明示的

    過去:

    シングルスレッド前提

    未来:

    並行が前提、逐次が特殊


    ④ 変更に強い(進化耐性)

    なぜ重要か

    • ソフトウェア寿命が長期化

    • 書き捨てではなく「育てる」

    求められる仕様

    • 後方互換性

    • 明示的な破壊的変更

    • 強力なリファクタリング支援

    過去:

    書いて終わり

    未来:

    10年保守が前提


    ⑤ 仕様とツールが一体化している

    なぜ重要か

    • 言語単体では価値が出ない

    • 開発体験が生産性を左右

    求められる仕様

    • 標準フォーマッタ

    • 標準ビルドツール

    • 標準テストフレームワーク

    • LSP対応が前提

    過去:

    ツールは後付け

    未来:

    言語=エコシステム


    ⑥ AIフレンドリー(ここが最大の転換点)

    なぜ重要か

    • 人がすべて書かなくなる

    • AIが大量生成・修正する

    求められる仕様

    • 構文が規則的

    • 記述スタイルが統一されやすい

    • 静的解析がしやすい

    • 意味的に冗長な表現を許容

    過去:

    熟練者が美しく書く

    未来:

    AIが大量に安全に書く


    ⑦ セキュリティが言語レベルで組み込まれている

    なぜ重要か

    • 人為ミスが最大の脆弱性

    • 後付け対策は限界

    求められる仕様

    • 権限・境界の型表現

    • 入力検証の標準化

    • サンドボックス前提

    過去:

    運用でカバー

    未来:

    言語が防ぐ


    3. 重要度が下がる要素(相対的に)

    • 極限までの実行速度

    • 書き手の職人芸

    • トリッキーなメタプログラミング

    • 暗黙の省略構文

    これらは

    • コンパイラ

    • JIT

    • ハードウェア

    • AI最適化

    に吸収されていきます。


    4. まとめ(過去との最大の違い)

    観点過去これから
    主な利用者人間人間+AI
    安全性任意デフォルト
    並行性追加要素前提
    曖昧さ許容排除
    書き味表現力重視意味安定性重視
    価値速さ壊れにくさ

    一言で言うと

    「賢い人が速く書ける言語」から
    「誰が触っても壊れない言語」へ





    コンピュータシステムの理論と実装 モダンなコンピュータの作り方/NoamNisan/ShimonSchocken/斎藤康毅【1000円以上送料無料】

    価格:4400円
    (2025/10/19 21:21時点)
    感想(0件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 15:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2026年02月06日

    エクセルの関数は関数型プログラミングになりますか?

    ilya-shishikhin-bpz-MQJDJuA-unsplash.jpg

    質問

    エクセルの関数は関数型プログラミングになりますか?


    解答

    結論から言うと、**Excelの関数は「関数型プログラミング“的”な側面はあるが、関数型プログラミングそのものではない」**です。

    理由を噛み砕いて説明します。


    1. 関数型プログラミングの基準は何か

    一般に「関数型」と言うと、だいたい次の性質を指します。

    1. 参照透明性
      同じ入力 → 常に同じ出力

    2. 副作用がない
      関数が外部状態を変更しない

    3. 状態を持たない

    4. 関数を値として扱える(高階関数)

    5. 評価順に依存しない

    これを基準にExcelを見ると、かなりグレーです。


    2. Excel関数が関数型っぽい点

    ① 参照透明性がある関数が多い

    =SUM(A1:A10)

    は、A1:A10が変わらなければ常に同じ結果。

    純粋関数っぽい


    ② 宣言的

    「どう計算するか」ではなく
    「何を計算したいか」を書く。

    → SQLや関数型言語に近い発想。


    ③ データフロー型

    • セル = 値

    • セル参照 = 依存関係

    • 変更が自動伝播

    これは
    データフロー/リアクティブモデルに近い。


    3. でも関数型とは言えない理由

    ① 副作用を持つ関数が存在する

    代表例:

    • NOW()

    • RAND()

    • TODAY()

    • OFFSET()(揮発性)

    同じ引数でも結果が変わる。

    参照透明性が崩壊


    ② 状態がセルに蓄積される

    • 計算結果がセルに「保存」される

    • 再計算のタイミングが重要

    状態フル


    ③ 関数を値として自由に扱えない

    • 関数を引数に渡せない(※一部LAMBDA除く)

    • 関数合成が限定的

    高階関数として弱い


    ④ 評価順序に依存することがある

    • 循環参照

    • 揮発関数

    → 純粋関数型では致命的。


    4. LAMBDA登場で何が変わったか

    最近のExcelでは

    =LAMBDA(x, x*2)

    が使える。

    これは確実に
    関数型プログラミングに寄ってきている

    • 関数を定義できる

    • 再利用できる

    • LET/LAMBDAで式が構造化できる

    ただし:

    • 副作用は排除されていない

    • 言語全体が関数型ではない

    「関数型っぽいDSL」止まり


    5. 一番正確な表現

    Excelの関数は

    「純粋関数が多く含まれた、状態フルなデータフロー言語」

    関数型“思想”はかなり入っているが、
    関数型言語として設計されたものではない


    6. 感覚的なたとえ

    • Haskell:完全関数型の修道院

    • Excel:関数型の服を着た実務特化の工場

    • VBA:命令型の現場監督





    開眼!JavaScript 言語仕様から学ぶJavaScriptの本質 [ コディ・リンドレー ]

    価格:2420円
    (2023/11/25 20:41時点)
    感想(0件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 21:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2026年01月02日

    バイブコーディングとは何?

    tianyi-ma-WiONHd_zYI4-unsplash.jpg

    質問

    バイブコーディングとは何?


    解答

    バイブコーディング(Vibe Coding)とは、 厳密な設計や仕様よりも「ノリ・感覚・直感(vibe)」を重視してコードを書くスタイルを指す比較的新しい言い方です。
    特に 生成AI時代のプログラミング文化と強く結びついて使われています。
    ※性的な意味は一切ありません。


    1. 何を意味する言葉か

    一言で言うと:
    > 「動けばOK。細かいことはあとで考える」コーディング
    特徴:
    * 設計書をあまり書かない
    * とりあえずAIに聞いてコードを出す
    * 動作確認しながら微調整
    * 可読性・最適化・保守性は後回し

    2. なぜ生まれた言葉か

    背景

    * ChatGPTなどの登場 * コードを「考えて書く」より「生成して調整する」流れ
    * 個人開発・PoC・プロトタイピングの高速化 これにより、
    > 「理屈より、今のフィーリングで組む」 という姿勢が可視化され、 それを半ば自嘲・半ば肯定的に表したのが「vibe coding」です。


    3. 典型的なバイブコーディングの流れ

    1. やりたいことを自然言語でAIに投げる
    2. 出てきたコードをそのまま貼る
    3. エラーが出たらそのままAIに貼る
    4. 直ったら次へ進む
    5. なぜ動いたかは深く考えない

    4. メリット

    圧倒的に速い

    * アイデア → 動くもの
    までが非常に短い

    学習コストが低い

    * 言語やフレームワークの細部を知らなくても進められる

    創作向き

    * 個人開発
    * デモ
    * MVP
    * ハッカソン

    5. デメリット(重要)

    保守性が低い

    * 後から自分でも読めない
    * 他人が触れない

    技術力が蓄積されにくい

    * 「なぜそうなるか」を理解しないまま進む

    本番運用に弱い

    * セキュリティ
    * パフォーマンス
    * 障害対応

    6. 正統派コーディングとの対比

    項目バイブコーディング伝統的開発
    設計ほぼしないする
    正確性後回し重視
    スピード非常に速い遅め
    本番耐性弱い強い


    7. どう付き合うべきか(実践的視点)

    使い分けが正解です。
    向いている:
    * プロトタイプ
    * 個人ツール
    * 検証コード
    * 学習初期

    向いていない:
    * 商用サービス
    * 長期運用システム
    * 金融・医療・インフラ系

    8. 一文でまとめると

    バイブコーディングとは、 「正しさより勢いを優先する、AI時代の即興プログラミング」です。



    正直少し邪道な感じもしますが、次の時代のプログラミングはこうなっていくんでしょうね


    エクセル関数との戦いを終えたエンジニアが次に立ち向かうことになるのは、バイブコーディングで作られたプログラムなのかなという気がします。

    アイディアだけではじめる バイブコーディング革命!【電子書籍】[ NewsPicks編集部 ]

    価格:1100円
    (2025/12/16 19:48時点)
    感想(0件)


    Cython —Cとの融合によるPythonの高速化

    価格:1479円
    (2025/7/24 12:48時点)
    感想(0件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 18:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする

    2025年11月30日

    pythonのみでwebサーバを建てる方法

    kevin-grieve-1GPfwIgvMMY-unsplash.jpg

    質問

    pythonのみでwebサーバを建てる方法


    解答

    とても良い質問です。
    Pythonだけでも、外部フレームワーク(FlaskやDjangoなど)を使わずに標準ライブラリだけでWebサーバを構築できます。
    ここでは、基本から本格的な実装まで段階的に説明します。


    ① 最も簡単な方法(HTTPサーバを一瞬で建てる)

    Python標準ライブラリの http.server モジュールを使えば、
    1行でHTTPサーバを立ち上げられます。

    python -m http.server 8000

    これで、カレントディレクトリが http://localhost:8000 でアクセス可能になります。
    静的ファイル(HTML, CSS, 画像など)を配信する簡易サーバです。


    ② Pythonコードで書く(最小限のWebサーバ)

    from http.server import HTTPServer, BaseHTTPRequestHandlerclass SimpleHandler(BaseHTTPRequestHandler):    def do_GET(self):        # ステータスコード200を返す        self.send_response(200)        # レスポンスヘッダ        self.send_header("Content-type", "text/html; charset=utf-8")        self.end_headers()        # 本文        self.wfile.write(b"<h1>Hello, Python Web Server!</h1>")# サーバ設定server = HTTPServer(('localhost', 8080), SimpleHandler)print("Server running on http://localhost:8080")server.serve_forever()

    これで http://localhost:8080 にアクセスすると “Hello, Python Web Server!” が表示されます。


    ③ POST通信などを処理するサーバ

    フォーム送信やAPIリクエストを受け取るなら、do_POST を追加します。

    from http.server import HTTPServer, BaseHTTPRequestHandlerimport urllib.parseclass MyHandler(BaseHTTPRequestHandler):    def do_GET(self):        self.send_response(200)        self.send_header("Content-type", "text/html; charset=utf-8")        self.end_headers()        html = """        <form method="POST">          <input name="name">          <input type="submit" value="Send">        </form>        """        self.wfile.write(html.encode("utf-8"))    def do_POST(self):        content_length = int(self.headers['Content-Length'])        post_data = self.rfile.read(content_length)        params = urllib.parse.parse_qs(post_data.decode('utf-8'))        name = params.get('name', [''])[0]        self.send_response(200)        self.send_header("Content-type", "text/html; charset=utf-8")        self.end_headers()        self.wfile.write(f"<h1>Hello, {name}!</h1>".encode("utf-8"))server = HTTPServer(('localhost', 8080), MyHandler)print("Server running on http://localhost:8080")server.serve_forever()

    これでフォームを送信すると、入力値が画面に表示されます。


    ④ 本格的に作るには

    Python標準ライブラリのみでは以下のような制約があります。

    • マルチスレッド/非同期処理に弱い

    • ルーティング機能がない(URLごとの処理を手動で記述)

    • MIMEタイプやセキュリティヘッダ設定が簡易的

    本格的にやるなら、socket モジュールを使って
    HTTPプロトコルを自前で処理することも可能です。


    ⑤ ソケットレベルでの最小HTTPサーバ(完全自作)

    import socketHOST = 'localhost'PORT = 8080with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:    s.bind((HOST, PORT))    s.listen(1)    print(f"Server running on http://{HOST}:{PORT}")    while True:        conn, addr = s.accept()        with conn:            request = conn.recv(1024).decode('utf-8')            print(request)  # 受信内容を表示            response = (                "HTTP/1.1 200 OK\r\n"                "Content-Type: text/html; charset=utf-8\r\n"                "\r\n"                "<h1>Hello from pure socket!</h1>"            )            conn.sendall(response.encode('utf-8'))

    このコードでは、HTTPリクエスト文字列を直接解析してレスポンスを返しています。
    完全な自作HTTPサーバです。


    まとめ

    方法特徴難易度
    python -m http.serverファイル共有向け。1行。★☆☆☆☆
    http.server + BaseHTTPRequestHandler簡単なAPIやフォーム処理可★★☆☆☆
    socket で自作プロトコルレベル理解が深まる★★★★★




    VTuberサプーが教える! Python 初心者のコード/プロのコード [ サプー ]

    価格:2860円
    (2025/11/13 19:45時点)
    感想(2件)


    Rust ECSでゲーム開発 -ゲームエンジンAmethystのススメ-【電子書籍】[ 住田 直樹 ]

    価格:1980円
    (2025/5/1 21:54時点)
    感想(0件)


     



    ブログランキング・にほんブログ村へ
    【下記、広告です。クリックいただけると励みになります。】
    posted by モニー at 18:00| Comment(0) | プログラミング | このブログの読者になる | 更新情報をチェックする