SlideShare une entreprise Scribd logo
1  sur  29
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
meetup app tokyo@1
Web MVC+SPAフレームワーク
Mithril
2016/06/24
GDI 渋川よしき
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
お前だれよ?
 前職
⁃ 自動車会社の社内SE
 現職
⁃ 社内ゲームエンジン用のフレームワーク
(クライアント用もサーバ用も)作ったり、
開発支援ツール作ったりいわゆる社内SE
⁃ 最近はQt(C++)を毎日書いてます
渋川 よしき
 プログラミング
 C++とかPythonとかGolangとかJavaScriptとか
 本
 つまみぐい勉強法、アート・オブ・コミュニティ(翻訳)、
Mobageを支える技術、オブジェクト指向JavaScript(翻訳)、
ポモドーロ・テクニック入門(翻訳)、etc
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
昨年出しました!
 JavaScriptの、最速クライアント用MVCフレームワークの本です!
⁃ 速いのが好きな人や、変化が多いブラウザ周辺技術に疲れた人に
オススメ
⁃ 古くなってません!
 電子書籍のみです
 表紙は黒ムツの仲間
⁃ 南オセアニアの深海魚
⁃ 最大75cm
⁃ 確認された最高齢は
100歳を超えるとか
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
かんたん/Easy/Simpleについて
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
かんたん/Easy/Simpleについて
 かんたん/Easy/Simpleといった言葉がよく使われる
 ソフトウェアのライブラリ・フレームワーク・言語は特定の問題の解決
をしやすくするために作られる
→対象を限定すればどのソフトウェアも「かんたん」で説明できる
→つまり何も説明していないのと同じ
 例えば
⁃ Qt/Xamarin
• 1度GUI作成を学べば、同じ知識で他のOSのアプリも「かんたんに」作れる
⁃ Angular
• 束縛が強いため、レールに乗って「かんたんに」MVCアプリが作れる
⁃ Electron
• ブラウザの知識があれば「かんたんに」デスクトップアプリが作れる
⁃ C++
• ゼロオーバーヘッドでC言語よりも遅くないコードが「かんたんに」作れる
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
かんたん/Easy/Simpleについて
 かんたん/Easy/Simpleといった言葉がよく使われる
 ソフトウェアのライブラリ・フレームワーク・言語は特定の問題の解決
をしやすくするために作られる
→対象を限定すればどのソフトウェアも「かんたん」で説明できる
→つまり何も説明していないのと同じ
 例えば
⁃ Qt/Xamarin
• 1度GUI作成を学べば、同じ知識で他のOSのアプリも「かんたんに」作れる
⁃ Angular
• 束縛が強いため、レールに乗って「かんたんに」MVCアプリが作れる
⁃ Electron
• ブラウザの知識があれば「かんたんに」デスクトップアプリが作れる
⁃ C++
• ゼロオーバーヘッドでC言語よりも遅くないコードが「かんたんに」作れる
かんたん/Easy/Simpleは今日のNGワード
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Mithrilとは
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Mithrilとは
 ドキュメントの日本語翻訳あります!
 http://mithril-ja.js.org
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Mithrilの守備範囲
V-DOM
Router (SPA)
Component XHR
サーバへの通信コード含めて
Mithrilで完結
ビジュアル層は好きなCSS
フレームワーク等が利用可能
(ただしPolymerはChrome限定)
その他、既存のUIライブラリも
使える(jQuery UI系など)
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Mithrilのコア
 機能が絞りこまれたアトミックなWebのMVC+SPAフレームワーク
⁃ 他のライブラリに依存せずにアプリが作れる
• サーバ通信、非同期処理(promise)、モデル作成、SPAサポート(ラウター)
仮想DOM、コンポーネント
⁃ gzipされた状態で7.8KBほどの大きさ
• リファレンスに乗っている関数は16個ほど
• そのうちよく使うのは半分ぐらい?
• 本を書き始めてから1年以上、バグ修正等で更新は頻繁にあるが、
ほとんどAPIに変更がない
 内部では仮想DOMという仕組みを使っていて比較的高速
⁃ 詳細は「最速MVCフレームワークMithril.jsの速度の秘密」(Qiita)
⁃ 速度チューニングも可能だが、そこまで頑張る必要性が低い
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Mithrilアプリケーションの構造
実際に作ったアプリケーションを参考に紹介します。
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
 戦魂 –SENTAMA-
