SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
.事例発表
bleis-tift
August 3, 2014
自己紹介
id:bleis-tift / @bleis
なごやではたらくゆるふわ F#er
仕事で F#使ってます!
これまでの主な活動
C#(VB) プログラマのための F#入門
http://www.slideshare.net/bleistift/cvbf
そうだ、bf 処理系をつくろう!もちろん
SQL で!
http://www.slideshare.net/bleistift/bfsql-7401985
仕事で使う F#
http://www.slideshare.net/bleistift/f-9062112
Better C#の脱却を目指して
http://www.slideshare.net/bleistift/better-c
F#による Functional Programming 入門
http://www.slideshare.net/bleistift/unctional-
programming
これまでの主な活動
モナドハンズオン前座
http://www.slideshare.net/bleistift/ss-15215415
yield と return の話
http://www.slideshare.net/bleistift/yieldreturn
これまでの主な活動
再帰で考える
http://bleis-tift.hatenablog.com/entry/20120119/1326944722
F#で初めての関数型プログラミング
http://www.atmarkit.co.jp/fdotnet/special/introfs_01/introfs_01_01.html
http://www.atmarkit.co.jp/fdotnet/special/introfs_02/introfs_02_01.html
C#から使いやすい F#コードの書き方
http://bleis-tift.hatenablog.com/entry/20121201/1354362376
.NET の標準ライブラリと仲良くする話
http://bleis-tift.hatenablog.com/entry/fsadvent2013
詳説コンピュテーション式
http://bleis-tift.hatenablog.com/entry/computation-expression
コンピュテーション式における return と yield
http://bleis-tift.hatenablog.com/entry/return-and-yield
これまでの主な活動
LangExt
https://github.com/LangExt/LangExt
http://langext.github.io/LangExt/
Basis.Core
https://github.com/BasisLib/Basis.Core
今日話すこと
弊社と F#
事例紹介
仕事で F#を使うために
弊社と.
弊社について
社員数は 20 人程度
プログラマは半分くらい
いわゆる一つの SIer
開発では主に、「ちょっと特殊なクライアン
ト」向けに Web API を作ってます
.NET 系なので、C#や F#を使ってます
弊社と.
入社後から、ちょっとしたツールとかに個人
的に使用
社内では、「条件さえあえば使ってみたい
ねー」って雰囲気
3 年か 4 年前に条件のあう案件が!
本格的に業務で F#を使い始めた
.使った主な案件
人力でやっていた作業を自動化する Web アプ
リ(1ヶ月)
プロキシサーバとして振る舞うシステムのコ
ア機能の Azure 化(3 週間)
WebAPI 用のフレームワーク
クラウド移行に伴うシステムの完全移行
.を使った社内ツール・ライブラリ
案件以外でも、社内ツールに F#を使っている
XML 用 DSL ライブラリ
Web アプリ画面テスト支援ツール
Web API 用テスティングフレームワーク 1
Web API 用テスティングフレームワーク 2
事例紹介
背景
某クラウドから某クラウドへの移行案件
権利的な問題から、元のシステム(C#で構
築)をそのまま持っていけない
「仕様書も自動化された結合テストもあるの
でタイにオフショアします」(想像)
社員 O「是非 F#でやらせてください!」
役員 K「いいよ!」
社内としては、社員 O を含む 2 名が開発者として
開発スタート
タイ側は開発者 2 名+ 1
問題発生
社員 O が都合により案件から離れる
社員 K「タイ側のコード、レビューしても
らっていいですか?」
type Function = obj[] - obj[]
!?
→タイに渡航し、F#や Git について教育
全体の設計
トランザクションスクリプト風
個人の能力のばらつきを考えて API ごとに分離
全体を Result を返すブロックで構築
Railway oriented programming(鉄道指向プログラ
ミング)
これのためにライブラリを作成(Basis.Core)
自称ちゃんと return する唯一のコンピュテーショ
ン式ライブラリ
ここには当日何かあったらしい
全体的な結果
機能が増えたにもかかわらず、総行数は約 2
割減った
些細なバグがほとんどなくなった
ドタバタはあったが、納期には間に合った
C#だったらたぶん間に合わなかったし、バグも出
たはず
仕事で.を使うために
教育(その)
全く F#も関数プログラミングも知らない人
にいきなりつかわせるのは無理
当然教育が必要
とりあえず、実践 F#もしくはプログラミング
F#を読んでもらう
後は、実際に使ってもらいつつ、頻繁にレ
ビュー
より Fらしい書き方を伝える
ペアプロは有効
ループを書かない方法や、null と None の違いな
どを重点的に
教育の成果(サンプル数)
範囲外アクセスがほとんど出なかった
null 例外も F#に閉じた範囲では出なかった
C#に戻っても問題のあるコードを書くことが
減った
関数型初心者がいても、サポートできればいける
さらに、能力も向上
教育(その )
とにかく型(レコードや判別共用体)を作ら
せる
obj を許さない
リフレクションも許さない
F#コード養成ギプス
教育の効果(サンプル数 )
F#っぽいコードがある程度書けるように
なった
つまらないバグも減った
ただ、それ以前の問題は結局解決できな
かった
省略語はいくら言っても直らなかった・・・
よくいる普通のサラリーマンプログラマよりは使
える人材に
業務で.を使ってみて
教育はとても大事
ある種のバグは減る
生産性については、環境次第
今後も F#を業務で使っていきます
事例もできる限り出していきたい
おわり

