SlideShare a Scribd company logo
1 of 25
Download to read 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#を業務で使っていきます
事例もできる限り出していきたい
おわり

More Related Content

Similar to F#事例発表

Swift bondでつなげてプログラミング
Swift bondでつなげてプログラミングSwift bondでつなげてプログラミング
Swift bondでつなげてプログラミング
貴士 山本
 
Power shell で DSL
Power shell で DSLPower shell で DSL
Power shell で DSL
urasandesu
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
 

Similar to 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
 

More from bleis 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
 

More from 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
 
自分戦略
自分戦略自分戦略
自分戦略
 

Recently uploaded

Recently uploaded (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

F#事例発表