KLab若手エンジニアの これなぁに?

KLab株式会社の若手エンジニアによる技術ブログです。phpやRubyなどの汎用LLやJavaScript/actionScript等のクライアントサイドの内容、MySQL等のデータベース、その他フレームワークまで幅広く面白い情報を発信します。

交流会・勉強会

2013年ALM12月レポート

皆さんこんにちは!
 

本日のALM最初の発表タイトルは、『エンジニアと上手に付き合うための7の法則~入社してから学んだこと~』です!
 

毎回恒例のEM枠ですが、今回はエンジニア職でない企画職からの大抜擢でした!ひとつのおもしろいゲームを創る上で、
企画も開発もクリエイティブも一丸となってプロジェクトを進めることが必要ですが、このときお互いがお互いの仕事をよく理解し、
歩み寄ることが重要です。

企画職は、ただゲームの企画を出すだけでなく、エンジニアやクリエイティブの取りまとめも求められるので、
彼らの特徴や性格を理解することも大事ですよね!
特に弊社のエンジニアは、能力もバックグラウンドも様々で非常に個性的な人が多く、彼らのタイプ別け
分析(主観による)は非常におもしろかったです!
 

この知見を是非企画職の間でも広めて、今後もより良い開発・運営を行っていければいいなと思います。



----------------------------------------------------------------------------------------------------------------


ALM2番目の発表タイトルは、『勤怠くんWPつくりました』です!


皆さん、WindowsPhoneが今熱いことをご存じですか?
 

というのも、これまではAndroidやiPhoneに注目が集まっており、アプリ開発が加熱していました。
しかし、現在はWindowsPhoneも徐々にそのシェアを伸ばし、アプリも他のスマートフォンより少ないことから、
魅力的なマーケットになりつつあるとことです。
 

そんなWindowsPhoneの魅力を紹介したうえで、勤怠アプリを実際に作って紹介してくれました!KLabでは、
有給休暇や遅刻などの勤怠連絡をするとき、所定のフォーマットにそって連絡する決まりになっているのですが、
その操作を簡便にするのが勤怠アプリ『勤怠くん』です!

このアプリ制作を継起に、社内でのWindowsPhoneファンを増やし、活発な議論とWindowsPhoneの社内地位確立に
むけて奮闘していかれることを期待しています!
 



----------------------------------------------------------------------------------------------------------------


10月のALM自作ゲームエンジン
 

前回はどうやって自作ゲームエンジンを用いて3Dをレンダリングするのかという解説でしたが、今回はボーンを
使用したアニメーションの解説でした。
 

3Dモデルはメッシュという三角形の集合で表現され、それにボーンという行列情報を設定し、アニメーションを行います。

ボーンによるアニメーションは全ての頂点に対して行う必要があり、CPUで行うにはコストがかかります。

そこでGPUを用いることにより、演算のコストを下げます。

Matrix Palatteを使用してGPUで計算を行うことができるのですが、この方法では使用できるボーン数に制限が付きます。
 

一方で、Vertex TextureやCUDAを使用すればボーン数の上限はなくなりますが使用できる環境に制限がつくのでそう
簡単には利用できないようです。
 

次回も予定されているようですのでご期待ください!


----------------------------------------------------------------------------------------------------------------


ALM4番目の発表タイトルは、『新卒のぼくがプロジェクトマネジメントについてちょっと考えてみた~システムダイナミクスを
用いたプロジェクト管理モデルの構築~
』です!
 

現在KLabでは、IR情報でも公開されているように、マネジメント層の不足が社内的に問題だと指摘されています。
マネジメント層は増やそうとしても、なかなかピンポイントですぐ増えるものはなく、何とか社内的に工夫しながら
この点を埋め合わせていくことが求められています。
 

そこで提案されたのが、システムダイナミクスを用いてプロジェクト管理をするというものです。
システムダイナミクスを用いて一度シミュレーションモデルを作ると、プロジェクト管理をダイナミックに振る舞いを
とらえ
ながら管理することが可能になるということです。シミュレーションモデル自体も矢印を追いかけるだけで、
全体の構造と因果関係が掴めるので、比較的理解しやすく、議論の場となることも期待されます。
 

