2018年のPerl入学式の構想

あけましておめでとうございます, id:papix です.

昨年は, これまでの大阪/東京/沖縄の3拠点に加えて, 新たに札幌での開講が始まり, より多くの方と一緒にPerlを学んでいくことができました.

そして2018年, いよいよPerl入学式は7年目に突入します.
7年目が始まる今この時, あらためてこれまでを振り返ってみると, 2011年に大阪でPerl入学式の取り組みをスタートしてから, Perlはもとより, Perl入学式を取り巻く状況も目まぐるしく変化してきたと感じます.

そういった状況に鑑みて, Perl入学式という取り組みをさらに実り多く, 継続可能なものにするために, 良いものは残しつつ, 現在の時流に適した形へ刷新していく必要があると感じています.

...というわけで, 個人的な2018年のPerl入学式のテーマは "Reboot" です.
以下, どのような取り組みでPerl入学式をRebootしていくか, という所の私案を述べます.
これをベースにしつつ, スタッフの間で議論を進めて, 2018年4月から, 新しいスタイルのPerl入学式をスタートしていきたいと思っています.

カリキュラムの刷新

Perl入学式のカリキュラムと, そこで用いられる資料は, 基本的に2011年に活動が始まった際に構築した資料を, 年々加筆修正しながら使い回しているのが現状です.
練習問題が微妙, 講義内容の前後が繋がっていない, 少し突っ込んだ内容まで取り入れてしまっている... などなど, 毎年問題点が見つかるたびに修正していますが, そろそろ資料については0から作り直しても良いのではないか, という気持ちがあります.

理想としては, 現代的なPerlを解説する入門書『雅なPerl入門』に準拠した資料を新たに構築して, それをスライド化したものを講義で利用する... といった状態を目指したいですが, ひとまず2018年は, その『雅なPerl入門』を参照しながら, 講義資料を見直していくところからスタートするのではないかと思っています.

また, 毎年第1回で取り組んでいる環境構築についても, Wandboxなど, ブラウザ上でPerlを実行できる環境が整ってきた状況を踏まえて, カリキュラムの後半(Webサービス開発に取り組む辺り)まで先延ばしにしても良いのではないか...? と思い始めています.
(とはいえ, ブラウザ上で動作する環境を利用するとなると, 会場に無線LANの環境が用意されていることが必須になりますし, サービスに障害が起きた場合のことも考慮する必要があるため, この辺りについては, 運営チームでしっかり相談したい所ではあります)

その上で, あくまで構想段階ではありますが, 上記のようなブラウザで利用可能な環境を前提にして, 現在, 講義を以下のように再編できないかと考えています:

  • 第1回
    • Perlの概要と歴史
    • Hello, world
    • スカラー変数
    • 数値と文字列
  • 第2回
    • 条件分岐
    • 論理演算子
    • 配列とリスト
    • ハッシュ
  • 第3回
    • サブルーチン
    • 正規表現
  • 第4回
    • リファレンス
  • 第5回
    • Webサービス開発環境構築
    • 簡単なWebサービスの開発(簡易Twitter)

全体的には過去のカリキュラムを踏襲していますが, これまで第1回で実施していた環境構築を最終回に移行している所が大きな違いだと思います.

また, これまで第5回をまるまる使って「Webサービスの開発」を行っていましたが, これについては内容を絞った上で, より本格的な内容は, 「Perl入学式」の次のステップとなる「Perl中学校(仮)」に織り込んでいく形を考えています.
(「Perl中学校(仮)」の構想については, 次の「講義スタイルの刷新」の中で扱います)

講義スタイルの刷新

講師が説明をして, サポーターが受講生をサポートする... という講義スタイルは「Perl入学式」の特長ですし, そういった環境を作って, なるべく質問しやすい雰囲気作りをする, ということは今後もこれまで以上に大事にしていきたいと思っています.

とはいえ, 他の形式も模索してみたい気持ちがあり, そこから既存のやり方に良い点を取り入れる, みたいなことができたら良いなとも思っています.

