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

クイズを作ってPHPに親しむ / Make quizzes and get familiar with PHP

クイズを作ってPHPに親しむ / Make quizzes and get familiar with PHP

クイズを解くだけでなく、作ることもPHPに親しむ方法の一つです。作ることの良さとコツを、実例をもとに紹介します。
2023/03/25に開催されたPHPerKaigi 2023 (Day2 LT) にて発表した内容です。

題材となったクイズはこちら
https://tech.pepabo.com/2022/10/05/php-conference-japan-2022-quiz/

yammerjp

March 25, 2023
Tweet

More Decks by yammerjp

Other Decks in Programming

Transcript

  1. 1
    クイズを作ってPHPに親しむ
    中山 慶祐 (やんまー)/ GMO PEPABO inc.
    2023.03.23 PHPerKaigi2023 LT

    View Slide

  2. 2
    自己紹介
    やんまー
    @yammerjp

    View Slide

  3. GMOペパボ株式会社 EC事業部
    2021年 新卒入社
    3
    自己紹介
    PHP歴2年目
    SoftwareDesignで「開発環境 探求の道」連載中
    中山 慶祐 / やんまー (@yammerjp)

    View Slide

  4. 4
    今日は
    PHPクイズを作った話
    をします

    View Slide

  5. 5

    View Slide

  6. 6
    PHP Conference 2022
    にて クイズを出題

    View Slide

  7. 7
    出題例: 次のコードの実行結果は?
    PHPクイズとは
    bool(true)
    bool(true)
    bool(true)
    1
    $var = '0';
    var_dump(isset($var));
    var_dump(empty($var));
    var_dump(is_null($var));
    bool(true)
    bool(true)
    bool(false)
    2
    bool(true)
    bool(false)
    bool(false)
    3
    bool(false)
    bool(false)
    bool(false)
    4

    View Slide

  8. 8
    出題例: 次のコードの実行結果は?
    PHPクイズとは
    $var = '0';
    var_dump(isset($var));
    var_dump(empty($var));
    var_dump(is_null($var));
    bool(true)
    bool(true)
    bool(false)
    2
    2
    解説: https://tech.pepabo.com/2022/10/05/php-conference-japan-2022-quiz/

    View Slide

  9. 9
    クイズを解くのは
    面白いですよね
    PHPクイズとは

    View Slide

  10. 10
    クイズを作ると何がいいのか

    View Slide

  11. 11
    クイズを作ると
    クイズを作ると何がいいのか

    View Slide

  12. 12
    クイズを作ると
    PHPの仕様を知れる
    クイズを作ると何がいいのか

    View Slide

  13. 13
    クイズを作ると
    みんなPHPが好きだとわかる
    クイズを作ると何がいいのか
    注: 個人の感想です

    View Slide

  14. 14
    クイズを作ると
    PHPに親しめる
    クイズを作ると何がいいのか

    View Slide

  15. 15
    クイズを作るコツ

    View Slide

  16. 16
    1.ネタを集める
    クイズを作るコツ

    View Slide

  17. 17
    - 業務中に話題になったPHPの標準関数をメモ
    1.ネタを集める
    クイズを作るコツ

    View Slide

  18. 18
    - 業務中に話題になったPHPの標準関数をメモ
    - PHPerの登壇資料を探検
    1.ネタを集める
    クイズを作るコツ

    View Slide

  19. 19
    - 業務中に話題になったPHPの標準関数をメモ
    - PHPerの登壇資料を探検
    - PHPマニュアルをランダムに開いて読む
    1.ネタを集める
    クイズを作るコツ

    View Slide

  20. 20
    - 業務中に話題になったPHPの標準関数をメモ
    - PHPerの登壇資料を探検
    - PHPマニュアルをランダムに開いて読む
    - 社内のPHPerから募る
    1.ネタを集める
    クイズを作るコツ

    View Slide

  21. 21
    色んな人が参加できるよう、簡単、普通、難問を作る
    簡単: PHPをあまり知らなくても解ける
    普通: PHPerによく知られた話題
    難問: ライブラリのコードに触れる人ならば知っている /人間が  
    覚えていないような細かな挙動
    2.難易度を調整
    クイズを作るコツ
    注: 個人の感想です

    View Slide

  22. 22
    出題例(簡単):
    PHPの開始タグは?
    クイズを作るコツ (難易度を調整)

    <br/><script lang=”php”><br/>1<br/>3 4<br/>2<br/>

    View Slide

  23. 23
    出題例(簡単):
    PHPの開始タグは?
    クイズを作るコツ (難易度を調整)
    4
    解説: https://tech.pepabo.com/2022/10/05/php-conference-japan-2022-quiz/

    View Slide

  24. 24
    出題例(簡単):
    PHPのマスコットキャラクターは?
    クイズを作るコツ (難易度を調整)
    dolPHPin
    (イルカ)
    PHPeasant
    (キジ)
    elePHPant
    (ゾウ)
    ePHPemera
    (カゲロウ)
    1 2 4
    3

    View Slide

  25. 25
    出題例(簡単):
    PHPのマスコットキャラクターは?
    クイズを作るコツ (難易度を調整)
    elePHPant
    (ゾウ)
    2
    解説: https://tech.pepabo.com/2022/10/05/php-conference-japan-2022-quiz/

    View Slide

  26. 26
    出題例(普通): 次の実行結果は?
    クイズを作るコ (難易度を調整)
    bool(true)
    bool(true)
    bool(true)
    1
    $var = '0';
    var_dump(isset($var));
    var_dump(empty($var));
    var_dump(is_null($var));
    bool(true)
    bool(true)
    bool(false)
    2
    bool(true)
    bool(false)
    bool(false)
    3
    bool(false)
    bool(false)
    bool(false)
    4
    再掲

    View Slide

  27. 27
    出題例(難問): $valの値は?
    クイズを作るコツ (難易度を調整)
    $val = count(array_keys([
    "0" => "a",
    " 0"=> "b",
    "01" => "c",
    null => "d",
    "e",
    true => "f",
    false => "g",
    ]));
    5
    1
    6
    2
    7
    3
    null
    4

    View Slide

  28. 28
    出題例(難問): $valの値は?
    クイズを作るコツ (難易度を調整)
    $val = count(array_keys([
    "0" => "a",
    " 0"=> "b",
    "01" => "c",
    null => "d",
    "e",
    true => "f",
    false => "g",
    ]));
    5
    1
    解説: https://tech.pepabo.com/2022/10/05/php-conference-japan-2022-quiz/

    View Slide

  29. 29
    色んな人が参加できるよう、簡単、普通、難問を作る
    簡単: PHPをあまり知らなくても解ける
    普通: PHPerによく知られた話題
    難問: ライブラリのコードに触れる人ならば知っている /人間が  
    覚えていないような細かな挙動
    2.難易度を調整
    クイズを作るコツ
    注: 個人の感想です

    View Slide

  30. 30
    ① 四択形式にする
    … 別解を避ける
    ② 信頼できる出典元から出題
    … 公式ドキュメントや実行結果
    → クイズを成立させ、納得感のある問題にする
    3.答えの裏付け
    クイズを作るコツ

    View Slide

  31. クイズを作るコツ
    31
    答えの
    裏付け
    難易度
    を調整
    ネタを
    集める
    31
    クイズを作るコツ

    View Slide

  32. 32
    まとめ

    View Slide

  33. 33
    クイズを作ってPHPに親しもう
    まとめ
    クイズを解くことにも学びがある
    クイズを作ることにも学びがある

    View Slide

  34. 34
    おまけ

    View Slide

  35. 35
    問題: 次のコードの出力は?
    おまけ
    PHP7.4では1
    PHP8.0では2
    1
    echo (true ? '1' : false ? '2' : '3');
    PHP7.4では1
    PHP8.0では
    Fatal error
    2
    PHP7.4では2
    PHP8.0でも2
    3
    PHP7.4では2
    PHP8.0では
    Fatal error
    4
    解答はTwitter (@yammerjp) で公開するスライドに掲載

    View Slide

  36. 36
    問題: 次のコードの出力は?
    おまけ
    echo (true ? '1' : false ? '2' : '3');
    PHP7.4では2
    PHP8.0では
    Fatal error
    4
    https://3v4l.org/2sYXS
    “PHP 8.0.0 より前のバージョンでは、三項演算子は左から右に評価されていました。 他の殆どのプログラミング言語では、右から左に
    評価されます。 左から右に評価される振る舞いに依存することは、 PHP 7.4.0 以降は推奨されません。 PHP 8.0.0 以降は、三項演算子
    はどの演算とも結合しなくなっています。 ”
    https://www.php.net/manual/ja/language.operators.comparison.php

    View Slide