Crystalでツールを作ってみた

 Crystalでツールを作ってみた

942c1be108f83007f6450e997634b846?s=128

mofumofu3n

June 22, 2018
Tweet

Transcript

  1. Crystal でツールを作ってみた Crystal でツールを作ってみた @mofumofu3n

  2. 自己紹介 自己紹介

  3. Tatsuya Tanaka(@mofumofu3n) トラベルブック株式会社 今はRuby 、昔はAndroid Crystal 始めました

  4. さっきまで沖縄にいました! さっきまで沖縄にいました!

  5. Crystal 0.25.0 リリース Crystal 0.25.0 リリース

  6. reveal.cr の紹介 reveal.cr の紹介 https://github.com/mofumofu3n/reveal.cr https://github.com/mofumofu3n/reveal.cr

  7. reveal.js はHTML やMarkdown で記述したファイル をプレゼンテーションにできるライブラリ reveal.js を簡単に使えるようにしたCrystal 製のツー ル yusukebe

    さん作の をCrystal で書いてみた revealgo
  8. 使い方 使い方 マークダウンファイル(index.md) を指定して起動 ポート指定 テーマの変更 $ revealcr index.md Open

    http://127.0.0.1:4000 $ revealcr -p 8080 index.md Open http://127.0.0.1:8080 $ revealcr -t solarized Open http://127.0.0.1:4000
  9. 仕組み 仕組み reveal.js はサブモジュールとして取り込み 指定されたmarkdown ファイルの名前をreveal.js 用 のテンプレートに埋め込み ローカルにhttp サーバーを立ち上げる

    <section data-markdown=" ファイル名" ...>
  10. 使った標準API 使った標準API ecr le http/server option_parser

  11. ハマったポイント ハマったポイント

  12. 1. Crystal アップデート 1. Crystal アップデート

  13. http/server の実装方法 http/server の実装方法 0.24.0 まで 0.24.0 まで require "http/server"

    HTTP::Server.new("0.0.0.0", 8080, [ HTTP::StaticFileHandler.new("."), ]).listen
  14. 0.25.0 から 0.25.0 から require "http/server" server = HTTP::Server.new([ HTTP::StaticFileHandler.new("."),

    ]) server.bind "127.0.0.1", 8080 # <- リファレンス通りに書いたがエラーになる server.listen
  15. 2. ドキュメントが間違ってた 2. ドキュメントが間違ってた

  16. server.bind "127.0.0.1", 8080 https://crystal-lang.org/api/0.25.0/HTTP/Server.html https://crystal-lang.org/api/0.25.0/HTTP/Server.html server.bind_tcp "127.0.0.1", 8080 https://crystal-lang.org/api/master/HTTP/Server.html https://crystal-lang.org/api/master/HTTP/Server.html

  17. 3. option_parser の使い方 3. option_parser の使い方

  18. $ revealcr -p 8080 # 8080 を受け取りたい

  19. OptionParser.parse! do |parser| parser.on("-p", "--port", "port with running.") do |v|

    port = v end end OptionParser.parse! do |parser| # 第二引数で= 以降を書かないと値が受け取れない parser.on("-p PORT", "--port=PORT", "port with running.") do |v| port = v end end
  20. 4. デバック方法 4. デバック方法

  21. lldb でデッバックできた。けど、変数ウォッチ出来 ない。。 gdb も試したけど、Mac OS だとうまく動かない

  22. 皆さんどうやってデバックしていますか? 皆さんどうやってデバックしていますか?

  23. 良かったポイント 良かったポイント

  24. Ruby のシンタックスと似てるから入りやすい 型( ・∀・) イイ!! 複数の型が指定できるのに少し戸惑った 言語でライブラリの作成やパッケージマネージャー をサポートしてる

  25. 宣伝 宣伝 エンジニア絶賛募集中です! https://www.wantedly.com/companies/travelbook