SlideShare a Scribd company logo
1 of 17
Download to read offline
clominal
clojureで作る
Application Platform
自己紹介
● 及川正崇(おいかわまさみつ)
● 静岡県在住のプログラマ
● 俺様言語処理系を作ってたらSchemeに遭遇
● 紆余曲折を経てclojureに落ち着く
理想的な環境
● ちょっとしたツールを手早く作れる
● 柔軟な言語
● 既存のライブラリが豊富にある
● 「気軽に」GUIを作れる
● 環境構築が楽
clojureを選んだ理由
● Lisp(repl、S式、マクロ)
● Javaの基盤を使いまわせる
– 豊富な標準クラスライブラリ(GUI付き※)
– 豊富な3rdParty製クラスライブラリ
– 豊富な技術情報
● 環境構築が割と楽
とはいえ・・・
テキストエディタとreplだけではしんどい・・・
となるとやはりEmacsで開発する?
Emacsは・・・
● すごい環境だと思う
→Emacs Lispで設定どころかアプリが作れる
● でもどこまで行ってもEmacs Lisp
→いろいろ制限があるようで、どうしても
 本気で勉強する気になれない。。
結局、自分が欲しいのは、
マクロ言語がclojureのEmacsモドキ
おもしろそうだから
作ってみよう
「clominal」の誕生
● ベースはテキストエディタとして実装
● すべてclojureで実装
● 当然clojureで機能拡張可能(GUI含む)
● replもGUIのツールとして実装したい
→clojureの関数呼び出しがまんまコマンドに!
→「clojure」の「端末(terminal)」
    ↓
 「clominal」と命名
 ちょっと響きがかっこよくて気に入っている
実装済みの機能
まだテキストエディタの基本機能だけしかない
● 簡単なファイル操作(開く、保存、閉じる)
● 検索(使いにくい)
● clojureコードのハイライト表示
● S式単位での移動
● ショートカットキー機構(Emacsのような複合
キーストロークを実現)
実装はまだ全然貧弱
困っている事の方がはるかに多い。。
困ってる事(テキストエディタ)
● 当初「コアな機能は全て標準クラスライブラリ
で」と息巻いていた
● が、エディタ部分で使っていたJTextPaneの
Syntax Highlightが思う通りに実装できず
● O型なのでなんだか面倒くさくなってきて
● RSyntaxTextArea.jarを使うことにしてお茶を
濁している。
困ってる事(日本語変換ウィンドウ)
● Linuxで実行した場合、日本語変換候補ウィン
ドウがJFrameの左下に出てしまう。
● 結構致命的な気がするけどO型なので(ry
● Windowsでもおかしな位置に表示されたが、
こちらは一応座標を返してきたので、補正して
カーソル位置に表示できるようにしてある。
● 貧乏人なのでMacでの挙動は知らない。。
困ってる事(置換機能)
● RSyntaxTextArea.jarが持っている置換機能
の呼び出しがうまくできない。
● ソースを見たが、置換の関数は検索の関数と
アクセス記述子が異なっていた。(private)
● なので、リフレクションを使って無理やり呼び出
そうとしたが、なぜかうまく呼び出せない。
● O型だけど、これは何とかしたいと思ってる。
困ってる事(性能)
● 爆速PCだと違和感を感じないが、超非力な
PCだとかなりもっさりした動き
● ボトルネックを調べて改善したいけど、ボトル
ネックの調べ方がいまいち分かってなくて放置
状態
困ってる事(設計とコード)
● 基本的な設計指針がしっかりと決まってなくて
構造が汚い
(Emacsを先生にしないとダメな気がする)
● 設定ファイルsettings.cljをどういう位置づけに
すべきなのか割と本気で分からない
● 「手続き」丸出しのclojureコードでちょっと恥
ずかしい
clominalは・・・
● まだまだ課題が山積み
● その上ブサイク
● でもかわいい我が子のようなヤツなので
のんびり実装していこうと思っています
ご清聴ありがとうございました

More Related Content

Similar to clominal

渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
Yoshitaka Kawashima
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
Koichi Sakata
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
Naruto TAKAHASHI
 
Clojureの発表など
Clojureの発表などClojureの発表など
Clojureの発表など
Kikuta Go
 

Similar to clominal (20)

大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
Macで快適にプログラミング
Macで快適にプログラミングMacで快適にプログラミング
Macで快適にプログラミング
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作Yet Another DLR for Silverlightの試作
Yet Another DLR for Silverlightの試作
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
Eclipse xtext 紹介
Eclipse xtext 紹介Eclipse xtext 紹介
Eclipse xtext 紹介
 
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
 
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドするDockerHubを活用してAnsibleのPlaybookを自動ビルドする
DockerHubを活用してAnsibleのPlaybookを自動ビルドする
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼうGraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
GraalVMで使われている、他言語をJVM上に実装する仕組みを学ぼう
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729
 
Sphinxの環境構築が再現できない問題をDockerで解決してみた
Sphinxの環境構築が再現できない問題をDockerで解決してみたSphinxの環境構築が再現できない問題をDockerで解決してみた
Sphinxの環境構築が再現できない問題をDockerで解決してみた
 
Tizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native apiTizen 2.0 alpha でサポートされなかった native api
Tizen 2.0 alpha でサポートされなかった native api
 
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
 
Clojureの発表など
Clojureの発表などClojureの発表など
Clojureの発表など
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
知っておきたいWordPress開発環境 2016年10月編
知っておきたいWordPress開発環境 2016年10月編知っておきたいWordPress開発環境 2016年10月編
知っておきたいWordPress開発環境 2016年10月編
 

Recently uploaded

Recently uploaded (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

clominal