Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

プログラミング『超入門書』から見るPythonと解説テクニック

474 views

Published on

みんなのPython勉強会 #33
Speaker: 大津雄一郎(リブロワークス)
===
ここ数年のプログラミング入門ブームを受けて、市販のプログラミング入門書は「超入門書」の時代に突入し、各社しのぎを削っています。その中で、Pythonとその他のいくつかの言語がどう見られているのかを編集プロダクションの立場からお話しします。また、入門書で使われる「図解」や「ステップバイステップ写経」といった解説テクニックのポイントも簡単に紹介します。

Published in: Technology
  • Be the first to comment

プログラミング『超入門書』から見るPythonと解説テクニック

  1. 1. プ ロ グ ラ ミ ン グ 『 超 入 門 書 』 か ら 見 る P y t h o n と 解 説 テ ク ニ ッ ク リブロワークス 大津雄一郎
  2. 2. 主な著作 http://libroworks.co.jp/
  3. 3. 主な編集書籍
  4. 4. プ ロ グ ラ ミ ン グ 入 門 書 は 今 『 超 入 門 書 』 の 時 代 へ 入 門 書 の そ の 下 を め ぐ っ て 、 各 社 し の ぎ を 削 る 時 代 へ
  5. 5. 当社が関わった『超入門書』 • 細かい内部事情は出せないが、「ページが短め」「図が多い」「サンプルが短い」 「厳密性や網羅性は重視しない」などの傾向がある。
  6. 6. 編 プ ロ か ら 見 る プ ロ グ ラ ミ ン グ 言 語 雑 感 P y t h o n 、 J a v a S c r i p t 、 C # 、 C / C + +
  7. 7. 「Python」はここ数年ブーム • ここ数年ブーム。2017年には4冊作った • AIブーム、データ分析ブームが大きい • 加えてシンプルに書けるので教えやすい
  8. 8. 「絵解き本」でも最初にPython から解説 • 一番シンプルなPython で概要を説明 3言語を 説明
  9. 9. • 同じ動的型付け言語のJavaScriptは「Pythonと書き方が少し違うだけ」という説明で済む • 最後にJavaを説明することで、動的型付け言語と静的型付け言語の違いを説明できる { }が必要 型が必要
  10. 10. Pythonの弱いところ? •GUIがあまり作りやすくない……ような? ライブラリごとに書き方やできることが異なる • そのため派手なサンプルで読み手の興味を引く手法が使いにくい
  11. 11. 「12歳Python」より • CUI版は3行
  12. 12. import tkinter # ウィンドウ作成 root = tkinter.Tk() root.title("リリーにしつもん") root.minsize(640, 480) root.option_add("*font", ["MS Pゴシック", 22]) # 画像表示 pimg = tkinter.PhotoImage(file="img3/chap3-back.png") canvas = tkinter.Canvas(bg="black", width=640, height=480) canvas.place(x=0, y=0) canvas.create_image(320, 240, image=pimg) # テキスト表示 question = tkinter.Label(text="知りたいのは何分かな?", bg="white") question.place(x=100, y=40) # テキストボックス表示 entry = tkinter.Entry(width=12, bd=4) entry.place(x=50, y=133) # 質問ボタン表示 askbutton = tkinter.Button(text="聞く") askbutton.place(x=260, y=125) # 答え表示 answer = tkinter.Label(text="…………", bg="white") answer.place(x=115, y=235) # イベント設定 def ask_click(): val = entry.get() minutes = float(val) hours = round(minutes/60, 2) answer["text"] = str(hours) +"時間だね!" askbutton["command"] = ask_click # メインループ root.mainloop() • GUI版はコメントと空白行を抜いて24行
  13. 13. 「JavaScript」はUIが作りやすい • 2017年に3冊制作(一冊は執筆込み)。需要はあるが棚が狭くなっている? • UIが作りやすい。他の言語はライブラリごとに作り方やできることが変わってしまう が、JavaScriptのUIはHTMLなので何ができて何ができないのかが把握しやすい。CSSで 手軽に格好よくできる • ブラウザがあれば使えて、最近はアプリ作り(Electronなど)用途も広がっている。個 人的に一番よく使う
  14. 14. JavaScriptの弱いところ • 仕様の変化が激しい。ES2015が普及し始めたので入門 書も作り直さないといけない
  15. 15. 「C#」はUnityがすごい • 2017年に2冊制作(一冊は執筆込み) • C#というよりUnityがすごい。ゲームだったら頭抜けている。 • Unityの本をプロのゲーム作家さんとの共著で2冊制作したが、物理演算、衝突判定が コードなしで書けて感動した。マルチプラットフォーム対応もUnity任せでいい。 • 静的型付け言語としては覚えやすい。Javaの経験があればその応用で済む。ただし用 途が狭い気も。
  16. 16. コードなしでかなりのことが できる • ボールが落ちる、衝突して跳ね返る 部分まではコード不要 • 基本的にイベント処理の部分だけ書けばいい
  17. 17. 「C/C++」は超入門だと厳しい • 超入門書で採り上げるのは厳しい印象。とにかく他に比べて簡単ではないし、プラッ トフォーム依存も激しい。 • もはや静的言語が主流の時代ではないので(PythonやJavaScriptを使うためにC/C++の 知識が必要というわけではない)、最初の言語に選ぶ理由があまりない。 • GUIアプリの開発はかなり難易度高い。 • 昔作った「12歳C言語(旧13歳C言語)」 という本では、学習用のツールを作って 初心者対応した。 2010年刊行 2016年刊行
  18. 18. 「12歳C言語」より CLIアプリ程度の難易 度でグラフィック入り のプログラムを作れる ツールを用意した
  19. 19. プ ロ グ ラ ミ ン グ 入 門 書 で 使 わ れ る 基 本 テ ク ニ ッ ク
  20. 20. 定番テクニック • 定番テクニックは「図解」と「ステップバイステップ写経」 • 図解のみに注力したのが「絵解き本」 • 過去の著作では「ステップバイステップ写経」メインの本が多い。 図解 メイン 写経 メイン
  21. 21. 図解したほうがいいものの例 • スタック(LIFO)とキュー(FIFO)の違いを説明する場合 • 文章のみだと…… ➢ 「最初にHが入って、二番目にE、三番目にLが入った場合、最初にH、二番目にE、三番目 にLの順番で出てくるのがキュー」 ➢ 「最初にHが入って、二番目にE、三番目にLが入った場合、最初にL、二番目にE、三番目に Hの順番で出てくるのがスタック」 • 視覚説明を文章で書くのは要注意(小説ではないので)
  22. 22. 図にすれば一発で伝わる L L E H O 先に入れたデータが 先に出る キュー(FIFO) O L L E H スタック(LIFO) L E H O L 後に入れたデータが 先に出る IN OUT IN OUT
  23. 23. ただし図解より大事なこともある • 図解よりももっと大切なのは「用途・目的」の説明(どういうときに必要なの?) • これが読者と共有できていないと、手間をかけて図解しても意味がない • 「何ソレおいしいの?」というツッコミを自分でして答えられるか? そもそもキュー やスタックって 何に使うの?
  24. 24. ステップバイステップ写経とは • 古いやり方(中級者向けなら今でもOK) – 長いコードをドーン – 長い説明をドーン • ステップバイステップ写経 – 短いコードを見せて説明 – ちょっとずつ足して結果を見せて説明 – ちょっとずつ足して結果を見せて説明 ×これを完成まで繰り返す • 入力しながら試行錯誤を追体験させることで学習効果を狙う • 説明を分散できるメリットもある(人間が一気に覚えられる情報量には限界あり)
  25. 25. 「12歳Python」より ウィンド ウを表示 画像を配置
  26. 26. ボタンや 入力ボックス を配置 イベント設定
  27. 27. 移動処理だけだと、障害 物に重なってしまい画面 外にも出てしまう 移動先をチェック して制限する関数 を作る わざと失敗例を先に見せる手法 • ステップバイステップと用途 説明のあわせワザ

×