灘校パソコン研究部(NPCA)に
おけるLISPの活用について

2013/11/21

中西 航
(灘高等学校2年)
概要
 自己紹介

 NPCAとは?
 NPCAでのLispの活用
自己紹介
自己紹介
 中西航

 灘高等学校2年生
 NPCA部員
 @stibear1996

 Lisp歴は21ヶ月(2年弱)
 ILC2012に参加
 最近はもっぱらCommon Lispですが,
R7RSはとても気になる
 メタプ...
NPCAとは?
What’s NPCA
 Nada Personal Computer users’







Association の略
灘校パソコン研究部
灘中学校・高等学校のパソコン部
部員 中学生:70名 高校生:36名
主に昼休み,...
活動(2013)














パソコン甲子園にて部員2名のチームが4位に入賞
Facebook CTFにて部員2名のチームが6位に入賞
SECCON 四国大会にて部員4名のチームEpsilonDelta...
活動
 主にプログラミング
 他にも,DTM,3Dモデリング,サーバ管理,








技術書の読書会,講義,etc…
対外活動(KOF, OSCなどのイベント参加)
不定期開催のLT大会
花見,合宿,クリスマスぼっち会など,...
プログラミング
 部員それぞれが思い思いに作りたいものを







作る
成果物は,文化祭や,KOF(関西オープン
フォーラム),OSC(オープンソースカン
ファレンス)などで発表
例えば,chat bot,ジャッジシステム,自
...
プログラミング
 言語
 Lisp,Ruby,Python,Haskell,Coq,Lazy K,

C/C++(順不同)など…
 それぞれ思い思いの言語を使用

 Linux,Windows,OS X など各種OSで開発

 後輩に...
サーバシステム
 Xeon機 3台

 Core2機 2台 (うち1台自作)
 Celeron機 5台
 その他 3台

 Windows ServerやCent OSなど
 仮想機上にはUbuntu Serverも
部運営
 部員の情報はデータにして管理
 Redmineでタスク・進捗管理

 チケットに追い立てられる日々
 定期的な部会の開催
 会計に申し立てると好きな本が
 TaPL,プログラミングコンテストチャレンジ

ブック,SICP ...
文化祭
 毎年GW中に2日間

 1年の集大成
 部誌,展示,ステージ企画
 前日デスマをする部員も

 今年度の部誌の圏論の記事は話題に
 今年からは部誌もGitlabで管理

 部員のスキルアップが望める
外部サービス
 Webサイト

 ブログ
 NPCA Judge

 NPCA CTF(予定)
内部向けサービス
 NCAPA(Redmine)

 Gitlab
 リモートアクセス(VPN)
 書籍貸出し
 NPCA Wiki(予定)
福利厚生








花見
合宿
鍋パーティー
クリスマスぼっち会
エナジードリンク低価格販売サービス
寝袋
ドリンクサービス
 紅茶,コーヒー,烏龍茶,コンソメスープ,味噌

汁

 信仰の自由
NPCAでのLispの活用
とはいえ…
Lisper
 実質私1人

 布教により高1に1人増えた
 LT大会や講義など,日々布教に努める
 が,なかなか成果は上がらず

 Schemeなら使えるという人間は何人か
 昔はOBが何人か使っていた(らしい)

 中1に期待
Chatbot
 部のSkype部屋で走っている

 Written in Common Lisp
 「ロイディ」を参考にした
 Skype Desktop APIが廃止されるらしいの

で,存亡の危機
 言行録はTumblrに
合宿
 ハッカソンにて,ブラウザゲームを作る

ことに
 それぞれ,
 中1がCでコンソールアプリケーション

 中2がJavaScriptでWeb UI
 私がCommon LispでWebサーバ

 を担当

 一晩ではさすが...
部誌
 今年の文化祭では,Lispのマクロ(特に







Common Lisp)について扱った
打ち上げにてOB(wasabiz氏)にけしかけられ,
Schemeの健全なマクロについて書くことに
夏休み中,名古屋ででこれき氏に...
健全なマクロ
 SchemeはLisp-1

 名前衝突はより深刻な問題
 回避する必要性→健全性
Schemeのマクロ
 syntax-rules,syntax-caseしか知らな

かった
 他にも







Syntactic closure
Reversed sc
Implicit renaming
Explici...
Schemeのマクロ
 R^4RSではAppendixに

 R^5RSではR^4RSから低水準マクロの構文
を無くしたものが追加される
 R^6RSではsyntax-caseが登場
 ライブラリを導入
 そのため,フェーズという概念...
syntax-rules
 R^5RSより追加

 高水準
 健全
 CのプリプロセッサやOcamlのCamlp4のよ

うに,それ自体が別の言語
マクロのCPS変換
 R^5RSのsyntax-rulesを使う際に,マクロ

