SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
『駅すぱあと』

新しい開発基盤の研究
株式会社ヴァル研究所 R&D Centre
ソフトウェアエンジニア プロダクトチーフ 佐藤昭彦
※注意
この発表では現在研究中のものを紹介しています。

『駅すぱあと』には まだ 導入されていません。
自己紹介
• 佐藤昭彦(さとうあきひこ)
• 2005年 株式会社ヴァル研究所
入社
• モバイル系のJavaエンジニアを
経て現在C++でお仕事してます
• プログラム言語大好き
もくじ
• C/C++開発環境の改善
• 調査したツール類の紹介
• 運賃計算とDSL
• 『駅すぱあと』が戦う運賃計算について
• DSLのススメ
開発環境の改善
開発環境の改善
• 自動化(CI環境の整備)
• GitHubとJenkinsを連携させてPull Request単位で

ビルド&テスト
• デイリーでカバレッジ計測。gcovのレポートを
Jenkins上で管理
• その他ツール類の調査
• 便利ツールの導入検討
GitHub/Jenkins連携
pull request
(polling)
pull
build/test
結果通知
GitHub Jenkins
+ GitHub pull request
builder plugin
開発者
GitHub/Jenkins連携
!右下の赤丸のように、ビルド・テストの成否をGitHub上に表示してくれます。

導入による効果
• pull request対応コスト減
• pull requestされた内容について、ビルド・テストが
通ることを手動で確認しなくてもよくなった
• 設計やロジックに注力してレビューが出来る
カバレッジ計測
• Jenkins上で計測
• 毎日 AM8:00に1回レポート生成
• 計測にはgcovを使用
• gcovr + Cobertura Pluginで可視化
!カバレッジの推移や現在の詳細な集計結果がレポートとして表示されます。

その他ツール
• ビルド構成管理
• CMake
• ユニットテスト
• Google Test
• 静的解析(lint)
• cpplink.py
• cppcheck
• メトリクス計測
• metrix++
• ドキュメント生成
• Doxygen
• コード整形/コンパート
• clang-format
• clang-modernize

『駅すぱあと』には未導入のもの、導入しないものもありますが、自分のプロジェクトではこれ
らを使って開発をしています。
clang-modernize
• C++は2011年に大きな改定があった(C++11)
• C++のコードを「C++11らしい」コードに変換
• 内部的にC++コンパイラ(clang)の技術を使って
いるので高精度
class Person {
std::string name;
!
public:
explicit Person(std::string name) : name(std::move(name)) {
}
void greet(const Person &person) const;
void greet(const std::vector<const Person *> &friends) const {
for (const auto & friends_i : friends) {
if (friends_i != nullptr) {
greet(*friends_i);
}
}
}
};
AFTER
class Person {
std::string name;
!
public:
explicit Person(const std::string &name) : name(name) {
}
void greet(const Person &person) const;
void greet(const std::vector<const Person *> &friends) const {
for (std::vector<const Person *>::const_iterator i = friends.begin();
i != friends.end();
++i) {
if (*i != NULL) {
greet(**i);
}
}
}
};
BEFORE
!ムーブセマンティクス、型推論、range-based for、新キーワード(nullptr)など、C++11の

新機能を使ってくれます。
開発環境まとめ・雑感
• 自動化の効果は高い
• 単純にコストが減るし、何より単純作業の

ストレスがなくなるのがうれしいですね。
• もっとツールを使おう
• 手元で実行出来るだけでも楽しいし便利。
運賃計算とDSL
運賃計算?
• 基本1
• 乗車した距離に応じて金額が決まる
• →「営業キロ」を求めて運賃表を引く
• 基本2
• 「複乗の禁止」
• → 同じ所を2度通ってはダメ
https://www.jr-odekake.net/railroad/ticket/guide/02.html
!運賃計算の実例を見てみます。