戦国時代がモチーフの戦略シミュレーションRPG
開発の目線での紹介はこちら
(http://www.slideshare.net/dena_study/unityrpg)にまとまって
います
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
戦魂チーム向けの運用改善
 マスターデータ運用は、昨年のFINAL FANTASY Record Keeperのマ
スターデータ運用改善で発表したのと同じ仕組みは導入済みだった
 スプレッドシートでは表現が難しく入力⇔確認に手間がかかるデータが
2つほどあったのでElectronを使って入力補助ツールを作成した
⁃ 戦場マップ
⁃ 列伝(キャンペーンモード)のオープニングシーケンス
 これらを題材に、Mithrilアプリケーションの構造を紹介します
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
できあがったもの
 今までのワークフローに手を入れることはなく入力高速化にフォーカス
⁃ Mithril同様、アトミックな部分に割りきって、費用対効果最大化
⁃ コピペ・ツールチェーン(後工程のスプレッドシートにコピペで
データを移せるように、整形した表を表示)
⁃ 試行錯誤の時間が増えて、よりユーザに楽しんでもらえる演出、
マップづくりに時間が使えるようになった
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Mithrilアプリケーションの基本設計 (1)
 HTMLの一部をMithrilの仮想DOM管理下にする
⁃ m.mount(): 1つのコンポーネントに描画を任せる
⁃ m.route(): 現在のURLに応じてコンポーネントを切り替える
 全部を仮想DOMにまかせてしまうのも可だが、ヘッダー、フッターな
ど変化しない部分は静的HTMLのままの方が楽
 複数パートに分割適用もできる(した)
m.route()
m.mount()
m.mount()
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
できあがった構造
main.js
application
context.js
script/index.j
s
script/
xxx page.js
script/
xxx page.js
script/
xxx page.js
script/viewm
odel.js
script/model
.jswindow
open
undo/redo
script/
canvasmap.js
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Mithrilアプリケーションの基本設計(2)
 コンポーネント、ビューモデル、モデルでアプリを組み立てる
⁃ コンポーネントはコントローラとビューで構成
• どちらも状態は持たない
• コンポーネントは入れ子にできる
⁃ ビューモデルは編集中のデータなど永続化しないデータ持つ
⁃ モデルは永続化するべき大事なデータを持つ
• VMとMの機能分けは規約でそうなっているだけでAPI上は1つにまとめるこ
とも不可能ではない
• それどころか、コントローラ==モデルにすることもAPI上は不可能ではな
いが、上記の規約に従う方がよい
• クラス継承等でコード的にルール強制されるわけではないので、自分で
Mithril Wayに従ってコードを整理しなければいけない点は要注意
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
戦場マップエディタのコンポーネント・ビュー(1)
 各ページのトップはコンポーネント
 よく使うマップ部分もコンポーネント化した
⁃ <canvas>タグをm()で作り、ビューのconfigから、
requestAnimationFrame()の再帰的呼び出しでcanvas更新
⁃ 引数でモード切り替え
• モードによって要素のフィルタリング・サイズ変更など
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
戦場マップエディタのコンポーネント・ビュー(2)
 ビューの一部に、仮想DOM以外のライブラリを併用することが可能
⁃ 既存のUI部品資産があれば、それを利用できる
 表はMITライセンス版のhandsontableを使用
⁃ ビューのconfigの機能を使って適用
⁃ 行・列のどちらの方向もExcelっぽく選択でき、コピペでExcelにそ
のまま貼れる
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
シングルページアプリケーションのサポート
 画面の完全リロードやリセットが起きなくなり、レスポンスがよくなる
 Mithrilの場合は、フルリロードの従来型ウェブアプリケーションも、
SPAにする場合も、コードは特に変わらないので対応しない理由はない
 URLのスタイルがいくつか選べる
 今回はデフォルトのまま利用
スタイル 例 デメリット
“search” (デフォルト) http://server/?/path/to/page history.pushStateがないIE8ではリフレッシュ
してしまう
“hash” http://server/#/path/to/page どのブラウザでもOKだが、名前付きアン
カーが使えなくなる
“pathname” http://server/path/to/page URLは一番きれいだが、サーバ側の設定が必
要
history.pushStateがないIE8ではリフレッシュ
してしまう
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
おまけ: Electron側の描画側ではない方のプロセス
 ブラウザ/レンダラプロセス間のインタラクションを疎にしつつ、普通
のデスクトップアプリの使い勝手を再現した
⁃ Electronのブラウザプロセス側のコードはモデルの履歴管理と、
ファイル入出力に特化する。
⁃ ブラウザがXHRでサーバ通信する代わりに、編集(モデル変更)時に
レンダラープロセスがJSONをブラウザプロセスに送る
⁃ ファイル読み込み、アンドゥ・リドゥ実行時にブラウザプロセスか
ら、今表示すべきモデルを
レンダラープロセスに送り、
Mithrilのモデルをリセット
⁃ 詳しくはQiitaの「Electron+
Mithrilで、ふつうのデスク
トップアプリを作る」参照
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
ちなみに
 餃子声優 橘田いずみさん(@izugyoza)の餃子本
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
Mithrilのアプリの構造と完全に一致
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
橘田いずみさんの餃子のコア
 アトミックな餃子フレームワーク
⁃ 限界まで絞りこまれたシンプルな材料
• 豚肉・青ネギ・生姜のみ
• ニンニクもニラも使わず、豚肉を混ぜるときは箸で行う
⁃ 夕食以外も安心して食べられる
⁃ 爪の手入れをしている女性にも優しそう
⁃ これに、各種野菜などをアドオンして餡を仕上げる
• 単に混ぜるだけなので、肉餡をたくさん作ってから小分けにして、一度に
数種類の餃子を仕上げることも可能
 高いポータビリティ
⁃ 肉餡の状態の状態でも保存ができるし、餃子にしても保存が可能
Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
まとめ
 MithrilはアトミックなMVC+SPAフレームワーク
⁃ 関数の数が少なく、余計な機能がないため、APIの変更もほぼない
⁃ デスクトップGUI開発者も勉強になりますよ!
 CSSフレームワークは自由に切り替えられる
⁃ 僕のお気に入りはMaterial Design Lite (mithril-mdl)
⁃ ShadowDOMが来たらPolymerが・・・
 コンポーネントの分割、ビューモデル、モデルの責務分割が勝利の鍵
⁃ データの流れを整流
 既存のUIライブラリと一緒に使ったり、canvas
を組み込んだりもできます
 Electronと一緒に使うのも簡単
⁃ 社内ツールを作ってみた
 餃子と同じぐらいMithrilもいいよ

Contenu connexe

Tendances

Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6信之 岩永
 
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~UnityTechnologiesJapan002
 
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityUniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityYoshifumi Kawai
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#Yoshifumi Kawai
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)denatech2016
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践Yoshifumi Kawai
 
