第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時間有意義な時間を過ごすことができました。

フィリピン人スタッフによるプレゼン

image1数か月前から当社では毎月テーマを決めてフィリピン人スタッフによるプレゼンを行っています。5月のテーマは「How to Increase Productivity(without use money)」というもので、ようはお金を使わず生産性を上げるにはどうするか、ということです。

なんとなく多かったのは、

・仕事を好きになる

・モチベーションを上げる

・自己管理

的な気持ち的なものが多く、「それはいいけどどうやるの?」と思う事も少なくありませんでした。

もう少し具体的なものでいいなと思ったのは、

・言葉や文化の違いがあるので、ちょっとでも疑問な事はどんどん質問する

・朝ミーティングを行い仕事の優先順位を確認する。(今朝ミーティングは廃止されています。)

・何にどのくらい時間を使っているか記録する(丁度工数管理のシステムを準備中でした。)

など。

前者の気持ち的なものも、それが出来るなら良いと思うので、まずは各自そうなってもらえるよう促しつつ、経営としてサポートしていきたいと思います。

 

 

はじめてのOUTING

13178800_10204587738972583_9220982973877768176_n日本がGWの5/5~6にOUTING(所謂社員旅行)に行ってきました。
日本だと最近はあまり流行らない社員旅行かとは思いますが、ここ
フィリピンでは年1でのOUTINGが必須といってもいいと思います。
(ただし、泊まりでなく日帰りでも良いそうです。)

うちは日本のクライアントからのお仕事がほとんどのため、
日本が稼働日の時は休みにくいので、GWの間に行かさせて頂きました。

行き先は「Pico de Loro」。マニラの南、バタンガスです。
http://hamilocoast.com/membership-page/pico-de-loro-beach-country-club

途中マニラ近郊の避暑地と言われるタガイタイでランチを食べ、
しばらく自由行動がありました。

馬に乗ったりFish Spaを楽しむスタッフもいました。
はじめての異国でのOUTINGでいろいろ不備もありましたが、
少なくともローカルスタッフは普段食べるよりもいいものを
食べられたはずですし、ビーチとエアコンのある部屋でリフレッシュ
出来たのではないかと思います。

来年はもう少し企画を詰めて実のある内容にしたいと思いました。
(あまりやると日本の社員旅行みたいに嫌がられそうですが。)

写真はスタッフが撮っていたものをこっそり拝借。。

越境ECなどで注目される個人間決済・送金サービス

最近日本からフィリピンにいらっしゃる方の中には、日本→海外、海外→日本でものを販売する、いわゆる越境ECに取り組んでいたり、興味をお持ちの方が目立ち始めました。
Paypalで一気に身近になった個人間の決済サービスが充実してきたことがひとつの要素なのでしょう。

最近のニュースでは日本から海外への送金に関しては、以前よりも難しくなってきているようです。たとえば日本からフィリピンへの海外送金で有名なウエスタンユニオンは、とても
便利で、送金手続きして数分で現金が受け取れるため、フィリピン在住日本人は多くの方が使っていますが、日本からの送金時にはマイナンバーが必要で、フィリピンでの受け取り
には、パスポートとフィリピン政府発行のIDが必要となるようになりました。

このこと自体は特に問題ないのですが、フィリピンで生活する中で便利さを感じた個人間課金・送金
一つ目はGcash。

Gcashとはフィリピン最大の携帯電話キャリアGlobeが提供している個人間送金の通貨で、携帯で完結する手続きで発行される番号を送るだけで送金できるサービス。チャージも
セブンイレブンやショッピングモールなどで簡単にできます。Gcash Master Debit CardはGcashをマスターカード加盟店でどこでも支払いに利用できるデビットカードです。
最近ショッピングモールなどでブースを出して会員を募っており、即時カード発行してくれます。フィリピンの運転免許証を使ってほんの10分ほどで作成できました。
(パスポートのみで日本在住の方が作成できるかは未確認です。)

フィリピンではクレジットカードはおろか銀行口座を持たない人も多い国ですが、少しづつオンラインEC等でカードの需要が増えてきており、今後爆発的に流行する可能性もあり、
Gcashは現金がないとき対面での個人間のお金のやりとりの際にも利用されるようになることも可能性としては十分あり、居住者の方は簡単に作れるうちに作っておくといいかもしれません。

ちなみにこのGcash Master Debit CardにはBeepというマークが入っていますが、これはフィリピンの高架高速鉄道LRT1、LRT2、MRTの3本の鉄道で利用できる、日本で言う
パスモやスイカなどのIC機能で、駅にある端末でチャージすれば、いちいち切符売り場に並ばなくても改札が通れるようになります。
続いて、Payoneer。

こちらはフィリピンに来た当初から自分の空き部屋を提供するために利用していた民泊マッチングサービスAirbnbがホスト向けへの代金支払いに採用したことで知った送金サービスで、
USのアマゾンAmazon.comでの販売者も受け取りに利用できるサービスです。なおクレジットカード決済なら、だいたいどのような請求でも個人向けに請求ができるので、最近日本向け
にトライアルしている越境ECでもクレジットカード決済手段としてPayoneerを利用し、スムーズにいっています。即時請求でき、決済完了したら約2~3営業日で受け取りできています。
なお、PayoneerでもMasterデビットカードを発行しており、ATMなどで現金で受け取れますし、カード利用もできます。
最後に、Bitcoin。

