プログラミング生放送勉強会 第28回@東北大学 終了!
2014/5/31、プログラミング生放送勉強会 第28回@東北大学 を開催しました。参加・視聴された皆さんありがとうございました!
- 告知ページ → 5/31 プログラミング生放送勉強会 第28回@東北大学 開催!
- Togetter → 5/31 プログラミング生放送勉強会 第28回@東北大学 #pronama – Togetterまとめ
- ニコ生 → 【中継】プログラミング生放送勉強会 第28回@東北大学 – 2014/05/31 13:00開始 – ニコニコ生放送
- 当日の写真 → OneDrive
- プログラミング生放送勉強会 第28回@東北大学 #pronamaの座席表 – セキココ
セッション
Windows の画面スケーリングをきちんと理解しよう
コミュニティ「エフスタ!!」の八巻雄哉さんの「Windows の画面スケーリングをきちんと理解しよう」です。
高精細ディスプレイに対する Windows のスケーリング機能に関するセッションです。Windows XP から Windows 8.1 まで、デスクトップアプリと Windows ストア アプリ情報がまとまっていて、今からスケーリング機能を知っておきたい方におすすめの内容です。
Windows ストアアプリの場合、スケーリングの設定は行えず、OS がピクセル密度(PPI)と解像度(画素数)から自動で決定するとのこと。現在は 100%、140%、180% の3段階で、開発者はスケールに対応した画像を用意します。
デスクトップアプリでは、Windows XP から 8.1 にかけて、既定で用意されているスケーリングサイズは、2種類から5種類に増えています。またスケーリングに関するAPIも増えています。
デスクトップアプリを開発する場合、システム DPI とモニタごとの DPI(Per-Monitor DPI)の2種類のスケールの存在を考慮し、Windows XP 形式の DPI スケーリングと DPI 仮想化によるスケーリングの2種類のアプリのスケーリング方式を考慮する必要があります。
アプリのマニフェスト設定や、Win32・Windows Forms・WPF のプラットフォーム等によりスケーリング方式が決まり、多くの場合、自前でスケーリングの実装も必要とのことで、マルチディスプレイ環境で適切なスケーリングに対応したアプリ開発はたいへんである印象を受けました。セッションでは、より具体的な値を用いて解説しています。
セッション資料「Windowsの画面スケーリングを きちんと理解しよう」プロ生第28回@東北大学 – Yuya Yamaki’s blog
Introduction to Roslyn
東北大学工学部のぼんぷろさん(@bonprosoft)による「Introduction to Roslyn」です。
.NETコンパイラ プラットフォーム「Roslyn」のセッションです。Roslynの全体像や現状についてデモを交えつつ紹介しています。
現在のコンパイラは、ブラックボックスであり、基本的には出力結果のみ使用しています。一方、Visual Studio は、IntelliSense やリアルタイムのエラー分析など高度な機能を提供していますが、コンパイラの機能(の一部)と重なっています。
Roslyn は、コンパイラをひとつにまとめ冗長な構成を解決し、コンパイラの持つ情報を API とし提供する基盤であるとのこと。
Roslyn では、大きく分類して、Generate(コード生成やリファクタリングなど)、Transform(構文木の改変やコード修正など)、Analyze(構文・意味解析など)の3種類のことが可能とのこと。また、設計理念として普遍性があり、データに変更を加える際は、変更を加えた新しいデータを作ります。
セッション中のデモでは(映像では少しわかりにくいですが)、Roslyn の API を利用して、文字列リテラルの改変や、コード解析などを行っています。
プログラミング生放送勉強会 第28回@東北大学で登壇しました! #pronama | 凡人のブログ
JavaScript 製 RDB JSRel の紹介
株式会社 CureApp の鈴木 晋さん(@shinout)による「JavaScript 製 RDB JSRel の紹介」です。
JSRel は、GitHub で公開されている SQL 不要のJavaScript 製 RDB とのこと。RDB としていますが、永続性はあまり考慮されていない印象で、オンメモリで複雑なデータ構造を簡潔に操作できるライブラリのようです。
Web ブラウザーの localStorage や sessionStorage は KVS で複雑なことはできません。Web SQL database は、記述が冗長とのこと。また、Node.js での MySQL 利用や mongoDB では、非同期となり記述がたいへんであることをあげています。
JSRel では次のように簡潔に記述できます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// スキーマ定義 | |
var JSRel = require("jsrel"); | |
var db = JSRel.create("dbname", {schema: | |
{ user: { name : true, is_activated: "on", $uniques: "name"}, | |
book: { title: true, price: 1, author: "user", $indexes: "title" }, | |
}}); | |
// データの挿入 | |
if (!db.loaded) { // if loaded from saved data, omits this section | |
var u1 = db.ins('user', {name: 'shinout'}); | |
var u2 = db.ins('user', {name: 'xxxxx', is_activated: false}); | |
var b1 = db.ins('book', {title: 'how to jsrel', price: 10, author: u1}); | |
var b2 = db.ins('book', {title: 'JSRel API doc', price: 20, author_id: u1.id}); | |
} | |
// データの取得 | |
var users = db.find('user', {is_activated: true}); |
JSRel に向いているものとして、数万行程度の CSV ファイル操作、少人数サーバーゲームの状態管理、Web ブラウザーアプリをあげています。逆に不向きなものは、大規模な Web アプリやスケーラビリティが必要なものとのこと。
セッションでは、トランプのババ抜きを例に、ライブコーディングを行っています。
CI to CD、ソフトウェア開発の継続的アプローチ
You&Iさん(@you_and_i)の「CI to CD、ソフトウェア開発の継続的アプローチ」です。
アジャイル開発について、CI(Continuous Integration: 継続的インテグレーション)の概念、そして、CD(Continuous Delivery: 継続的デリバリー)の解説セッションです。
アジャイル開発と言えば、Scrum を採用することが多く、Scrum に XP(eXtrema Programming)のプラクティスを組み合わせることも多いとのこと。その XP のプラクティスに CI があります。セッションでは、アジャイル開発の紹介として、Scrum・トヨタ生産方式・リーン生産方式・XPの体系化を説明しています。
CI は、Jenkins などの CI サーバーを利用します。CI サーバーの利用により、ビルドやテストなどの繰り返し作業から属人性を排除し自動化を行い、開発者は知識創造作業に集中することができます。
CD は、CI に加え、動くソフトウェアを実行するために環境を提供する仕組みです。CD で重要なことは、開発しているアプリに合せて、実行環境を構築する手順を作成し、自動化することです。
セッションではより詳しく順を追って説明しています。
プログラミング生放送勉強会 第28回@東北大学 に参加 – 桜、抹茶、白、日記
ライトニングトーク
全セッション終了後は、ライトニングトークを行いました。
- 「EXTREME AWS」 @jyun784さん
- 「EXTREME AZURE」 @bonprosoftさん
- 「Amadare」 @komakisenさん
- 「RQ」 @quintiaさん
- 「WebMatrix でお手軽!ストーキング」 @daruyanagiさん