プロジェクトマネジメントのようなマクロな事象を、モデルを使って議論しながら客観的に判断出来る点はとても
魅力的ですよね!

今後さらに、より本質的でより客観的なシミュレーションモデルを構築に向けてがんばってください!



----------------------------------------------------------------------------------------------------------------


ALM最後の発表タイトルは、『ドメイン駆動設計の実践例〜スキル発動編〜』です!
ドメイン駆動設計という言葉、最近エンジニアブログやSlideShareなどでもよく耳にするようになりました。
宇津さんの発表はそんな「ドメイン駆動設計」に関する発表です。

ドメイン駆動設計が活躍するのは、複雑な問題に着手する時です。なお、複雑でない問題に対してこのアプローチを
取るとコストに見合わないので、プロジェクトにおいて複雑である問題(ドメイン)を見定めて適用すべきとのことです!

噛み砕いた仕様を再構築してユビキタス言語化し、単語に分解していって仕様書には書かれていない考慮すべき
情報をみつけていったり、噛み砕いた仕様を再構築して言語化しモデルを作りコードに落としこんで行く流れを、
実際に開発しているゲームのスキル発動を例に上げて紹介してくれました。

次回も、発表も楽しみにしています! 



2013年11月ALMレポート

皆さんこんにちは。zhang-yiです。

上田さん『KnockoutJS』についてレポートします。

KnockoutJSはMVVM(Model-View-ViewModel)パターンのフレームワークです。

今回はKnockoutJSのコア機能の1つである、双方向データバインディングについて発表されました。

ViewModelを更新したら、自動でViewも更新されます。同じように、Viewに表示しているデータをinputなどで変更すると、ViewModelにも反映されます。

KnockoutJSはいろいろなバインディングがあって、そして組み込みバインディングでは処理できない場合、カスタムバインディングの作成もできます。

バインディングの仕組みを紹介した後、実装の例もあげられました。KnockoutJS初心者に分かりやすい発表でした。


--------------------------------------------------------------------------------------------------------------------



皆さんこんにちは!fumino-yです!

本日のALM2つ目の発表タイトルは、『Openframeworks+Node.js 的な何か (勉強会レポ) OR user script 作ってみた』です!


発表の大きな趣旨は、全てのプルリクエストに「いいね」出来るスクリプトを作ってみたというものです。Facebookからはじまったいいね機能ですが、今のSNSコミュニケーションにはなくてはならないものとなっています。そんなコミュニケーションツールが色々なところに出てくるのは、純粋に楽しいですよね!

こんな素敵な便利ツールをJavaScriptで実装してくれたのですが、実装した本人は実はJSが大の苦手だったのに、努力して克服したというから驚きです!そんな姿勢は見習わないといけないと、ひしひしと感じました。

最後に開発において、とても示唆に富むメッセージを残してくれました。それは「苦手なことをするときは、みんなでやる、楽しくやる、リリースする」というものです。

誰にでも苦手はありますし、いいものを作ろうと思うと、やはり誰かの助けは絶対に必要です。そういった要素を含め、最後はちゃんとリリースすることにこだわることの大事さは、非常に説得力がありました。

本日は素敵な発表、ありがとうございます!


--------------------------------------------------------------------------------------------------------------------



こんにちはhosono-sです。

毎月行われているALM(All Layer Meeting)

11月はpaperboy&co.さんと一緒にJavaScript特集!


その中のiizuka-kさんから『FirefoxOS一問一答』についてレポートします!


FirefoxOSってどんな感じのOS?

これはFirefoxOSに触ったことがない人すべての人が思う疑問だと思います。

全てがHTML5でできているということから私も普通のスマホのようなことはできないのかなー

とか思っていたら大間違いでしたw

実は写真やブラウザ・ミュージックプレイヤー等はプリインストール済!

実機も見せていただきましたが低スペックながらもサクサク動いております


