こんにちは。
WEBソリューション事業部 佐藤です。

以前、社内での勉強会の様子をご紹介しましたが、
今回は、プログラミング系の勉強会を企画しているM係長に、
社内勉強会を始めた経緯を聞いてみました。

勉強会

■佐藤
現在、社内のプログラミング系の勉強会としては「初級コース」「中級コース」「上級コース」があって、私は「上級コース」の勉強会に参加しているのですが、勉強会の企画者として、どういう意図でこういう3つのコース別にされているのですか?

■M係長
全研にはコーディングやデザインができる社員は多いのですが、スキルアップの為にPHPを勉強したいという要望が複数ありました。それに答える形で、初級コース「PHP基礎勉強会」を始めました。プログラムは初めてだけどHTMLやCSSは理解しているというのが前提条件です。初級コースということで敷居が低いためか参加希望の社員は意外と多く、今は第3期のメンバーの勉強会を行っています。内容はPHPの基礎、MySQLの基礎を習い、成果物としてメールフォームの作成、CMSの作成、ログインフォームまでを実習します。毎回課題も出されます。実習環境としてはeclipseとXAMPPを使います。

■佐藤
初級コースで工夫していることは何ですか?

■M係長
勉強会を始める前に皆さんにヒアリングを行った結果、「PHP入門」系の本は手にとってみたけど挫折した、という方ほとんどでした。ですので、“市販のどんな入門書よりもわかりやすく”を心がけています。テキストは画面キャプチャを多用したオリジナルテキストで、テキストの通りに手順を踏んでやれば、どんな初心者でもプログラミング実習が体験できるようにしてあります。
また参加メンバーには皆勤を要請しています。初級コースは1回でもとばしてしまうとつまずいてしまうことが多いので。それでも急な仕事で参加できないメンバーももちろんいます。そのようなメンバーには後日、補講を行うなどしています。

■佐藤
諦めずに続けることが大事なんですね。中級コースはどうして作られたんですか?

■M係長
最初は初級と上級の2コースでやっていたのですが、やっているうちに初級コースの「PHP基礎勉強会」を修了するメンバーが出てくるわけです。中級コースの「CakePHP勉強会」はその初級コースの修了者を対象に、もう少しPHPを勉強したい、実際に業務で使うためにPHPフレームワークを使えるようになりたい、という要望を受ける形で始めました。フレームワークとしてはZendFrameworkとCodeIgniterも教えられるのですが、日本で一番ユーザが多く書籍も豊富なCakePHPを選びました。このコースは実際にどのようなWebサービスを作りたいのかを具体的にイメージできているメンバーが受講者ですので、メンバーから講師に対しての要望も多く出ますが、それはそれで刺激になります。(笑)

デザインパターンの本

■佐藤
私も参加している「上級コース」というのはどういう位置づけなんですか?

■M係長
初級コースの「PHP勉強会」や中級コースの「CakePHP勉強会」は、プログラマーがプログラマーではないメンバーのスキルアップの目的で企画してあります。つまり言ってみれば初級と中級は「サービスサービス♪」(byミサトさん)なんです。(笑)
だからプログラマーである佐藤君は初級コースや中級コースは出る必要がないでしょう?

■佐藤
確かに、私はPHPならすでに出来ますし、CakePHPも、もしわからなければ自分で勉強出来ますしね。

■M係長
プログラマーであれば、自分自身で言語の本を読んだりWEBで情報を得て自分で解決しますから、いちいち勉強会に出る必要はありませんし、集団で基本的な内容をゆっくり進むような勉強会はかえって非効率ですよね。
プログラマーが新しい技術をキャッチして、要点をお互い発表し合う技術交換的な勉強会は意味があることなんですが、これは開催が単発です。
そこで、何かプログラマーが毎回ちょっとずつ長期に渡って勉強できるようなテーマで何かいいものがないかなぁと考えて企画したのが、上級コースの「デザインパターン勉強会」なんです。つまりプログラマーのプログラマーによるプログラマーの為の勉強会です。