A Framework for LightUp Applications of Grani
A Framework for LightUp Applications of GraniA Framework for LightUp Applications of Grani
A Framework for LightUp Applications of GraniYoshifumi Kawai
 
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechconYosaku Toyama
 
Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋智啓 出川
 
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMKoichi Sakata
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphonedena_study
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術dena_study
 
FFRK cocos2d xレイヤーの最適化
FFRK cocos2d xレイヤーの最適化FFRK cocos2d xレイヤーの最適化
FFRK cocos2d xレイヤーの最適化dena_study
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容sairoutine
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...Yoshifumi Kawai
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてdena_study
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能Yoshifumi Kawai
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法モノビット エンジン
 

Tendances (20)

Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
 
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
【Unite Tokyo 2019】大量のアセットも怖くない!~HTTP/2による高速な通信の実装例~
 
UniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for UnityUniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for Unity
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 
Bluetoothでgo!
Bluetoothでgo!Bluetoothでgo!
Bluetoothでgo!
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 
A Framework for LightUp Applications of Grani
A Framework for LightUp Applications of GraniA Framework for LightUp Applications of Grani
A Framework for LightUp Applications of Grani
 
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
爆速でAndroidアプリを ビルドするための仕組み DeNA TechCon #denatechcon
 
Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋Fortranが拓く世界、VSCodeが架ける橋
Fortranが拓く世界、VSCodeが架ける橋
 
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
 
Effective web performance tuning for smartphone
Effective web performance tuning for smartphoneEffective web performance tuning for smartphone
Effective web performance tuning for smartphone
 
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
 
FFRK cocos2d xレイヤーの最適化
FFRK cocos2d xレイヤーの最適化FFRK cocos2d xレイヤーの最適化
FFRK cocos2d xレイヤーの最適化
 
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
 
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
 
FINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについてFINAL FANTASY
 Record Keeper 演出データについて
FINAL FANTASY
 Record Keeper 演出データについて
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
 
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
 

En vedette

Go & multi platform GUI Trials and Errors
Go & multi platform GUI Trials and ErrorsGo & multi platform GUI Trials and Errors
Go & multi platform GUI Trials and ErrorsYoshiki Shibukawa
 
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Yoshiki Shibukawa
 
社内の画像変換サーバーをGoで置き換えた話
社内の画像変換サーバーをGoで置き換えた話社内の画像変換サーバーをGoで置き換えた話
社内の画像変換サーバーをGoで置き換えた話aoi shirase
 
[C++ GUI Programming with Qt4] chap6
[C++ GUI Programming with Qt4] chap6[C++ GUI Programming with Qt4] chap6
[C++ GUI Programming with Qt4] chap6Picker Weng
 