Mozillaが中心のコミュニティが作ってるんだから英語しか使えないんじゃ・・・

実は日本語UIはほぼ完成しているっぽい。ただ日本語はデフォルトは入っているわけではなく

ビルド時にオプションを指定する必要がある模様


ここまで聞いたらアプリ開発のお話も聞きたくなってきますね!

開発環境はお好きなIDE・エディタを選んで大丈夫だそうです

必要なのはmanifestファイルだけ

エミュレータはFireFoxブラウザのアドオンである『AppManager』をインストールすればOK


CSSやjavaScriptが書けなくても大丈夫

Firefox OS Building BlockといったTwitter Bootstrap的なUIコンポーネントや

AppMakerといったXCodeのStoryBoard的なサービスもあるようです。


レポートは以上です

素敵な発表ありがとうございました!!


--------------------------------------------------------------------------------------------------------------------



続きまして

土谷さんの発表をレポートしたいと思います!

表題は『Hoodieでノーバックエンド開発』!


なんとこのHoodieというライブラリ一切バックエンド開発をしなくてもよいとのこと

えっ!?って感じですよね。

開発自体は2013年4月から始まっているらしく、まだ本番投入できる状況ではないものの

おもしろい試みですよね


仕組みをざっくり紹介してくれました。

オフライン対応でローカルストレージやCouchDBと自動的に同期してくれる仕組みになっているらしく

それをフロント側で意識せずにコード書けるようになっているらしく、データ更新やビューの同期もやってくれるようです。


さらにさらに1行でサインインやログインとユーザの操作系が書けるらしいです。すごい・・・


macの場合の導入方法は

Gitとnode.jsとCouchDBが入っていればOKで、後はhoodie-cliをnpmでインストールするだけでよいそうです。

※実はnodeのバージョンに制限があるそうなのでご注意を


実際にサンプルで作ったブログアプリを見せて頂きましたが、バックエンドはしっかり自動生成されてました・・・すごい・・・



レポートは以上になります

素敵な発表ありがとうございました!


--------------------------------------------------------------------------------------------------------------------



続きまして

佐藤雄一さんの発表もレポートしちゃいたいと思います。

表題は『Amber Smalltalk with Three.js』!


簡単なカウントするアプリを見せて頂きました!

やはりそこはSmalltalk、デモ状態からインタラクティブに実装していただきました


実はjavaScriptとSmalltalkは親和性が高い

jQueryの形のオブジェクトで取ってくるとSmalltalkごにょごにょできるらしい・・・

o0(ごにょごにょってなんだろ・・・)


ごにょごにょして頂きました!

先ほどデモして頂いたアプリでjQueryを書くとインタラクティブで操作することができました。

Canvasオブジェクトを使えるらしいです


デモがほとんどでレポート上では上手く伝えるのは難しいですが

とにかくあらゆる所をインタラクティブに操作可能のようです


是非皆さんも試してはいかがでしょうか?


レポート以上です

素敵な発表ありがとうございました!


--------------------------------------------------------------------------------------------------------------------



皆さんこんにちは。fukuda-yです。

Paperboy&Co.の近藤様の発表を紹介したいと思います。


Middlemanの特徴と簡単なチュートリアルについて発表していただきました。

静的サイトジェネレータのMiddlemanの特徴として

他のジェネレータに比べて

・対応言語がおおい

・拡張プラグインがおおい

という利点があるそうです。

Knockout.jsを簡単に試す例なども紹介していただきました。

スライドの所々にRuby好きを感じるポイントが散りばめられており

楽しく発表を聞かせていただきました。


http://www.storyboards.jp/viewer/nu1uql


--------------------------------------------------------------------------------------------------------------------



皆さんこんにちは。sawa-sです。

丸山亮「Webフロントエンドパフォーマンスチューニング」についてレポートします

Webフロントエンドをどうやって高速にしていくか、ツール紹介、高速化のポイントなどをネットワークアクセス、JavaScript実行、レンダリングなどさまざまな視点から紹介をしてくれました。

