Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP初心者セッション 〜ChatGPTでゼロから動くプログラムを生み出そう!〜

PHP初心者セッション 〜ChatGPTでゼロから動くプログラムを生み出そう!〜

初心者向けのセッションです。

対象:
• PHPをこれから始めたい方
• 学習中に壁にぶつかってしまった方
• ChatGPTの活用を知りたい方

ゴール:
ゼロから始める方にもわかりやすく、PHPがはじめられるようになります。

内容:
近年、AI技術の進化により、言語習得のハードルがぐっと下がりました。
このセッションでは、ChatGPTを使ってPHPを学ぶ効果的な方法を紹介します。

• ChatGPTを活用した効率的な学習方法
• PHPの基本的な概念と書き方の解説
• 簡単な開発環境のセットアップ方法
• ChatGPTを使ったコーディングのヒントとテクニック
• 実際に動くシンプルなプログラムの作成

ChatGPTを活用して、よりスムーズに、そして楽しくPHPの世界に飛び込んでみましょう。

Hideo Kashioka

December 21, 2024
Tweet

More Decks by Hideo Kashioka

Other Decks in Technology

Transcript

  1. @kashioka 自己紹介 • 有限会社アリウープ 代表取締役社長 • Registered Scrum Master(RSM) •

    Registered Product Owner(RPO) • Registered Scrum@Scale Practitioner(RS@SP) • PHPユーザ会の発起人の一人 • PHPカンファレンスでは初回より運営に 参加 • 明日の開発カンファレンス(@asucon_jp) • PHPを中心としたWEB開発からスクラム 導入まで
  2. PHPとは A popular general-purpose scripting language that is especially suited

    to web development. Fast, flexible and pragmatic, PHP powers everything from your blog to the most popular websites in the world. http://php.net/より Web開発に特に適した、人気のある汎用的なスクリプト言語です。 高速で柔軟かつ実用的なPHPは、あなたのブログから世界で最も 人気のあるウェブサイトまで、あらゆるものを支えています。 ChatGPTの翻訳
  3. docker-compose.yml version: '3' services: php: image: php:8.4-cli expose: - '8888'

    ports: - '8888:80' volumes: - ./:/home/www-data working_dir: /home/www-data command: php -S 0.0.0.0:80 dockerイメージ 名 公開ポート ホスト側とコンテナ のポート ボリュームのマウ ト コマンドの実行 ビルトインサーバ alpine linuxは軽量でリソース効率を重視したディストリビューションです。 PHP8.3は10/4現在RC(リリース候補)のイメージが多い
  4. Visual Studio Code Visual Studio Code (VS Code) は、Microsoftが提供 する無料のソースコードエディタです。軽量でありな

    がら強力な機能を持ち、さまざまなプログラミング言 語をサポートしています。主な特徴としては、以下の 点が挙げられます。 https://code.visualstudio.com/
  5. VS Codeの拡張・設定 PHP Intelephense Docker Github copilot Github copilot chat

    https://learn.microsoft.com/ja-jp/visualstudio/ide/visual- studio-github-copilot-install-and-states?view=vs-2022
  6. 省略しないと書き方を確認 <?php $numbers = [ 0 =>'佐藤’, 1 =>'鈴木’, 2=>'高橋'

    ]; var_dump($numbers); http://localhost:8080/sample5.php http://localhost:8080/sample5.php
  7. 最も利用するであろうforeach <?php $numbers = ['2','3','4','5','6']; foreach($numbers as $val) { echo

    $val; } http://localhost:8080/sample4.php http://localhost:8080/sample4.php
  8. key value <?php $numbers = [ '名前' => '柏岡', '出身'

    => '東京', '役割' => 'スクラムマスター’]; foreach($numbers as $key => $val) { echo $key . ':' . $val . '<br/>'; }
  9. 関数 • 繰り返される処理を共通化 • function 関数名([型] [引数],,,) { • }

    • なんども出てくる処理を関数化しておく 。
  10. マニュア ルを読ん でみる fopen — ファイルまたは URL をオープンする whileループは、PHPで最も簡単なタイプのル ープです。

    count — 変数に含まれるすべての要素、 ある いはオブジェクトに含まれる何かの数を数える fclose — オープンされたファイルポインタを クローズする これを踏まえて
  11. サンプルを そのまま動 かしてみる •マニュアルのソースをfget.php として作成 •http://localhost:8888/fget.php • Warning: fopen(test.csv): Failed

    to open stream: No such file or directory in /var/www/html/fget.php on line 3 •エラーがでるのでcsvファイル を置いてみましょう。
  12. <h1>PHPカンファレンス2024 初日午前セッション</h1> 絞り込み:<a href="list.php?room=Track1">Track1</a> <a href="list.php?room=Track2">Track2</a> <a href="list.php?room=Track3">Track3</a> <a href="list.php?room=Track4">Track4</a>

    <a href="list.php?room=Track5">Track5</a> <a href="list.php?room=Track5">Track6</a> <table border=1> <?php if (isset($_GET['room'])) { $room = $_GET['room']; } else { $room = 'Track1'; } if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { if ($room === $data[0]) { echo "<tr>"; echo "<td>" . hsc($data[0]) . "</td>" . PHP_EOL; echo "<td>" . hsc($data[1]) . "</td>" . PHP_EOL; echo "<td>" . hsc($data[2]) . "</td>" . PHP_EOL; echo "</tr>"; } } fclose($handle); } ?> </table> <?php function hsc(string $str) { return htmlspecialchars($str, ENT_QUOTES); }
  13. 「あなたは10年以上の経験を持つPHPエンジニアであり、常にセキュリティを意識したコーディングができます。以 下の仕様に沿ったPHPプログラムを作成してください。プログラム内には、なぜそのような処理を行うのかを他の開 発者が理解しやすいよう、十分なコメントを入れてください。 仕様: 1. test.csvファイルを読み込み、CSVデータを取得します。 • CSVはUTF-8エンコード、カンマ区切り、フィールドは「トラック(track)」「タイトル(title)」「開始時間 (start_time)」の3つ。 •

    ファイルが存在しない、または読み込み不可ならエラーメッセージを表示してください。 2. トラックごとにデータを絞り込む機能を実装します。 • Webフォームなどでユーザーがtrackパラメータ(例:?track=Track1)を指定した場合、そのトラックに該当する行の みHTMLテーブルで表示してください。 • パラメータが指定されない場合はすべてのデータを表示します。 3. セキュリティ上の注意点: • ユーザーが指定するtrackパラメータは信用できない入力とみなし、必ず入力バリデーションとエスケープ処理を 行ってください。 • 例えば、trackパラメータが想定外の文字列(HTMLタグ、特殊文字)を含んでいてもXSSが起きないよう htmlspecialchars()でエスケープしてから表示してください。 • 検索・絞り込みはCSVファイル内に存在するトラック名のみ許可し、それ以外の値の場合は全データ表示またはエ ラーメッセージを出すなど、安全な挙動を行ってください。 • CSVファイル中のデータも同様にhtmlspecialchars()でエスケープして出力することで、XSS対策をしてください。 4. HTMLテーブル表示: • 1行目に「トラック」「タイトル」「開始時間」というカラム見出しを <th> で表示し、2行目以降に該当データを <td> で表示します。 • 見出しは固定でよく、trackパラメータによる絞り込みはデータ行の表示有無にのみ影響します。 5. エラー処理: • ファイル読み込み失敗時や、ファイルが空の場合は適切なメッセージ(「ファイルを読み込めませんでした」な ど)を表示し、PHPのエラーがそのまま出ないように工夫してください。 以上の要件を満たしたPHPコードを提示してください。」
  14. ChatGPTに依頼する上での注意点 1. 全てを鵜呑みにしてはいけない 2. 最後の責任は自分で持つ 3. 動作確認は必要 4. セキュリティは絶対に必要 5.

    壁打ち、確認依頼、アイデア出しなどで活躍 6. php.netは依然として便利 積極的に利用しましょう。