■佐藤
私も今まさにこの上級コースの勉強会に参加して、4つ目のデザインパターン(Factory Method)を習っているところです。デザインパターンを勉強するメリットは何なのか、簡単に教えて頂けますでしょうか。

■M係長
デザインパターン理解のメリットは次の4つがあげられると思います。

①先人の良い設計法の真似ができ、プログラムの再利用性が向上する
②プログラムの保守性が向上する
③デザインパターンを理解している開発者同士のコミュニケーションが容易になる
④オブジェクト指向をより深く理解できる

今、ライブラリやフレームワークなどは当然のようにオブジェクト指向で組まれていますので、オブジェクト指向の深い理解や、オブジェクト指向を使った設計手法を、先人のノウハウから学ぶことはプログラマーとしては重要なことです。将来的には佐藤君とY田君(2013年度新卒入社予定の内定者)には上級プログラマーとして、初級プログラマーの書いたコードの問題点を指摘して直せるようになってもらいたいですからね。
上級コースの勉強会では、デザインパターンを習う前に、基礎であるオブジェクト指向プログラミングを2ヶ月くらいかけてやりました。クラス図の理解は必須ですので、UML図の見方と書き方も覚え、今はオブジェクト指向の基礎を終えて、デザインパターンに入り、4番目のデザインパターンを勉強しているところです。

M係長とY田君

■佐藤
デザインパターンはどんな言語でも使えるんですか?

■M係長
本家のGoF本は確かC++とJavaのサンプルが載っているのですが、デザインパターンというのは特定の言語に依存しているのではなく、オブジェクト指向を使える言語であれば、RubyでもPHPでもObjective-Cでも使えます。なぜならばそれはオブジェクト指向を使ったクラス設計の考え方ですから。PHPもバージョンが5以降ではかなり本格的なオブジェクト指向が使えるようになりました。勉強会ではPHPのコードをメインにJavaのコードをサブとして使っています。なので、今後JavaやObjective-CやRubyを勉強した場合でも、デザインパターンは共通で使えるプログラミング知識になるわけです。
つまりデザインパターンは即効性はないけど、遅効性はあるプログラマーとしての教養のようなものと考えて、二人も我慢して最後まで付き合ってください。(笑)

■佐藤
はい、付き合います。(笑)
M係長はいつ頃からデザインパターンを勉強されたんですか?

■M係長
いや実は私もデザインパターンを勉強するのは今回が初めてです。昔Javaを勉強した時にデザインパターンの本は買ったのですが、その時はデザインパターンまでは結局やらずじまいで。今回この勉強会で取り上げたのは一人で勉強するより仲間と一緒に勉強するほうが長続きするかなと思って始めたというのが本音です。

■佐藤
なんだそうだったんですか(笑)

■M係長
もうひとりの参加メンバーのY田君は、このあいだまで理系の大学院生だったけど、大学では「デザインパターン」って習った?

■Y田
JavaとかRubyとかCとはやりましたけど、デザインパターンまではやらなかったですね。

上級者コースの様子

■M係長
普通そうだよね、そもそも自分が大学生(30年以上前)のころはFORTRANしか習わなかったし(笑)

■佐藤
今後はどういった言語系の勉強会を企画されていますか?

■M係長
4月以降は、「Objective-Cの勉強会」をぜひ始めたいですね。これはc言語がベースになるので、かなり上級者向きなんですが。
あと、今後はフロントエンジニア養成が必須という状況ですので、JavaScriptの勉強会が重要になってくると思います。これはすべてのコーダーが対象になりますね。特にJavaScriptは現在、佐藤君やY田君がプロジェクトでどっぷり浸かってやっているから、私より詳しいと思うのでぜひ講師役をやってもらえるといいなと思います。特に佐藤君はこの前からCacooの社内勉強会の講師もやっているし……。

■佐藤
わかりました、考えておきます。(笑)
それでは、今日はこのへんで!
WEBソリューション事業部 佐藤でした。