プログラミング言語 Crystal

Crystal の日本語ドキュメントはしばらく更新されておらず情報が古くなっているため、できるだけ原文の英語ドキュメントで最新の情報を参照ください。

翻訳にご協力いただける方は翻訳プロジェクトの issue や Crystal-JP の Slack からお知らせください。

HTTP サーバー

もう少し興味深いプログラムを見てみましょう。こちらは HTTP サーバーの例になります。

require "http/server"

server = HTTP::Server.new(8080) do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world! The time is #{Time.now}"
end

puts "Listening on http://0.0.0.0:8080"
server.listen

上記のコードをすべて理解するためにはこのドキュメント全体を読む必要がありますが、ここでいくつかの点について説明しておきます。

  • require で、他のファイルで定義されたコードを読み込むことができます

      require "http/server"
    
  • 型を指定することなくローカル変数を定義することができます

      server = HTTP::Server.new ...
    
  • オブジェクトに対してメソッドを実行 (またはメッセージを送信) することでプログラムを構築します

      HTTP::Server.new(8000) ...
      ...
      Time.now
      ...
      puts "Listening on http://0.0.0.0:8080"
      ...
      server.listen
    
  • ブロックを使うと簡単にコードを再利用することができ、また、関数型の世界にあるいくつかの機能を利用することが可能になります

      HTTP::Server.new(8080) do |context|
        ...
      end
    
  • 文字列埋め込み (string interpolation) を使うと、簡単に文字列に式を埋め込むことができます。Crystal にはその他にも多くのシンタックスがあります。例えば、array や hash、そして range や tuple などです

      "Hello world! The time is #{Time.now}"