内容の密度も高く、ところどころで笑いの上がる発表ともなり、今回ALMの最優秀の発表に選ばれました。


https://speakerdeck.com/h13i32maru/webhurontoendopahuomansutiyuningu


2013年10月ALMレポート(Go言語編)

こんにちはurushihara-sです。

KLabエンジニア特集、Go言語枠「私と勉強会(上田拓也さん)」の発表紹介をします


Go言語はGoogle開発のコンパイラ言語で、KLab社内でも活発に勉強会が行われています。


go

Go言語の特徴や、使う理由として

・シンプルな文法・設計であること

・ゴールーチンとチャネルの存在

・豊富なライブラリ群があること

が挙げられていました。


上田さんはGo言語関連の勉強会で2ヶ月に10を超える勉強会で発表・主催しており、

発表や運営に積極的に関わることでより知識を深めることができるとのことでした。


ALMもそのような場の一つとして、今後も定期的な開催を続けていきたいと思います

次回のALMレポートもお楽しみに。


2013年10月ALMレポート(3Dゲームエンジン編)

こんにちはyamada-yです。

ALM10月の発表の一つをご紹介いたします。


発表内容は個人で開発中のマルチプラットフォーム対応の3Dゲームエンジンの解説です。

  • Shader

    • 3DはCPUではなくCoreを多く搭載しているGPUを使用して計算する

    • GPUのクセを使用したチューニングを行う

    • Vertex Shader - 回転や拡大縮小などを行う

    • Fragment Shader - 頂点に色を塗る

  • Math - 高度な数学が必要と思われがちですが高校数学で勉強したことが使えます。

    • Vector

    • Matrix

    • Quaternion

  • Model Loader

Shaderの書き換えを行い3Dモデルの位置・色・拡縮をライブコーディングで変更して見せてくれました。

環境マッピング、ボーンアニメーションの実装を計画中だそうです。


次回のレポートもお楽しみに!

2013年10月ALMレポート(天下一編)

こんにちは、エンジニアの澤です。

10/22に開催されたKLabの社内勉強会ALM(All Layer Meeting)にて、「天下一プログラマーコンテストの裏舞台」についての発表を行いました。

天下一プログラマーコンテストとは?

KLabがAtCoder社と協力して開催しているガチンコの競技プログラミングコンテストです。今年は、8月から予選が始まり9月14日に決勝が行われました。

天下一プログラマーコンテスト2013

それでは、ALMで発表した内容についてご紹介します。


天下一プログラマーコンテストの舞台裏(運営編)

発表者: 2013新卒 ___Johniel

そもそも、競技プログラミングって何?

  • 問題に対する速さや正確さを競う。本コンテスト以外にも、ARC、ACM/ICPC、TopCoder SRMなどが有名。

運営の主なお仕事

  • 原案制作、解答制作、問題文制作、入出力データ制作、本番対応など。
  • 問題原案は、タイトルから、ストーリーから、解法から考える方法がある。
  • 本番対応が、運営のお仕事のおもしろいところ。予選、本戦中に参加者からの質問や、アクシデントに対して対応する。

天下一プログラマーコンテストの舞台裏(問題編)

発表者:2013新卒 澤

天下一プログラマーコンテスト2013決勝で出題された問題を題材に、プログラミングコンテストの基本的な問題の解法について解説を行いました。

「全探索」について

  • 安易だけど、さまざまな場面で使える。

「動的計画法」について

  • サイズの小さい問題の答えを使って、順々に大きい問題を解いていく手法。
  • 全探索できない問題を短い計算時間でとけることがある。
  • コンテストでも、コンテスト以外のプログラミングでも頻出。

解答にたどり着くための考え方について

  • 問題のサイズが小さければ、全パターン試せば良い。
  • 問題のサイズが大きい場合、数字が小さい場合の問題を考えると、その答えや、解き方がヒントになる。

若手エンジニアブログでは、引き続きALMのレポートをしていきます。お楽しみに!

 KLab若手エンジニアブログのフッター