ということで, 「Perl入学式」の次のステップを扱う, 「Perl中学校(仮)」では, "もくもく会形式"を取り入れてみたいと考えています.
具体的には,

  • Perl入学式の第5回で作成する簡単なWebサービスを, さらに改良する資料(後述)を用意する
  • 4〜5時間程度, 会場を用意して, 受講者は各自のペースで資料に取り組む
  • サポーターも各自, 課題やネタを持ち寄ってもくもくする. 受講者からの質問があれば, 適宜サポートする

...といった感じでしょうか.

そもそも, Perl入学式の次のステップ, となってくると, 扱う内容も難易度も高くなってきて, それをすべて講義形式で実施する... というのは, 受講者が学んだ内容をうまく咀嚼できるまでの時間に差がありすぎて, うまく同期できないという問題が生じてきそうだと思っています.
そういった事態を防ぐためにも, 「Perl中学校(仮)」では, 受講者がそれぞれのペースで学んでいける形式で進めていく必要があるのでは, と思っています.
また, それを実現するためには, 今以上にSlackやTwitterを活用したサポートも重要になってくるかもしれません.

また, 「Perl中学校(仮)」では, 次のような内容を取り扱いたいと思っています:

  • CPANモジュールの活用
  • Perlにおけるオブジェクト指向プログラミング
  • クッキーを利用したログインの概念を追加
  • MySQL or SQLiteを利用したデータの永続化
  • Twitter Bootstrapなどを利用したデザインの整備
  • オプション: VPSを使ったWebサービスのデプロイ

この辺りまで習得することができれば, 様々な形でPerlを活用できるレベルまであと一歩と言えるのではないかと思います.

さいごに

2017年は, 転職やYAPC::Fukuokaの運営など, いろいろな出来事があって, あまりPerl入学式の運営に取り組めなかったなー, と思っています.
また, 校長という立場で6年間やってきて, そろそろ「次の体制」にバトンを渡していく必要があると最近思っています.
Perl入学式という活動や, そのコミュニティから一切合切手を引く(関わらなくなる)事はありえませんが, とはいえ継続可能な組織を目指していくためには, 「校長」というポジションをちゃんと引き継ぎ可能な状態にしておくことが大事だと思っています.
2019年〜2020年辺りに, 新しい体制のPerl入学式をスタートできるように, この2018年にRebootして, これまでの資料や運営体制を刷新して, また「Perl中学校(仮)」構想もしっかり進めていく. そういった1年になればいいなと思っています.

RubyやPython, 或いはPHPが主流となる中で, 今さらPerlを教えることに何の意味があるのだろう? と思われるかもしれません.
ただ, これまで6年間, Perl入学式をやってきて思ったのは, 「とにかくPerlでも何でも良いので, イチから丁寧に, しっかりとプログラミングのイロハを学びたい」と思っている方が, 自分のようなエンジニアの人達が思っている以上に, 世の中にはたくさんいらっしゃる, ということです.

Perl入学式は踏み台です. Perlという言語と, Perl入学式をきっかけにして, プログラミングに興味がある人に, その第一歩を踏み出してほしい.
もちろんPerlを楽しみ続けてほしいと思いますが, そこで得た知識を元に, RubyやPythonなど, 他の言語に進んでいってもらっても, 全然良いと思っています.
そういった思いでこれまでやってきましたし, これからもやっていきます. そこは絶対に変わることのない, Perl入学式の理念であり, 軸となる部分だと思っています.

6年という年月は長いもので, 設立当時に小学校に入学した子供たちが, 中学生へと羽ばたくだけの時間が経ちました.
それだけの時間が経過しても, こういった取り組みが続いているのは, 受講者の皆さんと, 優秀な運営ボランティアスタッフ, そしてPerl入学式の活動をご理解くださり, ご支援くださる皆様のお陰だと思います.
Perlという言語とそのコミュニティが, 継続可能な形で, これからも進んでいけるように, Perl入学式もしっかりやっていきたいと思います. 2018年のPerl入学式も, どうぞよろしくお願い致します.