SlideShare a Scribd company logo
1 of 21
Download to read offline
Common Lispで
Reactはじめました
Endered
自己紹介
● 会津大学学部3年
● 競技プログラミングでレート約2200(黄色)
● この前のJPHacksにGoのサーバーサイドで参加しました
● 最近はTSでフロント/バック両方の勉強中です
● アカツキさんのgame jamで優勝
● ラクスルさんのハッカソン型インターンでCTO賞
● インターン先募集中
自己紹介
好きなプログラミング言語
● Common Lisp
趣味
● Common Lisp
ICPCを引退したら使いたい言語No.1
● Common Lisp
Common Lispで
Reactはじめました
Endered
Common Lispで
Reactはじめました
Endered
どうしてこうなった
すべてをsshで管理するのが面倒くさい
スマホにターミナルをインストールして
sshでcliアプリを操作したいですか?私は嫌です。
どうしてこうなった
強い人: 「関数型言語が好きならElmやClojure Scriptを使えば良いんじゃないでしょう
か?」
私: なるほど
================その後================
私: これは私の求めるものと微妙に違う…
Google: 「JSCLっていうCommon Lisp ➜ js トランスパイラがあるで。」
私: もろたで工藤!
JSCLについて
● Common LispのコードをJSに変換してくれるライブラリ
● ただし、日本語英語どちらでも利用事例/解説文がほぼなし
(使い方がわからない)(READMEはちゃんと書いて…)
○ alert(“Hello World”)するのに2日かかりました。
JSCLについて
● Common LispのコードをJSに変換してくれるライブラリ
● ただし、日本語英語どちらでも利用事例/解説文がほぼなし
(使い方がわからない)(READMEはちゃんと書いて…)
○ alert(“Hello World”)するのに2日かかりました。
前例無いなら作ってしまおう!(深夜テンション)
せっかくならReactも勉強しちゃえ
(今回、実装難度が上がった主因)
ということで
Common Lisp用Reactラッパー
作っちゃいました(未完成)
簡単な言語仕様
トランスパイラでReact使用したときの死亡原因の3つ
1. createElementの引数に関数コンポーネントの名前の文字列を渡す
2. 関数引数の”個数”について
3. 2言語のどちらのデータ構造を使うか決められない
トランスパイラの難しさ
トランスパイラの難しさ(どっちのdictionary?)
Q. トランスパイラを使うとき、辞書型データ構造はどちら側のを採用しますか?
(両方使うと変換コストが上がるため選択するべき)
A. 使うライブラリによる
ReactはJSのdictionaryを多用する言語なのでCommon Lisp側は使わないように。
トランスパイラの難しさ(関数引数の個数)
この関数定義はjs側ではどう認識
されるでしょうか?
トランスパイラの難しさ(関数引数の個数)
この関数定義はjs側ではどう認識
されるでしょうか?
可変長引数関数
つまり、React側からは可変長引数関数
と思われて引数を渡されて、Common
Lisp側は単引数が与えられると思っている
実際に動かしてみた
コンパイルの風景をお楽しみください。
感想
● フロントエンドをしたことがなかったので、
ようやく使い方を知れて良かった
● ポートフォリオサイトをこれで作れる
● ハッカソンにフロント要因で参加できます!
ここで発生する疑問
これReactなの?
Common Lispで遊んだだけの内容じゃないの?
Reactです
使い方が気になる人へ
https://github.com/Endered/cl-react
(未完成なので注意)

More Related Content

What's hot

Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回Mitsuru Mutaguchi
 
Fuel php をもっと composer で使う
Fuel php をもっと composer で使うFuel php をもっと composer で使う
Fuel php をもっと composer で使うTaichi Inaba
 
F#談話室(3) LT
F#談話室(3) LTF#談話室(3) LT
F#談話室(3) LT7shi
 
F#とトランスレータ
F#とトランスレータF#とトランスレータ
F#とトランスレータ7shi
 
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜parrotstudio
 