高円寺から川崎まで、立川を経由する経路です。
高円寺
立川
川崎
21.4km
35.5km
本州3社内の幹線の普通運賃表
!高円寺→立川→川崎で通算56.9キロ。運賃表で引くと970円。
通算 56.9km
高円寺
立川
川崎
21.4km
35.5km高円寺→川崎は 970円…?
本州3社内の幹線の普通運賃表
通算 56.9km
高円寺
立川
川崎
21.4km
35.5km高円寺→川崎は 970円…?
本州3社内の幹線の普通運賃表
通算 56.9km
!実はこの結果は間違い。
●東京・大阪の電車特定区間の普通運賃
表
東京・大阪の電車特定区間(次の図の範
囲)のみをご利用になる場合は、「電車
特定区間の普通運賃表」をご覧くださ
い。
https://www.jr-odekake.net/railroad/ticket/guide/02.html
!この図にある区間は、よく使われる路線のためもう少し割安の運賃表が設定されています。
高円寺
立川
川崎
21.4km
35.5km
電車特定区間の普通運賃表
本州3社内の幹線の普通運賃表
通算 56.9km
!通算距離56.9キロを「電車特定区間の普通運賃表」で引くと920円。
高円寺
立川
川崎
21.4km
35.5km
電車特定区間の普通運賃表
高円寺→川崎は 920円…?
本州3社内の幹線の普通運賃表
通算 56.9km
高円寺
立川
川崎
21.4km
35.5km
電車特定区間の普通運賃表
高円寺→川崎は 920円…?
本州3社内の幹線の普通運賃表
通算 56.9km
!実はこの結果もまだ不十分。
●大都市近郊区間内のみをご利用になる
場合の特例
下図のそれぞれの大都市近郊区間内のみ
を普通乗車券または回数乗車券でご利用
になる場合は、実際にご乗車になる経路
にかかわらず、最も安くなる経路で計算
した運賃で乗車することができます。
https://www.jr-odekake.net/railroad/ticket/guide/02b.html
!この図にある区間は路線が入り組んでいて目的地までの経路が複数存在するため、常に最安にな
る経路で計算して良いという特例があります。
!乗車した「高円寺→立川→川崎」よりも「高円寺→新宿→品川→川崎」の経路のほうが安く計算
できます。
高円寺
立川
川崎
21.4km
35.5km
高円寺
新宿
品川
5.8km
8.6km
通算 27.8km
川崎
11.4km
高円寺→川崎は 470円!
通算 56.9km
!ようやく正しい運賃が求まりました。
!紹介した以外にも、運賃計算の特例は無数にあります。

運賃計算
非常に特例が多い
今は?
• プログラムで頑張っている
• 運賃計算を行うC言語関数群の中に特例の数だけ

if文があるイメージ
• →関数設計を工夫しても保守性に限界がある
• →そこでDSL!
DSL?
• Domain Specific Language:ドメイン特化言語
• ある特定領域(ドメイン)の問題を解決するのに
特化した言語のこと( 汎用言語)
• 例)HTML, CSS, 正規表現, RSpec
ドメイン特化言語 パターンで学ぶDSLのベストプラクティス46項目
http://www.amazon.co.jp/dp/4864010471
!この本がDSLのバイブルです。非常にオススメです。
DSLをなぜ使うのか
• 開発者の生産性の向上
• ビジネスロジックをより抽象度の高い言語で表現
• ドメインエキスパートとのコミュニケーション改善
• 問題の文脈に特化した言語なら、開発者以外でも

理解しやすい
DSLをいつ使わないのか
• プロジェクトで使用する言語が増える
• エンジニアの習得コストが上がる
• →但し、汎用言語の習得コストとは比べ物にならないほど低い
• DSL自体のメンテナンスコスト
• 独自言語を作れば、それをメンテナンスする人が必要
• →表現力を限定することが重要

 (チューリング完全になんてしてはいけない!)
!「チューリング完全なDSL」はDSLのよくあるアンチパターンです。それは既に汎用言語です。
解決したいドメインに集中し、小さい言語に保たれているのがいいDSLだと思います。
DSLの導入
• まずやること
• かっこいい文法を考える
• セマンティックモデルを作成する
• → 問題解決方法を「モデル化」する
モデルの例
if then
main.c util.c
main.h util.h
app
if then
if then
Y Y 20
Y N 10
N Y 5
N N 0
プロダクションルール

システム
依存ネットワーク デシジョンテーブル
!これら以外にも、マーチン・ファウラーの本に様々な例が詳しく紹介されています。

運賃計算のモデル化
「東京近郊区間」のみの

利用である
最も安くなる経路で

計算
「電車特定区間」のみの

利用である
運賃表に「電車特定区間の

