{"componentChunkName":"component---src-modules-datocms-post-page-page-tsx","path":"/posts/39","result":{"data":{"post":{"title":"Crystal言語をMacに入れて\"Hello World\"してみた","author":{"name":"suin","images":{"r32":{"src":"https://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&fm=png&h=32&mask=ellipse&w=32","srcSet":"https://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=1&fm=png&h=32&mask=ellipse&w=32 1x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=1.5&fm=png&h=32&mask=ellipse&w=32 1.5x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=2&fm=png&h=32&mask=ellipse&w=32 2x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=3&fm=png&h=32&mask=ellipse&w=32 3x"},"r48":{"src":"https://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&fm=png&h=48&mask=ellipse&w=48","srcSet":"https://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=1&fm=png&h=48&mask=ellipse&w=48 1x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=1.5&fm=png&h=48&mask=ellipse&w=48 1.5x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=2&fm=png&h=48&mask=ellipse&w=48 2x,\nhttps://www.datocms-assets.com/29850/1591833290-avatar512.jpg?auto=format&dpr=3&fm=png&h=48&mask=ellipse&w=48 3x"}},"bio":"好き: TypeScript, DDD, OOP／#YYTypeScript の主催者／Qiita 4位／株式会社クラフトマンソフトウェア取締役／『実践ドメイン駆動設計』邦訳レビュア／#分報 考案者／Web自動テストShouldBeeを開発"},"date":"2015年10月13日","tags":["Crystal"],"category":"プログラミング","body":"<a href=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/3607ce21-05ef-4a56-8a84-f987aff692ce.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img width=\"1200\" alt=\"image.png (40.2 kB)\" src=\"https://c16e-esa-io-public-files.s3-ap-northeast-1.amazonaws.com/uploads/production/attachments/15637/2020/05/28/18740/3607ce21-05ef-4a56-8a84-f987aff692ce.png\"></a>\n<p data-sourcepos=\"3:1-3:206\">Ruby風のシンタクスで静的型チェックのある言語「<a href=\"http://crystal-lang.org/\" target=\"_blank\" rel=\"noopener noreferrer\">Crystal</a>」をMacにインストールし、Hello Worldするところまでやってみたいと思います。</p>\n<h1 data-sourcepos=\"5:1-5:18\" id=\"1-0-0\" name=\"1-0-0\">\n<a class=\"anchor\" id=\"Crystalの特徴\" name=\"Crystal%E3%81%AE%E7%89%B9%E5%BE%B4\" href=\"#Crystal%E3%81%AE%E7%89%B9%E5%BE%B4\" data-position=\"1-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"Crystalの特徴\"> &gt; Crystalの特徴</span></a>Crystalの特徴</h1>\n<ul data-sourcepos=\"7:1-12:0\">\n<li data-sourcepos=\"7:1-7:51\">Rubyにインスパイヤされたシンタクス</li>\n<li data-sourcepos=\"8:1-8:98\">静的型チェックがあるが、メソッドの引数や変数の型指定を省略できる</li>\n<li data-sourcepos=\"9:1-9:82\">Crystalでバインディングを書くことでCのコードを呼び出せる</li>\n<li data-sourcepos=\"10:1-10:104\">コンパイル時評価とコード生成を提供し、ボイラープレートコードを避ける</li>\n<li data-sourcepos=\"11:1-12:0\">効率のいいネイティブコードを生成する</li>\n</ul>\n<p data-sourcepos=\"13:1-15:231\">個人的に最近Go言語をやっていて、<br>\n『<a href=\"http://qiita.com/suin/items/22662f43b6a6e8728798\" target=\"_blank\" rel=\"noopener noreferrer\">動的言語だけやってた僕が、38日間Go言語を書いて学んだこと</a>』などを書いたりもしているのですが、<br>\n速度が要求されるプログラムや配布する必要があるCLIツールなど、Go言語でコードを書いて解決しているものをRuby風のシンタクスでやれたら、それは便利だなと思います。</p>\n<h1 data-sourcepos=\"17:1-17:42\" id=\"2-0-0\" name=\"2-0-0\">\n<a class=\"anchor\" id=\"CrystalをMacにインストールする\" name=\"Crystal%E3%82%92Mac%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B\" href=\"#Crystal%E3%82%92Mac%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B\" data-position=\"2-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"CrystalをMacにインストールする\"> &gt; CrystalをMacにインストールする</span></a>CrystalをMacにインストールする</h1>\n<p data-sourcepos=\"19:1-19:108\">CrystalはHomebrewで配布されているので、簡単にインストールすることができます。</p>\n<div class=\"code-block\" data-sourcepos=\"21:1-25:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>brew tap manastech/crystal\nbrew update\nbrew <span class=\"nb\">install </span>crystal-lang\n</code></pre></div>\n</div>\n<p data-sourcepos=\"27:1-27:66\">インストールされたらバージョンを確認します。</p>\n<div class=\"code-block\" data-sourcepos=\"29:1-32:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nv\">$ </span>crystal <span class=\"nt\">--version</span>\nCrystal 0.8.0 <span class=\"o\">(</span>Tue Oct 13 11:37:22 UTC 2015<span class=\"o\">)</span>\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"34:1-34:30\" id=\"3-0-0\" name=\"3-0-0\">\n<a class=\"anchor\" id=\"&amp;quot;Hello World&amp;quot;を実行する\" name=\"&amp;quot;Hello%20World&amp;quot;%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B\" href=\"#&amp;quot;Hello%20World&amp;quot;%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B\" data-position=\"3-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"&amp;quot;Hello World&amp;quot;を実行する\"> &gt; \"Hello World\"を実行する</span></a>\"Hello World\"を実行する</h1>\n<p data-sourcepos=\"36:1-36:68\">Crystalの拡張子は.crです。<code>hello-world.cr</code>を作ります。</p>\n<div class=\"code-block\" data-sourcepos=\"38:1-40:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>ruby</div>\n<div class=\"highlight\"><pre class=\"highlight ruby\"><code><span class=\"nb\">puts</span> <span class=\"s2\">\"Hello world!\"</span>\n</code></pre></div>\n</div>\n<p data-sourcepos=\"42:1-42:60\">実行だけなら、<code>crystal</code>コマンドで行えます。</p>\n<div class=\"code-block\" data-sourcepos=\"44:1-47:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nv\">$ </span>crystal hello-world.cr\nHello world!\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"49:1-49:23\" id=\"4-0-0\" name=\"4-0-0\">\n<a class=\"anchor\" id=\"ビルドしてみる\" name=\"%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" href=\"#%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B\" data-position=\"4-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"ビルドしてみる\"> &gt; ビルドしてみる</span></a>ビルドしてみる</h1>\n<p data-sourcepos=\"51:1-51:84\">実行形式にビルドするには、<code>crystal build</code>コマンドを叩きます。</p>\n<div class=\"code-block\" data-sourcepos=\"53:1-55:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code>crystal build hello-world.cr\n</code></pre></div>\n</div>\n<p data-sourcepos=\"57:1-58:123\">これを実行すると、実行形式の<code>hello-world</code>が生成されます。<br>\n生成された実行形式を叩いて、「Hello world!」が表示されればちゃんとビルドできています。</p>\n<div class=\"code-block\" data-sourcepos=\"60:1-63:3\">\n<div class=\"code-filename\">\n<i class=\"fa fa-file-code-o\"></i>shell</div>\n<div class=\"highlight\"><pre class=\"highlight shell\"><code><span class=\"nv\">$ </span>./hello-world                                                                                            <span class=\"o\">[</span>20:54:58]\nHello world!\n</code></pre></div>\n</div>\n<h1 data-sourcepos=\"65:1-65:36\" id=\"5-0-0\" name=\"5-0-0\">\n<a class=\"anchor\" id=\"Crystal言語を応援したい方\" name=\"Crystal%E8%A8%80%E8%AA%9E%E3%82%92%E5%BF%9C%E6%8F%B4%E3%81%97%E3%81%9F%E3%81%84%E6%96%B9\" href=\"#Crystal%E8%A8%80%E8%AA%9E%E3%82%92%E5%BF%9C%E6%8F%B4%E3%81%97%E3%81%9F%E3%81%84%E6%96%B9\" data-position=\"5-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"Crystal言語を応援したい方\"> &gt; Crystal言語を応援したい方</span></a>Crystal言語を応援したい方</h1>\n<p data-sourcepos=\"67:1-68:105\">Ruby風シンタクスで、静的型チェックもあり、実行形式も簡単に作れるCrystal言語ですが、<br>\n開発がアクティブに進んでいて、同時にサポーターも募集しているようです。</p>\n<p data-sourcepos=\"70:1-70:192\">Crystal言語に将来性を感じた方、開発を応援したい方はサポーターになってみてはいかがでしょうか？(僕も微力ながらサポーターになりました)</p>\n<p data-sourcepos=\"72:1-72:124\"><a href=\"https://salt.bountysource.com/teams/crystal-lang\" target=\"_blank\" rel=\"noopener noreferrer\">Support Crystal Language: Fast as C, slick as Ruby - Salt - Bountysource</a></p>\n<h1 data-sourcepos=\"75:1-75:11\" id=\"6-0-0\" name=\"6-0-0\">\n<a class=\"anchor\" id=\"まとめ\" name=\"%E3%81%BE%E3%81%A8%E3%82%81\" href=\"#%E3%81%BE%E3%81%A8%E3%82%81\" data-position=\"6-0-0\"><i class=\"fa fa-link\"></i><span class=\"hidden\" data-text=\"まとめ\"> &gt; まとめ</span></a>まとめ</h1>\n<p data-sourcepos=\"77:1-78:189\">Crystal言語はMacで簡単に試して見れることがわかりました。<br>\nシンタクスがRuby風ということもあり、Railsで作っているアプリで部分的に速度を求めたい場所で取り入れてみるといいかも知れないですね。</p>\n"}},"pageContext":{"id":"DatoCmsPost-5142974-ja","description":"Ruby風のシンタクスで静的型チェックのある言語「Crystal」をMacにインストールし、Hello Worldするところまでやってみたいと思います。 Crystalの特徴 Rubyにインスパイヤされたシンタクス 静的型チェックがあるが、メソッドの引数や変数の型指定を省略できる Crystalでバインディングを書くことでCのコードを呼び出せる コンパイル時評価とコード生成を提供し、ボイラープレートコードを避ける 効率のいいネイティブコードを生成する 個人的に最近Go言語をやっていて、 『動的言語だけやってた僕が、38日間Go言語を書いて学んだこと』などを書いたりもしているのですが、 速度が要","toc":[{"tag":"h1","depth":1,"href":"#Crystal%E3%81%AE%E7%89%B9%E5%BE%B4","text":"Crystalの特徴","html":"Crystalの特徴"},{"tag":"h1","depth":1,"href":"#Crystal%E3%82%92Mac%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B","text":"CrystalをMacにインストールする","html":"CrystalをMacにインストールする"},{"tag":"h1","depth":1,"href":"#&quot;Hello%20World&quot;%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B","text":"\"Hello World\"を実行する","html":"\"Hello World\"を実行する"},{"tag":"h1","depth":1,"href":"#%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B","text":"ビルドしてみる","html":"ビルドしてみる"},{"tag":"h1","depth":1,"href":"#Crystal%E8%A8%80%E8%AA%9E%E3%82%92%E5%BF%9C%E6%8F%B4%E3%81%97%E3%81%9F%E3%81%84%E6%96%B9","text":"Crystal言語を応援したい方","html":"Crystal言語を応援したい方"},{"tag":"h1","depth":1,"href":"#%E3%81%BE%E3%81%A8%E3%82%81","text":"まとめ","html":"まとめ"}],"ogpImageUrl":"https://www.datocms-assets.com/29850/1593190022-pastedimage20200627146.png?fm=png&mark64=aHR0cHM6Ly93d3cuZGF0b2Ntcy1hc3NldHMuY29tLzI5ODUwLzE1OTMxNTQ2MzYtdHJhbnNwYXJlbnQtcGl4ZWwucG5nP3c9NDAwJmg9NjQmZml0PWNyb3AmYmxlbmQ2ND1hSFIwY0hNNkx5OTNkM2N1WkdGMGIyTnRjeTFoYzNObGRITXVZMjl0THpJNU9EVXdMekUxT1RFNE16TXlPVEF0WVhaaGRHRnlOVEV5TG1wd1p6OXRZWE5yUFdWc2JHbHdjMlVtWm0wOWNHNW5KbmM5TWpVMkptZzlNalUyJmJsZW5kLWg9NjQmYmxlbmQteD0wJmJsZW5kLXk9MCZibGVuZC1tb2RlPW5vcm1hbCZtYXJrNjQ9YUhSMGNITTZMeTloYzNObGRITXVhVzFuYVhndWJtVjBMMzUwWlhoMFAzUjRkQzFoYkdsbmJqMXRhV1JrYkdVbE1rTnNaV1owSm5SNGRDMW1iMjUwUFhOaGJuTXRjMlZ5YVdZbE1rTmliMnhrSm5SNGRDMWpiMnh2Y2oweU1qRTRNVFltZEhoME5qUTlZek5XY0dKbkpuUjRkQzF6YVhwbFBUTXdKbWc5TmpRJm1hcmsteD02NCZtYXJrLWFsaWduPW1pZGRsZSUyQ2xlZnQ&mark-align=bottom%2Cleft&mark-x=100&mark-y=496&blend64=aHR0cHM6Ly93d3cuZGF0b2Ntcy1hc3NldHMuY29tLzI5ODUwLzE1OTMxNTQ2MzYtdHJhbnNwYXJlbnQtcGl4ZWwucG5nP3c9MTIwMCZoPTYzMCZmaXQ9Y3JvcCZtYXJrNjQ9YUhSMGNITTZMeTkzZDNjdVpHRjBiMk50Y3kxaGMzTmxkSE11WTI5dEx6STVPRFV3THpFMU9UTXhOVEE1TkRBdFkzSmhablJ6YldGdUxUQXhMbkJ1WncmbWFyay1hbGlnbj10b3AlMkNjZW50ZXImbWFyay13PTI1MCZtYXJrLXk9ODAmYmxlbmQ2ND1hSFIwY0hNNkx5OWhjM05sZEhNdWFXMW5hWGd1Ym1WMEwzNTBaWGgwUDNSNGRDMWhiR2xuYmoxdGFXUmtiR1VsTWtOalpXNTBaWEltZEhoMExXWnZiblE5YzJGdWN5MXpaWEpwWmlVeVEySnZiR1FtZEhoMExYQmhaRDB4TURBbWRIaDBMV052Ykc5eVBUSXlNVGd4TmlaMGVIUTJORDFSTTBvMVl6TlNhR0pQYVc5blQybHhiblZQUTJ0ck1XaFpMVTlDY1MxWFJuQmxUME5xVDA5Q2NHbEtTVnBYZUhOaWVVSllZak5LYzFwRFRHcG5XbVpxWjJGaWFtZGlYMnBuV2pnbWRIaDBMWE5wZW1VOU5UVW1kejB4TWpBd0ptZzlOak13JmJsZW5kLW1vZGU9bm9ybWFs&blend-mode=normal","otherPost":{"type":"author","title":"ES6のexport/import構文をScalaと比べながら解説","slug":"/posts/42"}}}}