Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
分解に救われる
Search
valerauko
May 24, 2018
Programming
0
100
分解に救われる
地球はプラに、開発者の脳は複雑な引数指定に襲われてる。両方とも分解で解決できる。
Clojureの引数分解 (parameter destructuring) の軽いご紹介。
valerauko
May 24, 2018
Tweet
Share
More Decks by valerauko
See All by valerauko
CIにどこまで任せるのか?
valerauko
0
240
Reitit使ってみた
valerauko
0
390
Other Decks in Programming
See All in Programming
The Art of Re-Architecture - Droidcon India 2025
siddroid
0
120
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
Developing static sites with Ruby
okuramasafumi
0
320
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
130
Graviton と Nitro と私
maroon1st
0
130
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.7k
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
4.2k
LLMで複雑な検索条件アセットから脱却する!! 生成的検索インタフェースの設計論
po3rin
4
960
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
150
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
120
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
160
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
0
94
The SEO Collaboration Effect
kristinabergwall1
0
310
Rails Girls Zürich Keynote
gr2m
95
14k
Building Adaptive Systems
keathley
44
2.9k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Thoughts on Productivity
jonyablonski
73
5k
Building an army of robots
kneath
306
46k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
410
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
130
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
69
Transcript
引数で地球を救う 引数分解に惚れてしまった話
Erdos Balint • 株式会社スタディストでTeachme Biz開発 • ビール、⾳楽とプログラミング⼤好き • ⾃然を守ることを意識 @valerauko
⼤⾃然を守るのは⼈類の責任 プラスチック のゴミをなん とかしないと いけない
プラ汚染をなんとかするために u使う量を減らす u捨てる時に分ける uゴミを無害化する
プラ汚染をなんとかするために u使う量を減らす u捨てる時に分ける uゴミを無害化する
プラ汚染をなんとかするために u使う量を減らす u捨てる時に分ける uゴミを無害化する
プラ汚染をなんとかするために u使う量を減らす u捨てる時に分ける uゴミを無害化する 京⼯⼤・慶應の研究者が PETを分解する微⽣物を発⾒
引数が多いとわかりにくい 引数の意味がわからない 引数の必要性もわからない 問題
ハッシュマップを渡してみる 「すべて」は取れないネストされた ハッシュは分解できない 問題
分解に救われる 地球も正気も
羅列を分解 user=> (defn hoge #_=> "&でその他が取れる" #_=> [param1 & others]
#_=> (list param1 others)) #'user/hoge user=> (hoge "fuga" 3.14 42) ("fuga" (3.14 42))
羅列を分解 user=> (defn hoge #_=> "いらない要素は無視できる" #_=> [_ param1 param2]
#_=> (list param1 param2)) #'user/hoge user=> (hoge "fuga" 42 :konkon) (42 :konkon)
羅列を分解 user=> (defn hoge #_=> "ネストされた羅列も分解できる" #_=> [p1 [_ v1]
p2] #_=> (list p1 v1 p2)) #'user/hoge user=> (hoge "fuga" [3.14 42] :konkon) ("fuga" 42 :konkon) user=> (hoge 3.14 "abc" :konkon)
羅列を分解 user=> (defn hoge #_=> ":asで全ても取れる" #_=> [p1 [_ p3
:as meaning] p4] #_=> (list p1 p3 p4 meaning)) #'user/hoge user=> (hoge "fuga" [3.14 42] :konkon) ("fuga" 42 :konkon [3.14 42])
連装連想分解 user=> (def person #_=> {:name "Balint" #_=> :city "Tokyo"
#_=> :like ["Clojure" "beer" #_=> "music" "mobage"]}) #'user/person
連装連想分解 user=> (defn say-hello #_=> "マップから欲しいキーだけ取れる" #_=> [{name :name city
:city}] #_=> (str "Hello " name #_=> ", how is " city "?")) #'user/say-hello user=> (say-hello person) "Hello Balint, how is Tokyo?"
連装連想分解 user=> (defn say-hello #_=> ":orでデフォルト値⼊れられる" #_=> [{name :name :or
{name "Foo"}] #_=> (str "Hello, " name "!")) #'user/say-hello user=> (say-hello {}) "Hello, Foo!"
連装連想分解 user=> (defn say-hello #_=> ":keys :strs :symsで短略に書ける" #_=> [{:keys
[name city]}] #_=> (str "Hello " name #_=> ", how is " city "?")) #'user/say-hello user=> (say-hello person) "Hello Balint, how is Tokyo?"
連装連想分解 user=> (defn say-hello #_=> "好きに組み合わせもできる" #_=> [{:keys [name city]
:or {name "Guest"} #_=> [like :as likes] :like}] #_=> (println (str "Hello, " name "! " #_=> "How is " like " in " city "?")) #_=> likes) #'user/say-hello user=> (say-hello person) Hello, Balint! How is Clojure in Tokyo? ["Clojure" "beer" "music" "mobage"]
必要か? 複雑なデータ構造をその ままで渡して、それぞれ の関数で必要なものだけ 抜けられるので⾮常に便 利。 (def person {"@context" "https://example.com/#ns"
:name ["Erdos" "Balint"] :location {:country "Japan" :city "Tokyo"} :likes ["Clojure" "beer" "music" "mobage"] :work {:company "Studist" :position "Developer"} :skills {:language ["Hungarian" "English" "Japanese"] :code ["Ruby" "Python" "Clojure" "JavaScript" "SQL"]} :refs [{:url "https://balint.erdos.tech" :rel "Website"} {:url "https://github.com/valerauko" :rel "GitHub"} {:url "https://pawoo.net/@valerauko" :rel "Mastodon"}]})
We’re hiring! Ruby on Rails, Vue.js, AWS