Mais conteúdo relacionado

Semelhante a F#事例発表

いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-Masashi Shinbara
 
Swift bondでつなげてプログラミング
Swift bondでつなげてプログラミングSwift bondでつなげてプログラミング
Swift bondでつなげてプログラミング貴士 山本
 
Asp.netアプリケーションの最新プロファイリング
Asp.netアプリケーションの最新プロファイリングAsp.netアプリケーションの最新プロファイリング
Asp.netアプリケーションの最新プロファイリングKiyoaki Tsurutani
 
Webクリエイターに告ぐ!? ツールに頼って余った時間で◯◯しよう! ~ 注目!制作現場で触っておきたいツール紹介~
Webクリエイターに告ぐ!? ツールに頼って余った時間で◯◯しよう! ~ 注目!制作現場で触っておきたいツール紹介~Webクリエイターに告ぐ!? ツールに頼って余った時間で◯◯しよう! ~ 注目!制作現場で触っておきたいツール紹介~
Webクリエイターに告ぐ!? ツールに頼って余った時間で◯◯しよう! ~ 注目!制作現場で触っておきたいツール紹介~Reimi Kuramochi Chiba
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSLurasandesu
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能Yoshifumi Kawai
 
Nom de fonction français
Nom de fonction françaisNom de fonction français
Nom de fonction françaishajikami
 

Semelhante a F#事例発表 (8)

いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
Swift bondでつなげてプログラミング
Swift bondでつなげてプログラミングSwift bondでつなげてプログラミング
Swift bondでつなげてプログラミング
 
C#とaop
C#とaopC#とaop
C#とaop
 
Asp.netアプリケーションの最新プロファイリング
Asp.netアプリケーションの最新プロファイリングAsp.netアプリケーションの最新プロファイリング
Asp.netアプリケーションの最新プロファイリング
 
Webクリエイターに告ぐ!? ツールに頼って余った時間で◯◯しよう! ~ 注目!制作現場で触っておきたいツール紹介~
Webクリエイターに告ぐ!? ツールに頼って余った時間で◯◯しよう! ~ 注目!制作現場で触っておきたいツール紹介~Webクリエイターに告ぐ!? ツールに頼って余った時間で◯◯しよう! ~ 注目!制作現場で触っておきたいツール紹介~
Webクリエイターに告ぐ!? ツールに頼って余った時間で◯◯しよう! ~ 注目!制作現場で触っておきたいツール紹介~
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSL
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
 
Nom de fonction français
Nom de fonction françaisNom de fonction français
Nom de fonction français
 

Mais de bleis tift

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)bleis tift
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documentsbleis tift
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compilerbleis tift
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話bleis tift
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前にbleis tift
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴るbleis tift
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJavableis tift
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)bleis tift
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話bleis tift
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)bleis tift
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話bleis tift
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)bleis tift
 
async/await不要論
async/await不要論async/await不要論
async/await不要論bleis tift
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門bleis tift
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)bleis tift
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指してbleis tift
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座bleis tift
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScriptbleis tift
 

Mais de bleis tift (20)

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前に
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴る
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJava
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
F#の基礎(嘘)
F#の基礎(嘘)F#の基礎(嘘)
F#の基礎(嘘)
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
 
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)
 
async/await不要論
async/await不要論async/await不要論
async/await不要論
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScript
 
自分戦略
自分戦略自分戦略
自分戦略
 

Último

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
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 

Último (9)

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」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 

F#事例発表