暗号通貨Bitcoinは非常に簡単かつ驚くほど安い手数料で送金が可能なため知られるようになりました。ビットコインの価値変動が現状激しいため、投機対象として興味を持つ方が
多い現状ですが、国の境目がどんどん薄れてきている昨今、国に関係なく流通できる通貨というのは今後ニーズが高まることが容易に予想できます。ビットコインの詳細は専門家に
任せるとして、Bitcoin関連で面白いサービスは、やはりデビットカードで、e-coin.ioのビットコインデビットカードはUKのサービスですが、17ドルでいとも簡単に発行されます。
ちなみにCoin.phというフィリピンのビットコインウォレットならGcashでビットコインが購入できますので、Gcashをビットコインデビットカードに移動してしまえば、銀行なしでワールドワイドに
使える通貨プールを所有することができるといえます。
最近フィンテック(Finance + Technology)と呼ばれるビジネス分野に注目、投資が集まっており、
個人間の国をまたいだ決済・送金サービスについては、今後イノベーティブなモデルが出てきそうです。
(写真:Gcash Master Debit Cardが即時発行される街角のブース)unnamed

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

コーディング実績

弊社はシステム開発がメインの会社なのですが、去年末くらいからコーディングのご依頼を頂く事が増えてきました。自社のサービスも進めて行きたいと考えていますので、社内に何名かコーダーを雇用しています。

いくつかご紹介できる実績が出来ましたので、ここでご紹介させて頂きます。

りらく

1.りらく様 (https://riracle.com/)

システムも含む、ホームページのフルリニューアルを担当させて頂きました。ブランド名の切り替えで、コーポレートサイト含むリニューアルでしたが、1か月今日の短納期でリリース出来ました。

 

ots

2.オンコセラピー・サイエンス様(http://www.oncotherapy.co.jp/)

こちらはシステム開発はありませんが、Wordpressにて更新頻度の高いページを更新しやすいように組み込みつつ、コーディングさせて頂きました。

弊社の規模のシステム開発会社ではコーディングをやらないところが多いようで、それが一緒に出来るとデザイン変更に柔軟に対応できるというメリットがあります。

コーディングだけでももちろん構いませんが、コーディングも含めたシステム案件のご用命をお待ちしております!

 

フィリピン人のDIY精神の結晶

フィリピンに数年住んでいると、フィリピンの人々のある点に気付きます。
それは・・・何でも自分で作ってしまうDIY精神。

屋台、ショーウインドウなども手作り、家の屋上にさらに建屋を作るなんていうのも
家族の中で器用な人が自分で作ってしまいます。

ただし、クオリティは高くなく、壊れたら直せばいいやという感覚。とはいえ、だからこそ
面白いものが生まれることもあり、日本とはまた違ったものづくり精神をときに感じます。

電子機器すらも、黒檀などの素材でオリジナルデザインのものを作ってしまうツワモノも・・・。
最近マニラで流行っているのが、チェーンではない独立系のハンバーガー屋さんです。
牛肉かどうかもわからないペラペラのハンバーグが挟まったものが主流だったフィリピンのハンバーガー
屋台事情ですが、この2、3年で大きく変化し、リーズナブルでとてもおいしいハンバーガー屋台が
続々登場しています。なかには200ペソで直径30CMほどの巨大なハンバーガーを販売しているお店も
あり、ハンバーガー屋台巡りも楽しい今日このごろ。

お勧めのハンバーガー屋台はいくつかあるのですが、今回紹介するのは、Shaw bourvardという場所の
裏通りにあったハンバーガー屋台。

フィリピンの発音でショーボリバード。オルティガスとともにIT企業やコールセンターなどが集まり、
フィリピン人の平均年収の倍以上を稼ぐ優秀な若者が多く働くエリアです。

ベーコン、チーズなどをトッピングしたChunky burger 100ペソ(約220円)をオーダー。
見るからにハンバーガー好きだろ!という体型のスタッフが、オーダー後丁寧に作ってくれます。
100%ビーフの触れ込みには偽りなく、とてもジューシーで肉を堪能できる味わい。

近所の仲間と、こんなハンバーガーあったらいいよな!と盛り上がってお店にしてしまったであろう
ことは間違いありません。

マニラIT飲み会

3月3日(木)に第3回マニラIT飲み会が開催されました。
平日にも関わらず30名以上の方々が参加されました。
今回のプレゼンター

CREATIVEHOPE PH INC.

北川さんによる、フィリピンにおける人材採用事情と求人媒体活用法
のお話をしていただきました。

IMG_20160303_201507

個人的にも仲良くさせていただいてる北川さん
非常に求人関係の事を勉強されていて大変勉強になりました。

そんなCREATIVEHOPE PH INC.様の新しいサービスがこちらになります。

https://jobgantic.com/

10299218_10154012020083817_1032621124_n

 

 

 

 

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に対応させたのですが、予想していたよりもかなり簡単に対応できたことがとても驚きでした。

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