内でマクロを呼ぶ場合,CPS変換が必要
 これはsyntax-rulesの定義によるもの
 syntax-rulesで書かれたマクロは,実質
的に名前呼び等に...
syntax-case
 R^6RSで追加

 ハイブリッド
 かなり複雑
 闇
syntactic closure
 R^nRSにはない

 低水準
 意図的に健全性を壊せる
 S式だけでなく,マクロ使用時の環境を受

け取る
reversed syntactic closure
 R^nRSにはない

 低水準
 意図的に健全性を壊せる
 scとは逆に,マクロ定義時の環境を受け

取る
explicit renaming
 R^nRSにはない

 低水準
 意図的に健全性を壊せる
 定義時の環境を,生で渡さず,それへの

APIを関数として渡す
 rename関数を用いて,定義時の環境で評
価するシンボルを指定
implicit renaming
 R^nRSにはない

 低水準
 意図的に健全性を壊せる
 erマクロとは逆に,inject関数によって,

展開時の環境で評価するシンボルを指定
SRFI 72
 マクロシステムとパターンマッチングを

分離
 詳しくは知らない
今後
 これらをまとめて,解説するつもり

 健全なマクロについての日本語の文献は
少ない
 さらに言えば,健全なマクロに関する研

究は少ない(?)
 しかし,開いてみれば面白そうな話がご
ろごろ
 他の言語のマクロシステムについて...
質疑応答
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

灘校パソコン研究部(NPCA)におけるLispの活用について

2,136 views

Published on

at Lispセミナー(2013/11/21)

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,136
On SlideShare
0
From Embeds
0
Number of Embeds
49
Actions
Shares
0
Downloads
4
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

