第2回社内勉強会

先日弊社で2回目の社内向け勉強会を実施しました。弊社のエンジニア・コーダー全9名が参加しました。

今回の内容は以下のような感じです。前回と比べるとだいぶ増えましたね。

 

1) 社内のプロジェクトで使っている技術の紹介 Node.js

2) 新技術の紹介 PHP7 & CakePHP3

3) CakePHP2ソースコードリーディング

4) WebセキュリティTip

5) アルゴリズムクイズ

 

最初にプレゼンをしたのは弊社のトップエンジニアのアレックスです。彼はフロントエンド・バックエンドともに得意なオールラウンドプレイヤーで、新技術にも常にアンテナを張っている勉強家です。先日はスマホアプリの開発でも活躍してくれました。

弊社が関わっているとあるサービスにチャット機能があり、そこでNode.jsが使われています。彼はその設計と実装に一から関わったのですが、社内でも多くの技術者がNode.jsに関心を持っているようでしたので、今回発表してもらうことにしました。

study_meeting_2_01

彼はSocket.ioなどのNode.jsの主要な機能のメリットを分かりやすく説明してくれただけでなく、このプレゼンのためにデモまで用意してくれました。デモはシンプルなチャットアプリで、Node.jsの特徴を直感的に理解してもらえたのではと思います。

 

二つ目のプレゼンもふたたびアレックスです。今度はPHP7を紹介してもらいました。

PHP7は高速化と省メモリ化されただけでなく、便利なシンタックスが多数導入されました。

特に印象深いのは関数の引数と戻り値に型を定義できるというところです。ここ最近の流れとしては動的型付け言語は書きやすくていいんだけれども、型チェックでコードが散らかってしまうとか、型をチェックするためのテストばかりでめんどくさいねという風に型の重要性に気づいてきて、静的型付けに回帰してきているような気がします。これからはより型を意識した実装を心がけて型安全なプログラムを書いていきたいですね。

PHP7が正式リリースされてから半年ほど経ちましたが、実案件でも使われるケースが少しづつ増えてきているようですので、弊社としても新しい技術をできるだけ早くキャッチアップできるよう今回特別に調査し発表する機会を設けました。

 

三つ目のプレゼンは弊社トップクラスのエンジニアのゴッドフリーです。彼は学習能力、仕様理解力、実装力が高く、多数のプロジェクトに参画し数々の困難な要求を実現してきました。

今回はCakePHP3を紹介してもらいました。

study_meeting_2_03

CakePHP3は2と比べて大幅にアーキテクチャが変わりました。ModelからORMに変わりAPIがSQLライクの流れるインターフェースになりました。サブクエリも比較的簡単に実行できるようになっているようです。

個人的には生のSQLを直接書くのが一番いいと思っているのですが、とはいうものの一対多の関連を持つデータの処理は面倒なので、その辺りを解消してくれるORMは高速な開発には欠かせないものです。そのため今回の変更はいい方向に向かっているなと思いました。また関数型言語の影響か、ORMで取得したデータに対してMapやReduceでループを使わずに処理ができるようになっているのもいいですね。

 

四つ目のプレゼンは私の番で、CakePHP2のソースコードリーディングを行いました。

study_meeting_2_04Webアプリケーションフレームワークを使用する大きな理由の一つとして横断的関心事の分離があるかと思いますが、そこから派生してCakePHPのコア機能であるイベントシステムの解説を行い、それをどのように活用したら保守性の高いプログラムが書けるかという話をしました。

横断的関心事というのは直感的に分かりづらい用語のため、図や実例を用いてなるべく分かりやすくなるよう心がけました。後半の質疑応答では色々な質問や意見が出て実りのあるものになったように思います。また図を描くことでフレームワークのソースコードを読み解きやすくなることが、少しでも理解してもらえたら幸いです。

 

五つ目のプレゼンも私で、WebセキュリティTipを実演を交えて解説しました。

study_meeting_2_05

今回のお題はSQLインジェクションでした。最近新たに入社した社員が数名いましたので、重要性を改めて知ってもらうためにこの内容にしました。
ソースコードを見せてクイズ形式で脆弱性を探してくださいという感じでやってみると、参加者にとっても考えるきっかけになるので、これはいい方法だなと思いました。

ということで、今回はみっちり2時間有意義な時間を過ごすことができました。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中