Advanced file permissions in linux
Advanced file permissions in linuxAdvanced file permissions in linux
Advanced file permissions in linuxMohit Singh
 
Who is the person whom the IT engineers should learn next to Alexander?
Who is the person whom the IT engineers should learn next to Alexander?Who is the person whom the IT engineers should learn next to Alexander?
Who is the person whom the IT engineers should learn next to Alexander?Yoshiki Shibukawa
 
TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?
TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?
TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?FlashAirデベロッパーズ
 
お前なんかハッカーじゃない╭( ・ㅂ・)و ̑̑
お前なんかハッカーじゃない╭( ・ㅂ・)و ̑̑お前なんかハッカーじゃない╭( ・ㅂ・)و ̑̑
お前なんかハッカーじゃない╭( ・ㅂ・)و ̑̑Seiji Takahashi
 
[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話株式会社YEBIS.XYZ
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Yasutaka Kawamoto
 
Python Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingPython Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingRanel Padon
 
File permission in linux
File permission in linuxFile permission in linux
File permission in linuxPrakash Poudel
 
【初心者向け】Go言語勉強会資料
 【初心者向け】Go言語勉強会資料 【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料Yuji Otani
 
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについてC++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについてMasahiko Nakamura
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using GolangSeongJae Park
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術dena_study
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
何故DeNAがverticaを選んだか?
何故DeNAがverticaを選んだか?何故DeNAがverticaを選んだか?
何故DeNAがverticaを選んだか?Kenshin Yamada
 

En vedette (20)

Go & multi platform GUI Trials and Errors
Go & multi platform GUI Trials and ErrorsGo & multi platform GUI Trials and Errors
Go & multi platform GUI Trials and Errors
 
Excelの話
Excelの話Excelの話
Excelの話
 
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014
 
社内の画像変換サーバーをGoで置き換えた話
社内の画像変換サーバーをGoで置き換えた話社内の画像変換サーバーをGoで置き換えた話
社内の画像変換サーバーをGoで置き換えた話
 
大規模JavaScript開発
大規模JavaScript開発大規模JavaScript開発
大規模JavaScript開発
 
[C++ GUI Programming with Qt4] chap6
[C++ GUI Programming with Qt4] chap6[C++ GUI Programming with Qt4] chap6
[C++ GUI Programming with Qt4] chap6
 
Advanced file permissions in linux
Advanced file permissions in linuxAdvanced file permissions in linux
Advanced file permissions in linux
 
Who is the person whom the IT engineers should learn next to Alexander?
Who is the person whom the IT engineers should learn next to Alexander?Who is the person whom the IT engineers should learn next to Alexander?
Who is the person whom the IT engineers should learn next to Alexander?
 
TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?
TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?
TOSHIBAxGUGEN FlashAirハッカソン-FlashAirでなに作る?
 
お前なんかハッカーじゃない╭( ・ㅂ・)و ̑̑
お前なんかハッカーじゃない╭( ・ㅂ・)و ̑̑お前なんかハッカーじゃない╭( ・ㅂ・)و ̑̑
お前なんかハッカーじゃない╭( ・ㅂ・)و ̑̑
 
[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話[Golang] Go言語でサービス作ってる話
[Golang] Go言語でサービス作ってる話
 
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
 
Python Programming - XIII. GUI Programming
Python Programming - XIII. GUI ProgrammingPython Programming - XIII. GUI Programming
Python Programming - XIII. GUI Programming
 
File permission in linux
File permission in linuxFile permission in linux
File permission in linux
 
【初心者向け】Go言語勉強会資料
 【初心者向け】Go言語勉強会資料 【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
 
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについてC++コードはいらない!UE4で作るお手軽マルチプレイネットワークゲームについて
C++コードはいらない!UE4で作るお手軽マルチプレイ ネットワークゲームについて
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
 
FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術FFRKを支えるWebアプリケーションフレームワークの技術
FFRKを支えるWebアプリケーションフレームワークの技術
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
何故DeNAがverticaを選んだか?
何故DeNAがverticaを選んだか?何故DeNAがverticaを選んだか?
何故DeNAがverticaを選んだか?
 

Similaire à Mithril

3DCAD仮想デスクトップソリューションのご紹介
3DCAD仮想デスクトップソリューションのご紹介3DCAD仮想デスクトップソリューションのご紹介
3DCAD仮想デスクトップソリューションのご紹介Dell TechCenter Japan
 
オールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組みオールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組みKazuto Ohara
 
App Modernization for .NET
App Modernization for .NETApp Modernization for .NET
App Modernization for .NETYuta Matsumura
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割Toru Yamaguchi
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Katsunori Kanda
 
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Daizen Ikehara
 
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用Shinichi Tomita
 
XenDesktop / XenAppグラフィック ディープダイブ
XenDesktop / XenAppグラフィック ディープダイブ XenDesktop / XenAppグラフィック ディープダイブ
XenDesktop / XenAppグラフィック ディープダイブ Citrix Systems Japan
 
Jslug2 nagoya-shibata
Jslug2 nagoya-shibataJslug2 nagoya-shibata
Jslug2 nagoya-shibataNaoki Shibata
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例agileware_jp
 
C++ AMPを使ってみよう
C++ AMPを使ってみようC++ AMPを使ってみよう
C++ AMPを使ってみようOsamu Masutani
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~Yuki Ando
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介Yuta Matsumura
 
デスクトップエンジニアという働き方
デスクトップエンジニアという働き方デスクトップエンジニアという働き方
デスクトップエンジニアという働き方Hiroshi Oyamada
 
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発信之 岩永
 
Essentials of container
Essentials of containerEssentials of container
Essentials of containerToru Makabe
 
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみたタクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみたTetsutaro Watanabe
 

Similaire à Mithril (20)

3DCAD仮想デスクトップソリューションのご紹介
3DCAD仮想デスクトップソリューションのご紹介3DCAD仮想デスクトップソリューションのご紹介
3DCAD仮想デスクトップソリューションのご紹介
 
オールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組みオールアバウトにおける技術への取り組み
オールアバウトにおける技術への取り組み
 
App Modernization for .NET
App Modernization for .NETApp Modernization for .NET
App Modernization for .NET
 
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechconDeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
DeNA内製ゲームエンジンの現状と目指す未来 #denatechcon
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山
 
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話
 
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
Net advantage 2012 volume2 最新情報 xaml プラットフォーム編
 
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
モバイルHTML5サイトでの写真アップロードの最適化と業務アプリへの適用
 
XenDesktop / XenAppグラフィック ディープダイブ
XenDesktop / XenAppグラフィック ディープダイブ XenDesktop / XenAppグラフィック ディープダイブ
XenDesktop / XenAppグラフィック ディープダイブ
 
Jslug2 nagoya-shibata
Jslug2 nagoya-shibataJslug2 nagoya-shibata
Jslug2 nagoya-shibata
 
とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例とあるメーカーのRedmine活用事例
とあるメーカーのRedmine活用事例
 
C++ AMPを使ってみよう
C++ AMPを使ってみようC++ AMPを使ってみよう
C++ AMPを使ってみよう
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)今こそ知りたいSpring Web(Spring Fest 2020講演資料)
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
 
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
 
デスクトップエンジニアという働き方
デスクトップエンジニアという働き方デスクトップエンジニアという働き方
デスクトップエンジニアという働き方
 
Windows 8時代のアプリ開発
Windows 8時代のアプリ開発Windows 8時代のアプリ開発
Windows 8時代のアプリ開発
 
Essentials of container
Essentials of containerEssentials of container
Essentials of container
 
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみたタクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
 

Plus de Yoshiki Shibukawa

技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料Yoshiki Shibukawa
 
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料Yoshiki Shibukawa
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみたYoshiki Shibukawa
 
Oktavia Search Engine - pyconjp2014
Oktavia Search Engine - pyconjp2014Oktavia Search Engine - pyconjp2014
Oktavia Search Engine - pyconjp2014Yoshiki Shibukawa
 
Expert JavaScript Programming
Expert JavaScript ProgrammingExpert JavaScript Programming
Expert JavaScript ProgrammingYoshiki Shibukawa
 
JavaScriptゲーム制作勉強会
JavaScriptゲーム制作勉強会JavaScriptゲーム制作勉強会
JavaScriptゲーム制作勉強会Yoshiki Shibukawa
 
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」Yoshiki Shibukawa
 
つまみぐい勉強法。その後。
つまみぐい勉強法。その後。つまみぐい勉強法。その後。
つまみぐい勉強法。その後。Yoshiki Shibukawa
 
Sphinx Tutorial at BPStudy#30
Sphinx Tutorial at BPStudy#30Sphinx Tutorial at BPStudy#30
Sphinx Tutorial at BPStudy#30Yoshiki Shibukawa
 
1日~1週間でOSSに貢献する方法
1日~1週間でOSSに貢献する方法1日~1週間でOSSに貢献する方法
1日~1週間でOSSに貢献する方法Yoshiki Shibukawa
 
コンカツ女子のためのIT技術者の落とし方
コンカツ女子のためのIT技術者の落とし方コンカツ女子のためのIT技術者の落とし方
コンカツ女子のためのIT技術者の落とし方Yoshiki Shibukawa
 

Plus de Yoshiki Shibukawa (20)

技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
技術書執筆のススメ 〜Only1なエンジニアになるためのセルフブランディング〜の発表資料
 
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料
GO本執筆者が語る、2064年もITで仕事し続けるためのキャリアプランの発表資料
 
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
 
Oktavia Search Engine - pyconjp2014
Oktavia Search Engine - pyconjp2014Oktavia Search Engine - pyconjp2014
Oktavia Search Engine - pyconjp2014
 
Xpjug基調lt2011
Xpjug基調lt2011Xpjug基調lt2011
Xpjug基調lt2011
 
Expert JavaScript Programming
Expert JavaScript ProgrammingExpert JavaScript Programming
Expert JavaScript Programming
 
JavaScriptゲーム制作勉強会
JavaScriptゲーム制作勉強会JavaScriptゲーム制作勉強会
JavaScriptゲーム制作勉強会
 
Pomodoro technique
Pomodoro techniquePomodoro technique
Pomodoro technique
 
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
ドキュメントを作りたくなってしまう魔法のツール「Sphinx」
 
Bitbucket&mercurial
Bitbucket&mercurialBitbucket&mercurial
Bitbucket&mercurial
 
つまみぐい勉強法。その後。
つまみぐい勉強法。その後。つまみぐい勉強法。その後。
つまみぐい勉強法。その後。
 
Erlang and I and Sphinx.
Erlang and I and Sphinx.Erlang and I and Sphinx.
Erlang and I and Sphinx.
 
Sphinx Tutorial at BPStudy#30
Sphinx Tutorial at BPStudy#30Sphinx Tutorial at BPStudy#30
Sphinx Tutorial at BPStudy#30
 
1日~1週間でOSSに貢献する方法
1日~1週間でOSSに貢献する方法1日~1週間でOSSに貢献する方法
1日~1週間でOSSに貢献する方法
 
儲かるドキュメント
儲かるドキュメント儲かるドキュメント
儲かるドキュメント
 
コンカツ女子のためのIT技術者の落とし方
コンカツ女子のためのIT技術者の落とし方コンカツ女子のためのIT技術者の落とし方
コンカツ女子のためのIT技術者の落とし方
 
Chashitsu And Pattern
Chashitsu And PatternChashitsu And Pattern
Chashitsu And Pattern
 
EUnit in Practice(Japanese)
EUnit in Practice(Japanese)EUnit in Practice(Japanese)
EUnit in Practice(Japanese)
 
Django_and_GTD
Django_and_GTDDjango_and_GTD
Django_and_GTD
 
FortranからPythonへ
FortranからPythonへFortranからPythonへ
FortranからPythonへ
 

Dernier

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Dernier (7)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

Mithril

  • 1. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. meetup app tokyo@1 Web MVC+SPAフレームワーク Mithril 2016/06/24 GDI 渋川よしき
  • 2. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. お前だれよ?  前職 ⁃ 自動車会社の社内SE  現職 ⁃ 社内ゲームエンジン用のフレームワーク (クライアント用もサーバ用も)作ったり、 開発支援ツール作ったりいわゆる社内SE ⁃ 最近はQt(C++)を毎日書いてます 渋川 よしき  プログラミング  C++とかPythonとかGolangとかJavaScriptとか  本  つまみぐい勉強法、アート・オブ・コミュニティ(翻訳)、 Mobageを支える技術、オブジェクト指向JavaScript(翻訳)、 ポモドーロ・テクニック入門(翻訳)、etc
  • 3. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 昨年出しました!  JavaScriptの、最速クライアント用MVCフレームワークの本です! ⁃ 速いのが好きな人や、変化が多いブラウザ周辺技術に疲れた人に オススメ ⁃ 古くなってません!  電子書籍のみです  表紙は黒ムツの仲間 ⁃ 南オセアニアの深海魚 ⁃ 最大75cm ⁃ 確認された最高齢は 100歳を超えるとか
  • 4. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. かんたん/Easy/Simpleについて
  • 5. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. かんたん/Easy/Simpleについて  かんたん/Easy/Simpleといった言葉がよく使われる  ソフトウェアのライブラリ・フレームワーク・言語は特定の問題の解決 をしやすくするために作られる →対象を限定すればどのソフトウェアも「かんたん」で説明できる →つまり何も説明していないのと同じ  例えば ⁃ Qt/Xamarin • 1度GUI作成を学べば、同じ知識で他のOSのアプリも「かんたんに」作れる ⁃ Angular • 束縛が強いため、レールに乗って「かんたんに」MVCアプリが作れる ⁃ Electron • ブラウザの知識があれば「かんたんに」デスクトップアプリが作れる ⁃ C++ • ゼロオーバーヘッドでC言語よりも遅くないコードが「かんたんに」作れる
  • 6. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. かんたん/Easy/Simpleについて  かんたん/Easy/Simpleといった言葉がよく使われる  ソフトウェアのライブラリ・フレームワーク・言語は特定の問題の解決 をしやすくするために作られる →対象を限定すればどのソフトウェアも「かんたん」で説明できる →つまり何も説明していないのと同じ  例えば ⁃ Qt/Xamarin • 1度GUI作成を学べば、同じ知識で他のOSのアプリも「かんたんに」作れる ⁃ Angular • 束縛が強いため、レールに乗って「かんたんに」MVCアプリが作れる ⁃ Electron • ブラウザの知識があれば「かんたんに」デスクトップアプリが作れる ⁃ C++ • ゼロオーバーヘッドでC言語よりも遅くないコードが「かんたんに」作れる かんたん/Easy/Simpleは今日のNGワード
  • 7. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Mithrilとは
  • 8. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Mithrilとは  ドキュメントの日本語翻訳あります!  http://mithril-ja.js.org
  • 9. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Mithrilの守備範囲 V-DOM Router (SPA) Component XHR サーバへの通信コード含めて Mithrilで完結 ビジュアル層は好きなCSS フレームワーク等が利用可能 (ただしPolymerはChrome限定) その他、既存のUIライブラリも 使える(jQuery UI系など)
  • 10. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Mithrilのコア  機能が絞りこまれたアトミックなWebのMVC+SPAフレームワーク ⁃ 他のライブラリに依存せずにアプリが作れる • サーバ通信、非同期処理(promise)、モデル作成、SPAサポート(ラウター) 仮想DOM、コンポーネント ⁃ gzipされた状態で7.8KBほどの大きさ • リファレンスに乗っている関数は16個ほど • そのうちよく使うのは半分ぐらい? • 本を書き始めてから1年以上、バグ修正等で更新は頻繁にあるが、 ほとんどAPIに変更がない  内部では仮想DOMという仕組みを使っていて比較的高速 ⁃ 詳細は「最速MVCフレームワークMithril.jsの速度の秘密」(Qiita) ⁃ 速度チューニングも可能だが、そこまで頑張る必要性が低い
  • 11. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
  • 12. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Mithrilアプリケーションの構造 実際に作ったアプリケーションを参考に紹介します。
  • 13. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
  • 14. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.  戦魂 –SENTAMA- 戦国時代がモチーフの戦略シミュレーションRPG 開発の目線での紹介はこちら (http://www.slideshare.net/dena_study/unityrpg)にまとまって います
  • 15. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 戦魂チーム向けの運用改善  マスターデータ運用は、昨年のFINAL FANTASY Record Keeperのマ スターデータ運用改善で発表したのと同じ仕組みは導入済みだった  スプレッドシートでは表現が難しく入力⇔確認に手間がかかるデータが 2つほどあったのでElectronを使って入力補助ツールを作成した ⁃ 戦場マップ ⁃ 列伝(キャンペーンモード)のオープニングシーケンス  これらを題材に、Mithrilアプリケーションの構造を紹介します
  • 16. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. できあがったもの  今までのワークフローに手を入れることはなく入力高速化にフォーカス ⁃ Mithril同様、アトミックな部分に割りきって、費用対効果最大化 ⁃ コピペ・ツールチェーン(後工程のスプレッドシートにコピペで データを移せるように、整形した表を表示) ⁃ 試行錯誤の時間が増えて、よりユーザに楽しんでもらえる演出、 マップづくりに時間が使えるようになった
  • 17. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Mithrilアプリケーションの基本設計 (1)  HTMLの一部をMithrilの仮想DOM管理下にする ⁃ m.mount(): 1つのコンポーネントに描画を任せる ⁃ m.route(): 現在のURLに応じてコンポーネントを切り替える  全部を仮想DOMにまかせてしまうのも可だが、ヘッダー、フッターな ど変化しない部分は静的HTMLのままの方が楽  複数パートに分割適用もできる(した) m.route() m.mount() m.mount()
  • 18. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. できあがった構造 main.js application context.js script/index.j s script/ xxx page.js script/ xxx page.js script/ xxx page.js script/viewm odel.js script/model .jswindow open undo/redo script/ canvasmap.js
  • 19. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Mithrilアプリケーションの基本設計(2)  コンポーネント、ビューモデル、モデルでアプリを組み立てる ⁃ コンポーネントはコントローラとビューで構成 • どちらも状態は持たない • コンポーネントは入れ子にできる ⁃ ビューモデルは編集中のデータなど永続化しないデータ持つ ⁃ モデルは永続化するべき大事なデータを持つ • VMとMの機能分けは規約でそうなっているだけでAPI上は1つにまとめるこ とも不可能ではない • それどころか、コントローラ==モデルにすることもAPI上は不可能ではな いが、上記の規約に従う方がよい • クラス継承等でコード的にルール強制されるわけではないので、自分で Mithril Wayに従ってコードを整理しなければいけない点は要注意
  • 20. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 戦場マップエディタのコンポーネント・ビュー(1)  各ページのトップはコンポーネント  よく使うマップ部分もコンポーネント化した ⁃ <canvas>タグをm()で作り、ビューのconfigから、 requestAnimationFrame()の再帰的呼び出しでcanvas更新 ⁃ 引数でモード切り替え • モードによって要素のフィルタリング・サイズ変更など
  • 21. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 戦場マップエディタのコンポーネント・ビュー(2)  ビューの一部に、仮想DOM以外のライブラリを併用することが可能 ⁃ 既存のUI部品資産があれば、それを利用できる  表はMITライセンス版のhandsontableを使用 ⁃ ビューのconfigの機能を使って適用 ⁃ 行・列のどちらの方向もExcelっぽく選択でき、コピペでExcelにそ のまま貼れる
  • 22. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. シングルページアプリケーションのサポート  画面の完全リロードやリセットが起きなくなり、レスポンスがよくなる  Mithrilの場合は、フルリロードの従来型ウェブアプリケーションも、 SPAにする場合も、コードは特に変わらないので対応しない理由はない  URLのスタイルがいくつか選べる  今回はデフォルトのまま利用 スタイル 例 デメリット “search” (デフォルト) http://server/?/path/to/page history.pushStateがないIE8ではリフレッシュ してしまう “hash” http://server/#/path/to/page どのブラウザでもOKだが、名前付きアン カーが使えなくなる “pathname” http://server/path/to/page URLは一番きれいだが、サーバ側の設定が必 要 history.pushStateがないIE8ではリフレッシュ してしまう
  • 23. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. おまけ: Electron側の描画側ではない方のプロセス  ブラウザ/レンダラプロセス間のインタラクションを疎にしつつ、普通 のデスクトップアプリの使い勝手を再現した ⁃ Electronのブラウザプロセス側のコードはモデルの履歴管理と、 ファイル入出力に特化する。 ⁃ ブラウザがXHRでサーバ通信する代わりに、編集(モデル変更)時に レンダラープロセスがJSONをブラウザプロセスに送る ⁃ ファイル読み込み、アンドゥ・リドゥ実行時にブラウザプロセスか ら、今表示すべきモデルを レンダラープロセスに送り、 Mithrilのモデルをリセット ⁃ 詳しくはQiitaの「Electron+ Mithrilで、ふつうのデスク トップアプリを作る」参照
  • 24. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. ちなみに  餃子声優 橘田いずみさん(@izugyoza)の餃子本
  • 25. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
  • 26. Copyright (C) DeNA Co.,Ltd. All Rights Reserved.
  • 27. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. Mithrilのアプリの構造と完全に一致
  • 28. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. 橘田いずみさんの餃子のコア  アトミックな餃子フレームワーク ⁃ 限界まで絞りこまれたシンプルな材料 • 豚肉・青ネギ・生姜のみ • ニンニクもニラも使わず、豚肉を混ぜるときは箸で行う ⁃ 夕食以外も安心して食べられる ⁃ 爪の手入れをしている女性にも優しそう ⁃ これに、各種野菜などをアドオンして餡を仕上げる • 単に混ぜるだけなので、肉餡をたくさん作ってから小分けにして、一度に 数種類の餃子を仕上げることも可能  高いポータビリティ ⁃ 肉餡の状態の状態でも保存ができるし、餃子にしても保存が可能
  • 29. Copyright (C) DeNA Co.,Ltd. All Rights Reserved. まとめ  MithrilはアトミックなMVC+SPAフレームワーク ⁃ 関数の数が少なく、余計な機能がないため、APIの変更もほぼない ⁃ デスクトップGUI開発者も勉強になりますよ!  CSSフレームワークは自由に切り替えられる ⁃ 僕のお気に入りはMaterial Design Lite (mithril-mdl) ⁃ ShadowDOMが来たらPolymerが・・・  コンポーネントの分割、ビューモデル、モデルの責務分割が勝利の鍵 ⁃ データの流れを整流  既存のUIライブラリと一緒に使ったり、canvas を組み込んだりもできます  Electronと一緒に使うのも簡単 ⁃ 社内ツールを作ってみた  餃子と同じぐらいMithrilもいいよ