第1回社内勉強会

先日弊社で初めて社内向け勉強会を開催しました。

現状の弊社の教育体制について少しお話ししますと、基本的に入社後1〜2週間ほど研修期間を設けていまして、その間に弊社でメインで使われる技術(PHPフレームワーク)を勉強してもらい、その後はOJTで業務をしながら学んでもらうというやり方をとっています。

しかしながら最近は少し所帯が大きくなってきていることや、使う技術がプロジェクトによって異なるケースが増えてきていることもあり、各自の技術力の向上や引き継ぎを容易にするためにも社内で使っている技術を全体にシェアした方がいいと思うようになってきました。

また開発における問題解決能力や論理的思考能力を養い技術者の基礎体力を向上させることで、生産性をより一層向上させる必要性も感じていたため、勉強会を開催する運びとなりました。

1回の内容は以下の通りとなります。

  1. Monacaの紹介
  2. CakePHPのソースコードリーディング
  3. アルゴリズムのプログラミング課題(宿題)

ひとつめのMonacaですが、アシアル株式会社が開発しているハイブリッドなスマホアプリを開発できるツールとなります。弊社でも幾つかのプロジェクトで採用しています。

Monaca詳細につきましては以前に書いた記事をご覧ください。

こちらが勉強会で使用したスライドです。

今回はMonacaの紹介ということでさほど深いところまでは話していなかったのですが、参加者からは多くの質問が出てきて予想以上に盛り上がりました。

 

ふたつめは弊社で普段使用しているCakePHPというWebフレームワークのソースコードリーディングを行いました。CakePHPRuby on Railsの影響を受けて作られたフレームワークで、高機能で習得がしやすいのが特徴です。

PHPはオブジェクト指向も使えるプログラミング言語ですが、フレームワークを使って開発をしているとあまりオブジェクト指向を意識しないでも開発ができるので、ある意味メリットといえばメリットなのですが、技術の基礎体力という意味で言いますと実用的なケースを参考に理解をしておくほうがいいといいと感じています。他にもリフレクションを用いた依存性の注入や、ORマッパーでのSQLの生成過程を通じたDSLの作成方法などフレームワーク開発におけるスタンダードを比較的高品質なコードで学べるとともに、有用な関数や変数などをソースを読むことで知ることができたりと、ソースコードリーディングを通して得られるものは多いと感じています。

こちらがスライドです。実際にはこれに加えてシーケンス図やソースコードを見せながら解説をしました。

sequence_diagram_cakephp_routing

今回はCakePHPのルーティングに焦点を当ててリーディングを行いましたが、次回以降はコントローラやモデル、それ以外の機能についても見ていこうと思っています。

実際にやってみた感想としては、CakePHPを長く使っている人ほど得るものが多かったように感じました。今後何か新しいライブラリやフレームワークを学ぶときの一助となればと思います。

次回は5月に開催の予定となりますが、弊社のエンジニアにもなにかプレゼンをしてもらう予定です。結果については、後日この場を借りてご報告させてもらおうと思います。

広告

Monacaでモバイルアプリ開発

弊社では現在Webアプリ開発のほかスマホアプリの開発も行なっております。

スマホアプリの開発をする場合は一般的に、iOSではObjective-CもしくはSwift、AndroidではJavaを使うかと思いますが、弊社ではMonacaという和製の開発環境を使っています。MonacaはWebの技術(HTML、CSS、JavaScript)だけでiOS/Androidの両方に対応したアプリを同一のソースコードで作成できるのが大きな特徴です。

今回はMonacaの特徴とメリット・デメリットについて書こうと思います。

特徴

  • クロスプラットフォームに対応しiOS/Android/Windows/Google Chromeのアプリの作成が可能
  • Apache CordovaプラグインによりカメラやGPSといったネイティブの機能へのアクセスが可能
  • Local StorageやWebSQLデータベースを使用することでアプリ上にデータの保存が可能
  • スマホアプリのUIを簡単に作成できるOnsenUIが使用可能
  • MonacaのクラウドIDEを使うことでWebブラウザだけで開発が可能
  • MonacaのLocalkitを使うことでローカルで好きなエディタを使って開発が可能
  • Push通知などのバックエンド機能はNifty Cloud Mobile Backendなどが利用可能
  • Monaca Debuggerを使うことで実機がなくても動作確認が可能

 

メリット

  • クロスプラットフォームに対応しているため、例えばiOSとAndroidの両方に対応したアプリをひとつのソースコードから生成でき、開発工数を大幅に短縮できる
  • Webの技術を使って開発できるので、Webのバックグラウンドがある人にとっては技術の習得にかかる時間が少なくて済む
  • アプリのビルドはMonacaのリモートサーバで行えるため、ビルド環境を自前で構築する必要がない(MacがなくてもiOSアプリのビルドができる)
  • Webの開発工程(デザイン→HTMLコーディング→実装)と同様の工程で開発できるので、スマホアプリ開発専用の人材を新たに確保する必要がない

 

デメリット

  • ネイティブアプリと比べると速度面で劣るため、ゲームなど高いパフォーマンスを必要とするアプリは不得意
  • ネイティブ機能が使えるかどうかはCordovaプラグインの対応状況に依存する(Cordovaには1000近いプラグインが登録されているので大抵の機能には対応していると思われるが、最新の機能への対応はネイティブと比べると遅い)
  • サードパーティのCordovaプラグイン(Facebook、AdMobなど)を使う場合は有料会員になる必要があり、それなりに維持費がかかる(年額2・5・8万円の3プラン)

 

半年間ほど自社の開発でMonacaを使ってみましたが、おおむね満足いく機能で開発も快適に行えました。特に弊社で開発しているとあるアプリは最初にAndroid専用として作成した後、iOSに対応させたのですが、予想していたよりもかなり簡単に対応できたことがとても驚きでした。

今後はスマホアプリ開発のノウハウなどについてもいろいろと書いていこうと思います。