こんにちは。リサーチ・アンド・イノベーションの小川(J-ogawa)と申します。 iOSアプリの開発とサーバサイドの開発をやっています。 私の記事はClojureがテーマです。 Clojure なぜClojureなのか。 恐縮ながら個人的趣味に基づきます。Clojureはシンタックスが一貫しているのと、表現力が高い所がとても好きです。他にも色々といい点はあると思いますが、好きで採用しています。 数年前にClojure作者のRich Hickeyのプレゼンを見て、感銘を受け、勉強を始めた思い出があります。 まだまだClojureはマイナーで、弊社RNIでも主流はRuby, Ruby on Railsですが、Clojureを採用することも視野に入っていたりいなかったり。 clojure.org翻訳ページ Clojureについて書かれてます。 simple made easy Clojure作者
はじめに Clojure/conjは、Clojureの生みの親であるRich Hickeyも所属しているCognitectが主催している、Clojure界では最大のカンファレンスです。毎年アメリカのどこかで開催されており、今年はメリーランド州ボルチモアで行われました。今年はClojureが初めてリリースされてから10周年で、記念すべき回となっていたようです。 今年のClojure/conj 2017では、私も念願の初参加かつ初発表をしてきました。アメリカは遠いですからね…ずっと行ってみたかったのですが、なかなか気軽に見に行くことはできません。今回はトークがacceptされたということで(一昨年はrejectされました)、満を持して参加してきました。 本稿では、Clojure/conjの様子や講演内容をまとめ、2017年現在のトレンドとこれからのClojureに思慮を巡らせて、Clojure
これは Clojure アドベントカレンダー 2017 1日目の記事です。今年1年のClojure/ClojureScript界隈の動きを振り返ってみましょう。 Clojure 1.9リリース間近 昨年5月に1.9 alpha1がリリースされて以降、alphaリリース20回、betaリリース4回を経てようやく先日RCのリリースにこぎ着けました。すでにRC2までリリースが進んでいますが、RC1, RC2ともに本質的にはbeta4と同じもので、正式リリースまでの修正としてはほぼ収束している状態です。 本当はここで「ようやく1.9がリリースされました!」と報告できればよかったのですが、残念ながら正式リリースにはまだ至っていません。しかし、RCリリース後も特に大きな問題が出ていないので、1.9のリリースはもうまもなくではないかと思います。 clojure.specの分離 さて、Clojure 1.
clj-nakano.connpass.com 上記の「Clojure/conj 2017 上映会#1」に参加した。 次の Rich Hickey の Clojure/Conj 2017 のキーノートを日本語で説明するというもの。 www.youtube.com Clojure/Conj 2017 の動画は他のものも Youtube で見ることができるのだが、見よう見ようと思いつつ見れてなかったから、今回参加して Rich の発表を理解できてよかった。 英語の発表は自力だと 1/2 か 1/3 くらいしか理解できてなくて悔しいのだが、発表者のナカムラさんが背景を含めて説明してくれたのでとてもわかりやすかった。 あと Clojure 関係のイベントは初参加なので、意外と人が多くて驚いた。発表中 gitter で他の参加者とコミュニケーションできたのも面白かった。 ↓発表資料 gitpitch
さて、最近日本で静かなClojureブームが起こっています(要出典)。少し前にあった勉強会でも、50人弱の参加がありClojureという言語を学ぶ人が増えてきたという印象です。
最近、弊社で開発しているプロダクトに初めてプログラミング言語Clojureを導入したため、その詳細をご紹介します。 あいさつ Clojure導入の経緯 プロダクトの要件 Clojureで実装する意義 JVM言語としての実用性 シンプルで高い表現力と拡張性 インタラクティブでインクリメンタルな開発スタイル Clojure導入の道のり 機能実現のためのライブラリ検討 プロジェクト構成: Luminus アプリケーション状態管理: mount DBアクセス: HugSQL ジョブスケジューリング: Immutant 日付時刻: clj-time コード品質を底上げするための+αのライブラリ利用 仕様記述/バリデーション: schema 静的解析: cljfmt, eastwood, kibit チームメンバーへの情報共有 ドキュメントとしてのコード(+ docstring, schema, ユニ
こんにちは。とりあえず構文の説明が終わり、後は実際に機能をコードを書きながら確認していく形になりそうですね。 ClojureコードはJavaバイトコードに直接コンパイルされ、Javaを呼び出す際に変換が挟まれることはない。 Clojureは直接JavaのAPIを活用できる。 普通、ClojureのコードはJavaのAPIを生で実行し、Lisp風にすることはない。 → これは結構大きい要素ですね。LispっぽいけどやはりJVM言語と思えるのはこの要素があってこそ。 その他のポイント。 Javaの呼び出しは単純で直接的 プリミティブ型、配列についてのサポートと型ヒント(リードメタデータで定義)によってClojureのコンパイラにJavaのコンパイラの出力と同等のコードを出力させることができる JavaからClojureを呼び出すことも出来る。ClojureはJavaのクラスを動的に生成できる
Eureka EngineeringLearn about Eureka’s engineering efforts, product developments and more.
Clojureは大文字と小文字の違いを気にする ClojureはLisp-1である ()はnilとは異なる readerは副作用を起こさない キーワードはシンボルではない シンボルはストレージではない (Varを参照) nil はシンボルではない t はシンタックスに含まれない。 true を使用する 現在、ユーザープログラムがリードテーブルにアクセスすることはできない let は逐次的に束縛を行う do はループ構造ではない 末尾呼び出し最適化はない。 recur を使用する。 シンタックスクォートはシンボルの解決を行うため、 `x は 'x と異なる。 ` は自動的にgensymを行う。 ~ はアンクォートで、 ',' は空白である マップ、ベクター、セットに対してリーダーのシンタックスが定義されている cons, first および rest は具体的なコンスセルに対してではなく、シ
1つのVPSで動いている既存システムのAzureへの移行を進めています。 その上で既存サーバーに入っている画像ファイルをBLOBストレージ(Azureのオブジェクトストレージ、AWSでいうS3)に移すという作業が必要になりました。 最初はバックアップから画像ファイルをループでひとつづつアップロードする処理をPHPでシンプルに書きました。 require_once 'vendor/autoload.php'; use WindowsAzure\Common\ServicesBuilder; use MicrosoftAzure\Storage\Common\ServiceException; // Create blob REST proxy. $connectionString = ""; $blobRestProxy = ServicesBuilder::getInstance()->c
雨の日はClojureを書こう。晴れた日には外に出て日向ぼっこをしよう。 目標 この文章の目標は、Clojureの教科書になることです。そして、このClojureの教科書は、下のような人々をターゲットに作られます。 Lispを知らない人 Javaを知らない人 プログラミングがどういうものかわかってない人 プログラミングを楽しみたい人(重要! :) ) 上のような人が、Clojureというプログラミング言語を「友達」のように思ってくれるような、あるいは身近に感じるような教科書に出来ればいいなと考えています。 重要 この教科書はまだまだ未完成です。今後、暇を見つけてちょくちょく加筆する予定です。一ヶ月に一度くらいみてくれれば、何らかの項目が更新されているかもしれません。 目次 雨の日 0日目 (ごあいさつ) この本を手っ取り早く読むために 1日目 (S式の日) なぜS式が重要なのか はじまりの
What's New in PHP 8.3 PHP 8.3 is the latest major update in the PHP 8.x series. In addition to performance improvements, it brings a wealth of new features, including amendments to the readonly feature introduced in PHP 8.1; explicitly-typed class constants; a new #[\Override] attribute for methods intended to be overridden from a superclass, and more.
Sustainable Security Requirements with the ASVS Josh Grossman provides a brief overview of what the ASVS is, but takes a closer look at balancing trade-offs and prioritizing different security requirements. Josh shares how to make the process repeatable and how to implement it as part of your own organization's requirements process.
Rich Hickey, the creator of Clojure, is consistent in delivering fantastic, thought-provoking talks. I consider the following required viewing for most, if not all programmers. If you’re not particularly interested in Clojure, I’d suggest watching these videos in reverse order. “Are We There Yet?” is still a very general talk despite some deep dives into Clojure. The rest of the talks are mostly d
Ubuntu での Clojure と Leiningen 超入門 JDK は既に用意出来ているものとしますね.sudo apt-get install openjdk-7-jdk とでもしておけば大丈夫なんじゃないでしょうか? (ダメだったら教えて) まず lein を取ってきてどこかパスの通ったところに設置します.そして実行権限を付与して実行します. # パスとかなんのこっちゃ勢向けコピペ用コマンド # これ実行するだけでとりあえず動かせまっせ export PATH=$HOME/local/bin:$PATH if [ ! -d $HOME/local/bin ]; then mkdir -p $HOME/local/bin; fi # ダウンロード & インストール cd $HOME/local/bin wget https://raw.github.com/technomancy
プログラミング言語というのは、その作者が理想とする世界に合うようにデザインされているものだから(みんな信じないかもだけど、Javaですらそうなのですよ)、Clojureのことを理解するには、作者であるRich Hickeyのプログラミング観を知るのが手っ取り早いでしょう。 Rich Hickeyはさまざまなプレゼンテーションを発表していて、多くはネットで見られます。示唆に富んで皮肉も効いてておもしろいので、ファンも多くて、彼の独特の髪型(往年のロック歌手風)からか、「Rich Hickey’s Greatest Hits」というブログ記事もあったりします(プレゼンテーション動画へのリンク集です)。 ただ、彼のプレゼンテーションは難解な英語も出てきて、私のようなリスニング苦手人間には音声だけで聴くのは難しいです。そういう人は国外でも多いからか、有志が書きおこし(transcript)を公開し
Clojureはじめました 最近、自分の開発ではClojureを使っています。今まで仕事で使っていた中心的な言語がJavaだったので、正反対の言語を使っているということになるけど、意外と違和感はありません。型チェックがないのがしんどいとか、名前の一発変換が安心してできない、とかいうありがちな不満はありますけども。 Clojureというと、LLというよりも「LISP」ってことで有名に思います。この、脳味噌の大シフト感が結構楽しいのです。もともと「Javaと似たような系統だけどもっと楽に書ける」というのには強い興味を持てなくて、もっと一気に考え方が異なるようなものに興味を持ってました。Haskellとか。Clojureというのは、今までの経験を生かしつつも、言語的には大移動ということで、相性は良かったのかもしれない。 Clojureに完全移行したのかというとそういうこともなくて、Javaベース
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く