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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  6. 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 full-size slide

  7. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  14. 15
    クイズを作るコツ

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  25. 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 full-size slide

  26. 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 full-size slide

  27. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  32. 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 full-size slide

  33. 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 full-size slide