灘校パソコン研究部(NPCA)におけるLispの活用について

  1. 1. 灘校パソコン研究部(NPCA)に おけるLISPの活用について 2013/11/21 中西 航 (灘高等学校2年)
  2. 2. 概要  自己紹介  NPCAとは?  NPCAでのLispの活用
  3. 3. 自己紹介
  4. 4. 自己紹介  中西航  灘高等学校2年生  NPCA部員  @stibear1996  Lisp歴は21ヶ月(2年弱)  ILC2012に参加  最近はもっぱらCommon Lispですが, R7RSはとても気になる  メタプログラミング,人工知能などに興味
  5. 5. NPCAとは?
  6. 6. What’s NPCA  Nada Personal Computer users’      Association の略 灘校パソコン研究部 灘中学校・高等学校のパソコン部 部員 中学生:70名 高校生:36名 主に昼休み,放課後に活動 HP: http://www.npca.jp/
  7. 7. 活動(2013)              パソコン甲子園にて部員2名のチームが4位に入賞 Facebook CTFにて部員2名のチームが6位に入賞 SECCON 四国大会にて部員4名のチームEpsilonDeltaが優勝 第34回U-20プログラミング・コンテストにて部員1名が経済 産業大臣賞を受賞 SECCON2013にて部員1名が4位入賞 セキュリティ・キャンプ 2013に1名が参加 オープンソースカンファレンス京都 2013にて講演、展示 第7回アジア太平洋情報オリンピックにて部員1名が銀メダ ル獲得 第67回灘校文化祭 NPCA Programming Contest Alpha #02を開催 日本情報オリンピック本選にて部員1名が銀メダル獲得、1 名が地区優秀賞を獲得 部員4名が情報オリンピック日本代表選考合宿参加権を獲得 部内鍋パーティーを開催
  8. 8. 活動  主にプログラミング  他にも,DTM,3Dモデリング,サーバ管理,      技術書の読書会,講義,etc… 対外活動(KOF, OSCなどのイベント参加) 不定期開催のLT大会 花見,合宿,クリスマスぼっち会など, 福利厚生も充実 最近は活動が多様化 後輩への技術継承など,課題は山積
  9. 9. プログラミング  部員それぞれが思い思いに作りたいものを     作る 成果物は,文化祭や,KOF(関西オープン フォーラム),OSC(オープンソースカン ファレンス)などで発表 例えば,chat bot,ジャッジシステム,自 然言語翻訳など 後輩への講義も また,今年は勉強会など互いに研鑽しあう イベントも
  10. 10. プログラミング  言語  Lisp,Ruby,Python,Haskell,Coq,Lazy K, C/C++(順不同)など…  それぞれ思い思いの言語を使用  Linux,Windows,OS X など各種OSで開発  後輩にどの言語を教えるかは長年の課題  押し付けるわけにもいかないため,なかな か難しい
  11. 11. サーバシステム  Xeon機 3台  Core2機 2台 (うち1台自作)  Celeron機 5台  その他 3台  Windows ServerやCent OSなど  仮想機上にはUbuntu Serverも
  12. 12. 部運営  部員の情報はデータにして管理  Redmineでタスク・進捗管理  チケットに追い立てられる日々  定期的な部会の開催  会計に申し立てると好きな本が  TaPL,プログラミングコンテストチャレンジ ブック,SICP などなど
  13. 13. 文化祭  毎年GW中に2日間  1年の集大成  部誌,展示,ステージ企画  前日デスマをする部員も  今年度の部誌の圏論の記事は話題に  今年からは部誌もGitlabで管理  部員のスキルアップが望める
  14. 14. 外部サービス  Webサイト  ブログ  NPCA Judge  NPCA CTF(予定)
  15. 15. 内部向けサービス  NCAPA(Redmine)  Gitlab  リモートアクセス(VPN)  書籍貸出し  NPCA Wiki(予定)
  16. 16. 福利厚生        花見 合宿 鍋パーティー クリスマスぼっち会 エナジードリンク低価格販売サービス 寝袋 ドリンクサービス  紅茶,コーヒー,烏龍茶,コンソメスープ,味噌 汁  信仰の自由
  17. 17. NPCAでのLispの活用
  18. 18. とはいえ…
  19. 19. Lisper  実質私1人  布教により高1に1人増えた  LT大会や講義など,日々布教に努める  が,なかなか成果は上がらず  Schemeなら使えるという人間は何人か  昔はOBが何人か使っていた(らしい)  中1に期待
  20. 20. Chatbot  部のSkype部屋で走っている  Written in Common Lisp  「ロイディ」を参考にした  Skype Desktop APIが廃止されるらしいの で,存亡の危機  言行録はTumblrに
  21. 21. 合宿  ハッカソンにて,ブラウザゲームを作る ことに  それぞれ,  中1がCでコンソールアプリケーション  中2がJavaScriptでWeb UI  私がCommon LispでWebサーバ  を担当  一晩ではさすがに間に合わず…
  22. 22. 部誌  今年の文化祭では,Lispのマクロ(特に     Common Lisp)について扱った 打ち上げにてOB(wasabiz氏)にけしかけられ, Schemeの健全なマクロについて書くことに 夏休み中,名古屋ででこれき氏に会い, アドバイスを仰ぐ Kyoto.Lisp TT #2で宣伝 鋭意執筆中
  23. 23. 健全なマクロ  SchemeはLisp-1  名前衝突はより深刻な問題  回避する必要性→健全性
  24. 24. Schemeのマクロ  syntax-rules,syntax-caseしか知らな かった  他にも       Syntactic closure Reversed sc Implicit renaming Explicit renaming SRFI 72 など…  処理系によっては伝統的マクロも
  25. 25. Schemeのマクロ  R^4RSではAppendixに  R^5RSではR^4RSから低水準マクロの構文 を無くしたものが追加される  R^6RSではsyntax-caseが登場  ライブラリを導入  そのため,フェーズという概念が必要に
  26. 26. syntax-rules  R^5RSより追加  高水準  健全  CのプリプロセッサやOcamlのCamlp4のよ うに,それ自体が別の言語
  27. 27. マクロのCPS変換  R^5RSのsyntax-rulesを使う際に,マクロ 内でマクロを呼ぶ場合,CPS変換が必要  これはsyntax-rulesの定義によるもの  syntax-rulesで書かれたマクロは,実質 的に名前呼び等に等価なため  syntax-caseやsc等ではこれは必要ない
  28. 28. syntax-case  R^6RSで追加  ハイブリッド  かなり複雑  闇
  29. 29. syntactic closure  R^nRSにはない  低水準  意図的に健全性を壊せる  S式だけでなく,マクロ使用時の環境を受 け取る
  30. 30. reversed syntactic closure  R^nRSにはない  低水準  意図的に健全性を壊せる  scとは逆に,マクロ定義時の環境を受け 取る
  31. 31. explicit renaming  R^nRSにはない  低水準  意図的に健全性を壊せる  定義時の環境を,生で渡さず,それへの APIを関数として渡す  rename関数を用いて,定義時の環境で評 価するシンボルを指定
  32. 32. implicit renaming  R^nRSにはない  低水準  意図的に健全性を壊せる  erマクロとは逆に,inject関数によって, 展開時の環境で評価するシンボルを指定
  33. 33. SRFI 72  マクロシステムとパターンマッチングを 分離  詳しくは知らない
  34. 34. 今後  これらをまとめて,解説するつもり  健全なマクロについての日本語の文献は 少ない  さらに言えば,健全なマクロに関する研 究は少ない(?)  しかし,開いてみれば面白そうな話がご ろごろ  他の言語のマクロシステムについても, 興味がある
  35. 35. 質疑応答
  36. 36. ご清聴ありがとうございました

×