Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
I live by using a minor language
Search
kbaba1001
December 26, 2020
Programming
1
180
I live by using a minor language
kbaba1001
December 26, 2020
Tweet
Share
More Decks by kbaba1001
See All by kbaba1001
How to build a video conferencing system that no one has ever told you about
kbaba1001
0
47
Build React system with ClojureScript (Squint)
kbaba1001
0
130
talk-with-local-llm-with-web-streams-api
kbaba1001
0
450
Lume: Static Site Generator
kbaba1001
0
630
React_2023
kbaba1001
0
180
Word Penne
kbaba1001
0
210
fast optical line
kbaba1001
0
380
ArtPosePro and Procreate
kbaba1001
1
220
How did Clojure change my life
kbaba1001
3
1.9k
Other Decks in Programming
See All in Programming
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
1.9k
Architectural Extensions
denyspoltorak
0
200
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
3
120
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
120
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
520
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
370
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.7k
re:Invent 2025 のイケてるサービスを紹介する
maroon1st
0
170
rack-attack gemによるリクエスト制限の失敗と学び
pndcat
0
240
AgentCoreとHuman in the Loop
har1101
5
190
CSC307 Lecture 03
javiergs
PRO
1
480
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.9k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
42
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Automating Front-end Workflow
addyosmani
1371
200k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
120
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
46
Crafting Experiences
bethany
1
34
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
49k
Between Models and Reality
mayunak
1
170
KATA
mclloyd
PRO
33
15k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
240
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Transcript
@KBABA1001• 26 DEC 2020 マイナー言語で 生きていく neumann.tokyo
1 kbaba1001 (馬場 一樹) 2 Clojure, Ruby, JavaScript, etc 3
元ギークハウスオーナー、地方移住 4 趣味: 英語、イラスト PROFILE
None
受託開発 Go, TypeScript 受託データ分析 SQL 自社開発(未ローンチ) Clojure, ClojureScript 2020年度の仕事
受託開発 Clojure, ClojureScript, Ruby, JavaScript/TypeScript 自社開発(未ローンチ) Clojure, ClojureScript 2021年度の仕事の予定
Clojure 好きな言語
What? 関数型プログラミング言語、JVMで動くLisp Why? Webサービスを設計しやすい言語を求めた結果Clojureにたどり着いた 特徴 JVMによる豊富なライブラリ、安定したシステム開発 ClojureScriptによるフロントエンド開発 CLOJURE
1 Circle CI 2 Pitch 3 テンクー、トヨクモ、GYAO、トレタ 4 Nubank どこで使われているか
参考: https://github.com/athos/japanese-clojure-companies https://clojure.org/community/companies
合同会社ノイマンでの活用 Solution –
Word Penne demo
shadow-cljs build tool Reagent/re-frame react/redux stylefy css-in-js DEVELOPMENT TOOLS rebase
hosting, database, authentication, etc
https://www.neumann.tokyo/internships
なぜClojureを採用したのか Solution –
好きだから
1 通常「好きだから」という理由だけで動けない 2 一日のほとんどをプログラムを書くことで過ごしている。 それを嫌いな言語で行うのはつらい。 3 自分で会社を経営する意味。 誰にも縛られずに仕事をできる。 4 Clojureを採用することによるデメリットも多々ある
好きだから
Clojureを採用するデメリット Problem –
人が少ない
1 Clojureプログラマが少ない 2 受託できる案件が少ない 3 ライブラリやドキュメントも少ない 4 孤独感 人が少ない
• 小さいからこその親密なコミュニティ • 技術力の高い人が多い • 海外に目を向ける CLOJUREプログラマが少ない
• 日本で Clojure/ClojureScript を利用 している会社一覧 • https://github.com/athos/japanese-clojure-companies • 社員募集をしている会社に受託開発の ダイレクトメール営業
受託できる案件が少ない
• 2015年頃から日本語の書籍は出ていない • 英語は毎年出ているのでそれらを読む • ライブラリはJavaやJavaScriptのものも活 用できる • 言語のドキュメントは結構ある •
ライブラリのドキュメントは少ないのでソー スコードを読むこともしばしば ライブラリやドキュメントが少ない
• 友達と盛り上がれない • SNSでも盛り上がれない • それでもコードを書く • モチベーション管理が重要 孤独感
Clojure以外も学ぶ必 要がある
1 Java, JavaScriptの知識が必要なことがある 2 「他の言語で流行のあれを取り込んだ」が多い。 その場合ドキュメントが少ない。例: re-frame, core.async 3 マイナー言語だけで生きていくのは至難の業
4 言語に限らず幅広い知識は必要になりがち CLOJURE以外も学ぶ必要がある
流行ってる言語を採用するメリット Section –
流行りつつある言語 Go, TypeScript, Rust, Kotlin ある程度枯れた言語 C, Ruby, PHP, Java
流行らないが熱心なユーザーがいる言語 Clojure, Haskell, OCaml, Elixir, Elm 流行ってる言語 ※主観的な意見です
流行りつつある言語 Go, TypeScript, Rust, Kotlin ある程度枯れた言語 C, Ruby, PHP, Java
流行らないが熱心なユーザーがいる言語 Clojure, Haskell, OCaml, Elixir, Elm 流行ってる言語 ※主観的な意見です 一番メリットが多い
1 使える人が多い 2 ライブラリやドキュメントが多い 3 失敗をたくさんしているので安定している。 大体の困り事は解決できる。 4 インフラのサポートが充実している 枯れた言語のメリット
• 何かしら枯れた言語の課題を解決して いる • 信頼できそうな開発元 • キラーアプリ • プログラマがミーハーだから なぜ新しい言語が流行るのか
1 ライブラリやドキュメントが未成熟。 枯れた言語で簡単にできることが他の言語では難しいこともある。 2 デファクトスタンダードがない。何かとカオス 3 使える人が少ない 4 特に設計の知見が不足気味 流行っている言語を採用するデメリット
この特徴はClojureの デメリットとほぼ一 致する
流行りつつある言語 Go, TypeScript, Rust, Kotlin ある程度枯れた言語 C, Ruby, PHP, Java
流行らないが熱心なユーザーがいる言語 Clojure, Haskell, OCaml, Elixir, Elm 流行ってる言語 ※主観的な意見です この2つは実用上 ほぼ同じ苦労をする
枯れた言語 vs その他
• 枯れた技術で困ったことを改善したい • 美しくない、楽しくない、飽きた • 新しい技術のほうが面白い 枯れた技術を使いたくない理由
枯れた言語を採用し ないなら茨の道
自分が良いと思える 技術を使おう
なぜClojureが好きなのか Section –
Rubyプログラマが なぜClojureをはじめたのか SUB SECTION
1 RailsやHanamiは複雑すぎるように感じた。 MVCもDDDもしんどい 2 関数型プログラミング 3 ORMを使っていても結局生SQLは書く 4 非同期処理、型とか RUBYプログラマがなぜCLOJUREをはじめたのか
1 RailsやHanamiは複雑すぎるように感じた MVCもDDDもしんどい →クラスが多すぎる。Clojureは全て関数なのでシンプル 2 関数型プログラミング →map, reduceなどは僕には必須 3 ORMを使っていても結局生SQLは書く
→Clojure文化ではORMはメジャーではない 4 非同期処理、型とか →Future, core.async, core.spec RUBYプログラマがなぜCLOJUREをはじめたのか
少ないデータ構造と、 たくさんの関数 http://boxofpapers.hatenablog.com/entry/2017/04/10/154333
関数型プログラミング
RDB操作 • ORMもなくはないけど JDBC + 何かしらの SQL Builder の組み合わせのほう が一般的
• JDBC + HoneySQL, JDBC + HugSQL など • Toucan という ORM もある • 結果はクラスではなくハッシュマップで扱う • 全体的にハッシュマップを操作する関数がたくさんあるので問題ない • SQLやデータベースからの結果を過度に抽象化しないので扱いやすい • 余分な知識を必要としない
• STMとかFutureとかあるけどcore.asyncが人気? • channelにデータを送ったり受け取ったりする core.async 非同期処理
• Clojureは動的型付け言語だしハッシュマップや配列でデータをやり取り するので、型ではなくスキーマを定義することで仕様を明白にできる • instrument 関数を実行したときだけチェックする core.spec 型?
人気なエディタ用の拡張機能がだいたいある VS Code, Emacs, Vim, IntelliJ, etc スタンダードなビルド環境 leiningen, shadow-cljs,
etc 一通りライブラリが揃っていて、過度に乱立していない Ring, Pedestal, Reagent, re-frame, etc ライブラリも小さいものが多い 100行程度の物もしばしばある 全てClojureにできる Java, JavaScript, CSS-in-JS, React Native, etc その他好きなところ
何からはじめたらいいのか Clojure 入門 –
インストール WSL/Mac/Linux brew install clojure/tools/clojure brew install leiningen
https://qiita.com/lagenorhynque/items/68c314c288b75a9492ba
https://www.4clojure.com/
Shibuya.lisp (slack) https://join.slack.com/t/shibuya-lisp/shared_invite/zt-a5skvfkm- Hx3YbwuS7d1hqU_Ebs1h3g clojurians (slack) http://clojurians.net/ ノイマンlab (discord) https://discord.com/invite/qTEfHCjQQN
ONLINEコミュニティ
困ったらTwitterで "clojure" の文字を入れてツ イートしよう。 たぶん誰かが助けてくれるはず。
はじめよう、Clojure WSL/Mac/Linux brew install clojure/tools/clojure brew install leiningen