普通運賃表」を使う
東京で折り返し、神田を通過
する列車に乗る
「東京→神田→東京」
区間を除外
「if-then」で表現される一連のルールとして表現できる
→今回はこれをクラスで実装してみる
…
!試しに「プロダクションルールシステム」で表現してみました。実際には、複雑な運賃計算を一
つの単純なモデルで表現するのは難しいので、地域やルールの特性で再分割が必要でしょう。
モデルの実装
ConcreteCondition
Rule
<<abstract>>
Condition
ConcreteAction
<<abstract>>
Action
ConcreteCondition
ConcreteAction
ConcreteCondition
ConcreteAction
1件の「ルール」は
「条件」と「アクション」の
組み合わせとして表現
!クラス化したものです。条件とアクションは種類が沢山あるのでabstractクラスを挟んで解決し
ています。
モデルの実装
ConcreteCondition
Rule
<<abstract>>
Condition
ConcreteAction
<<abstract>>
Action
ConcreteCondition
ConcreteAction
ConcreteCondition
ConcreteAction
具体的な条件
電車特定区間のみの乗車
区間A-Bを通っている
…
具体的なアクション
運賃表Xを使う
区間A-Bを除外する
…
言語としてのDSLの作成
• 「モデル」が適切にクラス化出来ていれば、言語と
してのDSLは薄いファサード(窓口)としての役割
しか持っていない
• 今回の場合、DSLの仕事は条件とアクションのイン
スタンスを記述に従って組み上げ、ルールのインス
タンスを生成することのみ
!この後もスライド中に何度か出てきますが、問題のモデル化がDSL作りの中心です。モデルが

しっかりしていれば、その上に用途に応じた複数のDSL言語を作るなんてことも可能です。
DSLの実装方法
• 内部DSL:コア言語内に作るDSL
• 例)関数のネストでモデル構造を表現
• rule(condition(…), action(…))
• 例)メソッドチェーンでモデル構造を表現
• rule().condition(…).action(…).end()
DSLの作成
rule 電車特定区間の普通運賃表(東京) do
condition 経路全体マッチ do
sections 電車特定区間(東京)
end
action 運賃表変更 do
pricetable 電車特定区間の普通運賃表
end
end
!
rule 大都市近郊区間内のみをご利用になる場合の特例(東京) do
…
end
!
…
!Rubyで内部DSLを定義した場合のイメージです。Rubyならメタプログラミングな手法を使えば
もっとスマートに書けると思います。
DSLの実装方法
• 外部DSL:コア言語外に作るDSL
• 例)コア言語でパーサーを用意する
• 独自言語, JSON, YAML, XML, Lua, mruby, …
• 例)コア言語のコードを生成する
• $ ruby codegen.rb > generated.c
DSL作成の注意点
• 表現力を限定する
• 「このDSLで何でも書けるように・・・」はNG
• 一般的な作法に倣う
• 開発者がJavaに慣れているなら、コメントは「//」で始まるべき
• 専門用語を使うことを恐れない
• 専門用語があることでドメイン内のコミュニケーションは豊かに
なる
運賃計算とDSLまとめ・雑感
• 運賃計算は難しい
• 特例のかたまりです。
• DSLで大事なのは問題のモデル化と表現力の限定
• 解決したい問題を明確にしましょう。間違っても
何でも書けるDSLを作っちゃダメです。
参考文献/URL
• ドメイン特化言語 パターンで学ぶDSLのベストプラクティス46
項目
• http://www.amazon.co.jp/dp/4864010471
• 進化するアーキテクチャーと新方式の設計: DSL の使用 - IBM
• https://www.ibm.com/developerworks/jp/java/library/j-eaed13/
• きっぷのルール:JRおでかけネット
• https://www.jr-odekake.net/railroad/ticket/guide/01.html
ご清聴ありがとうございました

Contenu connexe

En vedette

開発者が導入するAWS
開発者が導入するAWS開発者が導入するAWS
開発者が導入するAWSMikawa Kouta
 
「手探りで始めた企業内スタートアップで嵌まったこと」 in DevLOVE 2014/5/16
「手探りで始めた企業内スタートアップで嵌まったこと」 in DevLOVE 2014/5/16「手探りで始めた企業内スタートアップで嵌まったこと」 in DevLOVE 2014/5/16
「手探りで始めた企業内スタートアップで嵌まったこと」 in DevLOVE 2014/5/16Noritaka Shinohara
 
Dev love miyamoto_2014_05_16
Dev love miyamoto_2014_05_16Dev love miyamoto_2014_05_16
Dev love miyamoto_2014_05_16Takeshi Arai
 
