Home About
ラムダ(式)を javascript と kotlin script と golang で使う

パーサーコンビネータについて調べていて、 そもそもその元になる概念としてコンビネータがあることを知る(いまさら?!)。 つまり、パーサーコンビネータはいろいろあるコンビネータの中の一つ。 そして、いろいろあるコンビネータの中でもっとも有名なのが Y コンビネータとか Z コンビネータらしい。 そして、コンビネータを構成するパーツの一つがラムダ(式)とか無名関数であると。

名前付き関数はいつも使っていて、そして名前無し関数(無名関数)も結構使う。 では、ラムダ(式) と無名関数ってイコールじゃないの? と思って調べるもよくわからない。

Wikipedia によると: 「プログラミング言語における無名関数(英語: anonymous functionあるいはnameless function)とは,名前付けされずに定義された関数のことである.無名関数を表現するための方法には様々なものがあるが,近年主流となっているのはラムダ式による記法である.」 ということで、ラムダ式(という概念)をプログラム言語で表現するときに使うのが無名関数(または匿名関数)と考えて問題なさそう。

パーサーコンビネータや Yコンビネータを理解するための最初の一歩としてラムダ式を把握する。

» Read More
ExtendScript で Underscore.js を使う(その2) webpack 編

ExtendScript で Underscore.js を使う(その1) rollup 編 で rollup + babel + Underscore.js を試したのだが、 rollup を webpack に差し替えての Underscore.js を試したのでその備忘録。

» Read More
ExtendScript で Underscore.js を使う(その1) rollup 編

Node.js で ExtendScript する話(パート3) ES6 Javascript 記述を使いたい で node.js を使ってモジュールを解決しつつ、アロー関数や const let などのES6 Javascript 記述を使って書けるようになった。 そこで、次に Underscore.js を利用した ExtendScript をコーディングすることを考えます。

実のところ単に Underscore.js を使うだけならば、ExtendScript 標準の @include ディレクティブを使うことで普通に利用できます。 しかしこの方法では、 (1)Underscore.js のファイルを常に本体のファイルとともに配布する必要があり面倒、 (2)Underscore.js を使う側のアプリケーションコードで、ES3レベルの Javascript しか記述できない、 という2つの問題があります。 Node.js + rollup + babel を使う方式でこの問題を解決しましょう。

» Read More
Node.js で ExtendScript する話(パート4) webpack アゲイン

Node.js で モジュールを使って ExtendScript するために

その後、さらに調べてみると、 パート1で不都合があった webpack で、オプションを適切に指定することで、 ExtendScript用のコードにバンドルできることがわかりました。

Node.js ではさまざまなツールの組み合わせが存在していて、自分の目的にあうツールがどれなのか・・・という。 アプリケーションコードを書く前段階での試行錯誤が半端ないですね。

» Read More
Node.js で ExtendScript する話(パート3) ES6 の Javascript 記述を使いたい

実のところ、 パート1パート2は、この ES6 の Javascript 記述で ExtendScript 用のコードを書くための前準備であった。

ここまでで、モジュールを使ってコードを書けるようになり、rollup により、それらのコードを一つのファイルにまとめるところまでできた。 あとは、このコードをいわゆるトランスパイラと呼ばれるコード変換ツールにより、ExtendScript として機能する Javascript に変換します。 このトランスパイラは定番の babel を使います。

» Read More
Node.js で ExtendScript する話(パート2)

パート1では、webpack を使って、モジュールを一つのファイルにまとめていました。 しかし、この方法では、webpack により、ExtendScript で実行できないjavascript記述が追加されてしまう不都合がありました。 そこで モジュールをひとつにまとめる機能を webpack の代わりに rollup を使って解決することにします。

» Read More
Node.js で ExtendScript する話(パート1)

Web関係のJavascript 開発では、Node.js を使って モジュールに分割して開発をしていく。 これを InDesign 用の ExtendScript でもできるようにしたい。 もちろん、ExtendScript にも @include 記述により、モジュールを使うことはできる。 しかし、その場合できあがったコードを配布するときに、依存しているモジュールファイルも一緒に渡す必要が生じる。 これを避けたい。配布時には単にひとつのファイルだけで完結したい。

» Read More
Part 2: テスト用に json を POST して json を返す ウェブサービスをつくる

デバッグのためのテストとして json を POST して json を返すウェブサービスを Micronaut でつくる話。

» Read More
オブジェクト指向的な JavaScript

先日 closure を使った オブジェクト指向的なコードを JavaScript で書くというデモをする機会があり、これはその覚書です。

» Read More
ExtendScript で 指定したフォルダ以下のフォルダ全部を探すには その2 (もっと単純に)

ExtendScript で 指定したフォルダ以下のフォルダ全部を探すには その1 よりもっとシンプルに書く方法。 フォルダを順に辿りながら、フォルダを見つけたら callback する方式。

» Read More
ExtendScript で 指定したフォルダ以下のフォルダ全部を探すには その1

指定したフォルダ以下のサブフォルダ、サブサブフォルダ...を含めてすべてのフォルダを探す、というコードを書いてみた。 ExtendScript では each や map, reduce などが使えないので、実装は少し面倒でした。

» Read More
Rhino で js を実行中にファイルにログを書き出したい

Java から evaluateString する形で javascript コードを実行する場合に logger.log() で指定したファイルにログを書き出したい、という場合の解決方法.

» Read More
Rhino で実行する javascript をコンパイルしてから使う

いままで Javaから javascript を実行するのに、 evaluateString ばかり使っていたが、事前にこれをコンパイルして使うことができるらしいので、試してみた。

» Read More
改良版) Rhino を使って Java から JavaScript を実行する

Rhino を使って Java から JavaScript を実行する から、さらにあれこれ試していて多少進捗があったので、 現在までに得た見地をまとめます。

» Read More
Rhino で console.log() したい

Java から evaluateString する形で javascript コードを実行する場合に Node.js のように console.log() したい、という場合の解決方法.

» Read More
Node.js で XML文書をパース

大量のXML文書から InDesign 文書を生成する必要が生じたので、Node.js での XMLパース方法をメモ。

» Read More
Node.js で 指定されたディレクトリ以下にある InDesign ファイルを サブディレクトリを含めてすべて取得

別に対象が InDesign ファイルに限った話ではないが、再帰的にディレクトリを検索して、すべての InDesign ファイルリストをつくる、 という必要が生じたので備忘録として書き残します. 基本的には 再帰を使って木構造をリストに変換する JavaScript で書いたのと同じです.

» Read More
Node.js での 巨大なエクセルデータ読み込み

前回( Node.js での エクセルデータ読み込み )で、エクセルデータが簡単に扱えると思っていたが、 実践的なデータを使って前のコードで処理したところ、ハングアップしてしまい作動しない. よくコードを見てみると xlsx.utils.sheet_to_json として、エクセルデータ全体を json object に変換している. 推測ではあるがおそらくこれが原因であろう.

» Read More
Node.js での エクセルデータ読み込み

カタログ系組版では、エクセルデータを起点としてカタログを組んでいく仕事があります。 いままではもっぱら Java / Groovy + POI を使って処理してきましたが、 Node.js でエクセルデータをパースできるか調べてみました。

» Read More
Node.js と Jimp で画像をクロップする

ちょっとした画像操作に Groovy を使ってきたが、最近 Node.js を使う機会が増えてきたので、 Jimp を使って画像を操作する方法をメモしておきます.

» Read More