Swiftのデリゲートdelegateの理解と手順@Swift beginners
Swiftのデリゲートdelegateの理解と手順@Swift beginnersSwiftのデリゲートdelegateの理解と手順@Swift beginners
Swiftのデリゲートdelegateの理解と手順@Swift beginnersYosuke Nakayama
 
Ruby Introduction
Ruby IntroductionRuby Introduction
Ruby IntroductionYushiroDodo
 
名古屋生まれのPHP逆引きレシピ
名古屋生まれのPHP逆引きレシピ名古屋生まれのPHP逆引きレシピ
名古屋生まれのPHP逆引きレシピHitoshi Asano
 
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#ssusera3d157
 
PHPで時間旅行をする方法
PHPで時間旅行をする方法PHPで時間旅行をする方法
PHPで時間旅行をする方法Yoshio Hanawa
 
古い?ダサい?まだまだイケルChef!
古い?ダサい?まだまだイケルChef!古い?ダサい?まだまだイケルChef!
古い?ダサい?まだまだイケルChef!Naoto Ishizawa
 
いよいよPHPerもリーンで行こう
いよいよPHPerもリーンで行こういよいよPHPerもリーンで行こう
いよいよPHPerもリーンで行こうTsutomu Chikuba
 
OpenCVでちょっとしたものを作った話
OpenCVでちょっとしたものを作った話OpenCVでちょっとしたものを作った話
OpenCVでちょっとしたものを作った話Manaka TAKAHASHI
 
モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤karupanerura
 
Japanese font test
Japanese font testJapanese font test
Japanese font testtamtam180
 

What's hot (19)

K ruby-oct-2011
K ruby-oct-2011K ruby-oct-2011
K ruby-oct-2011
 
Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回
 
Fuel php をもっと composer で使う
Fuel php をもっと composer で使うFuel php をもっと composer で使う
Fuel php をもっと composer で使う
 
F#談話室(3) LT
F#談話室(3) LTF#談話室(3) LT
F#談話室(3) LT
 
F#とトランスレータ
F#とトランスレータF#とトランスレータ
F#とトランスレータ
 
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
「もうなにもこわくない」関数型言語 〜ふつうのプログラマが関数型言語を知るべき理由・reload〜
 
Me and GitHub
Me and GitHubMe and GitHub
Me and GitHub
 
Swiftのデリゲートdelegateの理解と手順@Swift beginners
Swiftのデリゲートdelegateの理解と手順@Swift beginnersSwiftのデリゲートdelegateの理解と手順@Swift beginners
Swiftのデリゲートdelegateの理解と手順@Swift beginners
 
Quercus on gae公開版
Quercus on gae公開版Quercus on gae公開版
Quercus on gae公開版
 
Ruby Introduction
Ruby IntroductionRuby Introduction
Ruby Introduction
 
名古屋生まれのPHP逆引きレシピ
名古屋生まれのPHP逆引きレシピ名古屋生まれのPHP逆引きレシピ
名古屋生まれのPHP逆引きレシピ
 
(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#(超初心者向け)オブジェクト指向とC#
(超初心者向け)オブジェクト指向とC#
 
Clrh60 lt
Clrh60 ltClrh60 lt
Clrh60 lt
 
PHPで時間旅行をする方法
PHPで時間旅行をする方法PHPで時間旅行をする方法
PHPで時間旅行をする方法
 
古い?ダサい?まだまだイケルChef!
古い?ダサい?まだまだイケルChef!古い?ダサい?まだまだイケルChef!
古い?ダサい?まだまだイケルChef!
 
いよいよPHPerもリーンで行こう
いよいよPHPerもリーンで行こういよいよPHPerもリーンで行こう
いよいよPHPerもリーンで行こう
 
OpenCVでちょっとしたものを作った話
OpenCVでちょっとしたものを作った話OpenCVでちょっとしたものを作った話
OpenCVでちょっとしたものを作った話
 
モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤モジュール開発におけるぼくの試行錯誤
モジュール開発におけるぼくの試行錯誤
 
Japanese font test
Japanese font testJapanese font test
Japanese font test
 

Biglt endered-2021-12-11