DevLOVE 2014-5-16 エナジャイズ! アジャイルの取組みや活性化の紹介
DevLOVE 2014-5-16 エナジャイズ! アジャイルの取組みや活性化の紹介DevLOVE 2014-5-16 エナジャイズ! アジャイルの取組みや活性化の紹介
DevLOVE 2014-5-16 エナジャイズ! アジャイルの取組みや活性化の紹介Takeshi Arai
 
一口で何度もおいしい?DSL
一口で何度もおいしい?DSL一口で何度もおいしい?DSL
一口で何度もおいしい?DSLYou&I
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう増田 亨
 
20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発Mao Ohnishi
 

En vedette (8)

開発者が導入するAWS
開発者が導入するAWS開発者が導入するAWS
開発者が導入するAWS
 
「手探りで始めた企業内スタートアップで嵌まったこと」 in DevLOVE 2014/5/16
「手探りで始めた企業内スタートアップで嵌まったこと」 in DevLOVE 2014/5/16「手探りで始めた企業内スタートアップで嵌まったこと」 in DevLOVE 2014/5/16
「手探りで始めた企業内スタートアップで嵌まったこと」 in DevLOVE 2014/5/16
 
Dev love miyamoto_2014_05_16
Dev love miyamoto_2014_05_16Dev love miyamoto_2014_05_16
Dev love miyamoto_2014_05_16
 
DevLOVE 2014-5-16 エナジャイズ! アジャイルの取組みや活性化の紹介
DevLOVE 2014-5-16 エナジャイズ! アジャイルの取組みや活性化の紹介DevLOVE 2014-5-16 エナジャイズ! アジャイルの取組みや活性化の紹介
DevLOVE 2014-5-16 エナジャイズ! アジャイルの取組みや活性化の紹介
 
一口で何度もおいしい?DSL
一口で何度もおいしい?DSL一口で何度もおいしい?DSL
一口で何度もおいしい?DSL
 
Xtext 紹介
Xtext 紹介Xtext 紹介
Xtext 紹介
 
「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう「ドメイン駆動設計」の複雑さに立ち向かう
「ドメイン駆動設計」の複雑さに立ち向かう
 
20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発20151110 ドメイン駆動設計によるサービス開発
20151110 ドメイン駆動設計によるサービス開発
 

Similaire à 『駅すぱあと』新しい開発基盤の研究

Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationMicrosoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationYuichiro Saito
 
2016年第一回プレ卒研in山口研
2016年第一回プレ卒研in山口研2016年第一回プレ卒研in山口研
2016年第一回プレ卒研in山口研dmcc2015
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -Toshiyuki Hirata
 
テスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決することテスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決することyuichi_kuwahara
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト健一 辰濱
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていくRyo Mitoma
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱Koichi ITO
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~Yuki Ando
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
cbt (Cranberries Build Tool)
cbt (Cranberries Build Tool)cbt (Cranberries Build Tool)
cbt (Cranberries Build Tool)Wada Yuki
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかったMakoto Iguchi
 
俺 と ご褒美 Bot
俺 と ご褒美 Bot俺 と ご褒美 Bot
俺 と ご褒美 BotMasayuki KaToH
 
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話Kazuki Murahama
 
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能Study Group by SciencePark Corp.
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~normalian
 
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでNaoyuki Yamada
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークMaehana Tsuyoshi
 
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割Takashi Honda
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境Toshiyuki Hirata
 

Similaire à 『駅すぱあと』新しい開発基盤の研究 (20)

Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 PresentationMicrosoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
 
2016年第一回プレ卒研in山口研
2016年第一回プレ卒研in山口研2016年第一回プレ卒研in山口研
2016年第一回プレ卒研in山口研
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
 
テスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決することテスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決すること
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
cbt (Cranberries Build Tool)
cbt (Cranberries Build Tool)cbt (Cranberries Build Tool)
cbt (Cranberries Build Tool)
 
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
 
俺 と ご褒美 Bot
俺 と ご褒美 Bot俺 と ご褒美 Bot
俺 と ご褒美 Bot
 
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
2022_08_10 SaaS.tech #5業務システム開発でデザインとフロントエンドも妥協しない話
 
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
.NET CoreでのWindowsサービスの作り方と、Coreならではの便利な機能
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
 
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
 
リモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワークリモートチームとふりかえり改善フレームワーク
リモートチームとふりかえり改善フレームワーク
 
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境
 

『駅すぱあと』新しい開発基盤の研究