Submit Search
Upload
自前言語を仕事に使う話
•
0 likes
•
333 views
啓 小笠原
Follow
第二回関数型プログラミング(仮)の会
Read less
Read more
Technology
Report
Share
Report
Share
1 of 14
Download now
Download to read offline
Recommended
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
啓 小笠原
BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話
hirotakanosato
Java使いにとっての関数
Java使いにとっての関数
amkt922
Scalaによるドメイン特化言語を使ったソフトウェアの動作解析
Scalaによるドメイン特化言語を使ったソフトウェアの動作解析
Yamagata Yoriyuki
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
Kei Nakazawa
Non-Functional Programming in Scala
Non-Functional Programming in Scala
takezoe
Lets scala
Lets scala
smdkk
[事例紹介]Scalaで物流倉庫システム作ったよ
[事例紹介]Scalaで物流倉庫システム作ったよ
Tomokazu Matsushita
Recommended
線形型のある言語でLEDを光らせる
線形型のある言語でLEDを光らせる
啓 小笠原
BigDLでScala × DeepLearning に入門した話
BigDLでScala × DeepLearning に入門した話
hirotakanosato
Java使いにとっての関数
Java使いにとっての関数
amkt922
Scalaによるドメイン特化言語を使ったソフトウェアの動作解析
Scalaによるドメイン特化言語を使ったソフトウェアの動作解析
Yamagata Yoriyuki
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
Kei Nakazawa
Non-Functional Programming in Scala
Non-Functional Programming in Scala
takezoe
Lets scala
Lets scala
smdkk
[事例紹介]Scalaで物流倉庫システム作ったよ
[事例紹介]Scalaで物流倉庫システム作ったよ
Tomokazu Matsushita
Scala Daysに行ってみて
Scala Daysに行ってみて
Kota Mizushima
頑張りすぎないScala
頑張りすぎないScala
takezoe
Scala界隈の近況
Scala界隈の近況
takezoe
Scala入門
Scala入門
Yoshifumi Takeshima
Object-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
ester41
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
Scala.jsはじめました!
Scala.jsはじめました!
K Kinzal
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル
陽平 山口
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか
Katsunori Kanda
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Fujio Kojima
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Shin Sekaryo
Flang kkd1
Flang kkd1
florets1
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Takashi Sogabe
Databricks の始め方
Databricks の始め方
Ryoma Nagata
Scalaノススメ
Scalaノススメ
Yasuyuki Maeda
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
Alloy論理データモデル
Alloy論理データモデル
啓 小笠原
函数プログラミングのエッセンスと考え方
函数プログラミングのエッセンスと考え方
啓 小笠原
More Related Content
Similar to 自前言語を仕事に使う話
Scala Daysに行ってみて
Scala Daysに行ってみて
Kota Mizushima
頑張りすぎないScala
頑張りすぎないScala
takezoe
Scala界隈の近況
Scala界隈の近況
takezoe
Scala入門
Scala入門
Yoshifumi Takeshima
Object-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Tomoharu ASAMI
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
ester41
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
Scala.jsはじめました!
Scala.jsはじめました!
K Kinzal
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル
陽平 山口
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか
Katsunori Kanda
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
Fujio Kojima
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Shin Sekaryo
Flang kkd1
Flang kkd1
florets1
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Takashi Sogabe
Databricks の始め方
Databricks の始め方
Ryoma Nagata
Scalaノススメ
Scalaノススメ
Yasuyuki Maeda
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
Tomoharu ASAMI
Similar to 自前言語を仕事に使う話
(20)
Scala Daysに行ってみて
Scala Daysに行ってみて
頑張りすぎないScala
頑張りすぎないScala
Scala界隈の近況
Scala界隈の近況
Scala入門
Scala入門
Object-Funcational Analysis and design
Object-Funcational Analysis and design
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
Object-Functional Analysis and Design : 次世代モデリングパラダイムへの道標
A5 SQL Mk-2の便利な機能をお教えします
A5 SQL Mk-2の便利な機能をお教えします
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Scala.jsはじめました!
Scala.jsはじめました!
DSLによる要求獲得でスーパーアジャイル
DSLによる要求獲得でスーパーアジャイル
20150207 何故scalaを選んだのか
20150207 何故scalaを選んだのか
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Flang kkd1
Flang kkd1
Scalaでのプログラム開発
Scalaでのプログラム開発
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Databricks の始め方
Databricks の始め方
Scalaノススメ
Scalaノススメ
Scalaz-StreamによるFunctional Reactive Programming
Scalaz-StreamによるFunctional Reactive Programming
More from 啓 小笠原
Alloy論理データモデル
Alloy論理データモデル
啓 小笠原
函数プログラミングのエッセンスと考え方
函数プログラミングのエッセンスと考え方
啓 小笠原
Alloy analyzer
Alloy analyzer
啓 小笠原
Alloy Analyzer LT
Alloy Analyzer LT
啓 小笠原
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
啓 小笠原
ぱわわっぷOCaml
ぱわわっぷOCaml
啓 小笠原
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
啓 小笠原
GADTブランチの今
GADTブランチの今
啓 小笠原
More from 啓 小笠原
(8)
Alloy論理データモデル
Alloy論理データモデル
函数プログラミングのエッセンスと考え方
函数プログラミングのエッセンスと考え方
Alloy analyzer
Alloy analyzer
Alloy Analyzer LT
Alloy Analyzer LT
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
状態遷移機械を構成するための新しいイベントコンビネーターの提案(PPL2014 カテ3ポスター)
ぱわわっぷOCaml
ぱわわっぷOCaml
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
GADTブランチの今
GADTブランチの今
Recently uploaded
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
Recently uploaded
(9)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
自前言語を仕事に使う話
1.
自前言語を 仕事に使う話 Jan. 2022 Ogasawara
2.
関数プログラミングといえば・・・ 言語実装!
3.
自前言語は簡単に作れる • 代数的データ型で構文木を表現。 • お好みのパーサーコンビネーターでお気楽パース。 •
構文木を辿るだけで簡単にインタープリト可能。
4.
自前言語 • サーバーサイドはScalaを多用しているので、Scalaで。 • Scala2まではfastparseを使っていたが、Scala3用には cats-parseを採用。
https://github.com/typelevel/cats-parse • 演習問題によくあるML風な構文。 Basic types: number, bool, string, datetime. Supports if and else expression. Supports function definition/call. Lexical scope for variable. Embedded function call. • 数値はdecimal(10進基数)を採用。証券会社用なので。
5.
デモ
6.
言語作れて何が嬉しいの?
7.
社内の事例を紹介 1. お客さんによって違う手数料問題 2. 育つか分からないビジネスのシステムを作る 3.
ちょっとした機能の素早い提供
8.
1.お客さんによって違う手数料 問題 お客さん 手数料の 計算方法 お客さんによって計算方法そのものが違う!
9.
フレキシブル! 1. お客さん特化の計算式をconfigファイルに投入。 1. 計算式の変更、追加はconfigを変更して再起動するだけ。 2.
へんてこな計算でもif文もある言語だから十分対応可能。 1. 関係ありそうな値は計算の引数に全部与えてある。 3. めんどくさいシステム更新の社内手続きなし! 1. 実はこれが大きい。 (=> 結局一年で一回しか更新なかったですが・・・)
10.
自前言語をWebで実行できるよ うにした • Cron機能追加 • 組み込み関数でSQLも叩けるようにした。
11.
1.育つか分からないビジネスの システムを作る問題 • 社内で新規ビジネスを開始する予定。 • しかし、予算はない。 •
最低限、日次売上集計と月次請求書がCSVファイルとして 必要。 • 入力はRedmineにチケット入力して、それを自前言語Web サービスで集計/出力すれば、まともにシステム作らななく ても最低限は満たせる! (=> 結局ビジネスは育たなかった。まともなシステム作ら なくて正解だった。)
12.
ちょっとした機能の素早い提供 • 基幹システムはとても古く、メンテナーが少ない。(社外 リソースに依存)。新システムへ移行中であり現行基幹シ ステムへの機能追加は避けたほうが良い。 • でも、ちょっとした機能要望は常に上がる。
特定の方法で集計したCSVが欲しい。 特定の条件のデータが見つかったら警告メールを投げて欲しい。 一定の時間にマーケットデータをお客さんに送りたい。
13.
• メール送信、Excel作成、AWS接続、SFTPを追加 Low Code環境と化す 自前言語実行環境
14.
Conclusion • 関数プログラミングでは言語実装のコストは低いよ。(凝ったも のを目指さなければ) • プログラムをデータとして扱えばフラグや抽象化を頑張るより簡 単にフレキシビリティを得られるので、これを自前言語でやると 便利な場面があるよ。 •
自前言語でLow Codeすると、場面によっては高効率が得られるよ。
Download now