サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
qiita.com/hiruberuto
Next.jsのウェブアプリをサーバーサイドAPI部分も含めてデスクトップアプリとしてElectron内で動くようにtRPCで頑張るTypeScriptElectronNext.jsVerceltRPC 最近、Next.js/Vercelでちょっとしたウェブアプリケーションのツールを個人的に作っているのですが、これをデスクトップアプリケーションとしても動かしたいなと思うようになりました。私のようなふだんウェブばかりやってる人間にとっては、デスクトップアプリは憧れなのです。 このアプリケーションは、ブラウザ側で動く部分と、サーバー側(Vercel)上のNode環境で動く部分とに分かれているわけですが、Webの技術でクロスプラットフォームなデスクトップアプリケーションを作れるElectron上でもこれの全体が動くように頑張っていきたいと思います。ここでやりたいのは、ブラウザ部分だけをElect
PureScriptの公式ドキュメントより、『Haskellとの違い』のざっくり翻訳+αです。原文のライセンスはCreative Commons Legal Code Attribution-NonCommercial-ShareAlike 3.0 Unported です。 (翻訳ここから) 評価戦略 Haskellとは異なり、PureScriptは正格評価です。 JavaScriptの評価戦略と一致するので、既存のコードとの相互運用はとても簡単です。PureScriptモジュールからエクスポートされた関数は、「通常の」JavaScript関数とまったく同じように振る舞いますし、それに対応して、FFIを通じてのJavaScriptの呼び出しもシンプルになっています。 正格評価を維持するということは、実行時システムや非常に複雑なJavaScript出力も必要ないということを意味します。やむを
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? (※アイキャッチ画像は、この記事に関係あるようで関係ないウサギ対ウナギ画像です) アドベントカレンダー『Elm2』の昨日の記事は、ababさんの『Elmで副作用を扱う仕組みCmdがとっても良い理由』でした。副作用のある部分とない部分を分離する「純粋」な言語は、作用を扱うのが面倒くさい言語だと思われがちですが、実は作用を扱うのがとても上手なんですよね。ElmのCmdは、Haskellみたいにモナモナせずにシンプルに作用を扱う方法としてElmがたどり着いた、ひとつの解答であります。 さて、Elm と PureScript は、どちらも Al
この記事はPhil Freeman, "Why You Should Use PureScript"の邦訳です。この記事の原著者のフィルさんは、PureScriptのオリジナルの作者さんでもあります。原著はCC BY-NC-SA 3.0でライセンスされており、その許諾に従って私が勝手に翻訳・公開するものです。もし翻訳された内容に誤りなどがあれば、修正しますので私までご連絡ください。また、わりとざっくりした記事なので、HaskellやPureScriptについて知識がないとわかりにくい部分もあるかもしれませんが、ご了承ください。これは私の夏休みの自由研究です。みなさんも夏休みの自由研究にPureScriptはいかがでしょうか。 なぜPureScriptを使うべきか 優れた抽象 PureScriptは『型クラス』を持ち、私たちはこれを使ってとても再利用性の高いコードを書いています。PureSc
@YassineElouafi2 Redux seen as a mealy machine: reducers compute next state, while Sagas compute next Effect — Yassine Elouafi (@YassineElouafi2) 2016年2月23日 ここ数日、Reduxとはなんぞやということについてさんっざん検索して調べまわっていました。ふとミーリ・マシンっぽいなと思って"Redux Mealy Machine"でググり、Redux-sagaの中の人のこのツイートにたどり着いて、ようやくストンと腑に落ちました。参考1。参考2 ReduxでReducerの中で作用を使うなとかActionCreatorを純粋にしろとか言われてどうすりゃいいんだよウッセーなお前はおれのかーちゃんかよって思った人は多いでしょう。Reduxが何なのか理
仮想DOMなUIライブラリMaquette(マケット)を紹介します。JavaScriptで仮想DOMといえばReact/Redux一択みたいな雰囲気ですが、あれはいろいろ複雑すぎ巨大すぎであんまり好きじゃないので、JavaScriptから手軽に使えるUIライブラリを探していました。ご存知のように仮想DOM実装は雨後の筍のように登場していて、要求を満たすライブラリは複数あったのですが、公式サイトのチュートリアルが可愛かったのでこれにしました。公式サイトはこっちです。 maquettejs.org MaquetteはReactをはじめMithril、Mercuryに影響を受けているそうです。でもMaquetteはこれらのライブラリよりもさらに機能が絞られたシンプルなもので、習得しやすくて軽いところが好きです。また、状態の扱いには一切関知しない、UIの描画だけが機能のライブラリなので、React
けものフレンズのロゴってカラフルでかわいいですよね!そんなわけで、けものフレンズっぽいロゴを作れるジェネレータをつくりました。たぶんだいたいのブラウザで動くと思います。(ただしIEはブラウザではないものとする。また、一部のブラウザでセキュリティ制限のため保存ができないという情報が入っています) けものフレンズ ロゴジェネレータ つかいかた! 使いかたはサーバルちゃんでもわかるくらい簡単!テキストボックスに文字を入れれば、それがそのままロゴの文字に反映されます。あとはそのロゴの画像を右クリックとかそういうので保存すればOKです。下の方にダウンロードボタンもつけたので、これを押しても保存できます。ロゴの画像は背景が透明のPNG画像なので、何かの素材としてお使いください。なお、カラーリングや文字の傾きなんかは、ページを再読み込みをするとランダムに変化します。配色が気に入らない場合は再読み込みして
※画面は開発中のものです。実際の製品とはぜんぜん違います。 各話一覧 第1話『画像が表示できました』 第2話『ゲームループとキー入力ができました』 第3話『オンラインゲームになりました』 第4話『WebGLを使い始めたらどう見てもマインクラフトです』 第5話『Babylonjsでゲートオブバビロン』 第6話『Blenderで涼風青葉ちゃんごっこの巻』 第7話『オープンワールドという泥沼』 第8話『たまにはデモします』 第9話『サウンドエフェクトの作業をしてコーディングで荒んだ心を癒やします』 第10話『ゲッダン☆と謎の儀式《バッド・ノウハウ》』 第11話『タイトル画面があるとゲームっぽい』 第12話『RPGアツマールに私も集まーる』 第13話『ネオアームストロングCannon.js砲じゃねえか完成度高けーなオイ』 第14話『冒涜的Firebase活用法』 第15話『babylon.
どう見てもJavaScriptなのに遅延評価するオレオレプログラミング言語を作りました。遅延評価 is 何?JavaScriptHaskell遅延評価作ってみた 急にプログラミング言語を作りたくなったので、見た目はJavaScriptなのに遅延評価なプログラミング言語を作ってみました。このエントリで解説されている内容はほとんど実用性がないので、暇つぶしをしたい人だけお読みください。 今回作ったもの 「そもそも『遅延評価』って何?」っていう人が多いとは思うのですが、それはおいおい説明するとして、まずは今回作ったものを簡単に紹介します。今回作ったプログラミング言語の名前は、コンセプトそのまんまでLazyScriptです。JavaScriptのサブセットを用意して新しいプログラミング言語を作ったと私が言い張るのは実は既に二回目なのですが、処理系を作ってすらいない前回と違って、今回はちゃんとインタ
"PureScript is more like Haskell than Haskell itself." – `@thebeardedzug — Rahul Goma Phulore (@missingfaktor) 2017年3月24日 はじめに スクリプト言語PureScriptの開発環境構築から簡単なアプリケーションの作成までの手順を紹介します。この記事では、基本的なコマンドライン環境のアプリケーションだけでなく、Halogenというユーザインターフェイスのフレームワークや、簡単なサーバサイドアプリケーションを動かすところまでを紹介しています。そのため、シングルページアプリケーションのような実用性の高いアプリケーションを作って試せるようになっています。ブラウザ環境で動けば、ウェブページに組み込んで自分が作ったアプリケーションを簡単に他の人に見せられますし、Electronを使って
出来らあ! 1時間で構文解析から評価器まで書けるって言ったんだよ! プログラミング言語を作る。1時間で。 上のエントリは、Lispの『S式』みたいな式で構成されたプログラムを実行するインタプリタを作るというお話です。ストックやブックマークが結構たくさんついていて、みんな自分のオリジナルなプログラミング言語とか作ることに興味があるんだなあって思いました。 元ネタのorelangは、式をJSONのサブセットにすることでJSONパーサを流用し構文解析の手間を省いているところがキモだと思いますが、実は構文解析は案外簡単で、わざわざ避けて通るほどのものではなかったりします。また、S式の範囲に収めるとそれ以上構文の工夫は望めないので、『自分のプログラミング言語を作る』ということの面白みが薄れてしまう気もします。他にも、JSONのパーサを流用すると、構文エラーであるはずのコードまで受理されてしまうという
おすすめ 選ぶのが面倒なら、ひとまずHalogenを選べばいいと思います。ElmやReact/Reduxに似ているPuxもわりと人気があるようです メンテナンスが継続されているor新しいライブラリ (半年以内に更新があることを目安にしてます) halogen 中身の仮想DOM実装は、PureScript製のpurescript-halogen-vdom Fluxやelm-htmlみたいにアクションを投げて状態を更新するタイプ 状態更新や子のコンポーネントへのクエリまでを含めた計算構造をFreeモナドで定義するガチ勢 要素と属性の組み合わせが正しいかどうかまで静的に型付けする機構がある slamdataという会社のひとたちが中心に開発している。Halogenを使った製品を実際に提供しているようなので、実績としては間違いなくこの中で一番上 基底のモナドは交換可能だけど基本的にはAff コンポー
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 仮説:モナドとはポケモンである このテキストは、でんこうせっかの速さでモナドが使えるようになりたいひとのための、真面目なモナド入門です。数学っぽい話はなるべく避けていますし、関数型言語についての知識がなくても読めるように書いています。対象の読者は以下のような人です。 モナドが何なのか知りたい、使いたい Haskellを学ぼうとしたがモナドがわからなくて挫折した モナドを学ぼうとしたら、箱だのブリートだのと変な喩え話をされて余計わからなくなった プログラミングを学ぶつもりが数学の講義が始まったので止めた 最初はモナドは難しいからとGHCi
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ※この記事はずいぶん内容がわかりづらかったようで、さまざまな反応を頂きました。追記が複数ありますので、併せてご覧ください。 TL;DR Version: リアクティブプログラミングに挑戦しようとした。がっかりした。 はじめに 私のこの記事は「【翻訳】あなたが求めていたリアクティブプログラミング入門」に触発されて?書かれたもので、そちらの元ネタの記事に先に目を通しておいたほうが理解がしやすいと思います。そちらの記事は本当に解説がわかりやすく、そして何よりとても説明が具体的なので、リアクティブプログラミングについて知りたいかたには大変おすす
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 『純粋』関数型プログラミング言語といえば関数型プログラミング言語全体のなかでも殊更ラジカルな言語として知られていますが、『すべて純粋』という言語には、『だいたい純粋』という言語にはない利点があります。このテキストは、実感を得やすい具体的な場面を元に『純粋関数型』の利点を紹介していくシリーズです。第一回は言語を純粋にしてモナドで抽象化すると、非同期処理のコールバック地獄をPromise/Generators以上にシンプルかつ優れた方法で解決できるよという話でした。今回は、言語が純粋なら仮想DOMを使うときに純粋性も何も知らなくていいし、レ
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ブラウザで本格的なサウンドプログラミングが可能になるWeb Audio APIを使って、リアルタイムで音声にフィルタを掛けられるツールを作りました。コードを書くことなくマウスで操作するだけで、好きな動画や音楽にエコーを掛けたりフィルタを掛けたり、MP3ファイルへとエンコードしたりと、いろいろな実験ができます。Web Audio APIやサウンドプログラミングの入門教材にもどうぞ。Web Audio APIは使ってみると楽しいAPIです。以下のURLで実際にブラウザ上で実行することができます。 (追記: BitbucketとGithubの
PromiseやGeneratorのような機構を使ってもなお非同期処理は厄介だ、そしてもっとシンプルで便利な方法があるよ、という話です。前半の議論を元に、後半ではなぜプログラミング言語の作用をモナドで抽象すると便利なのかということの説明をしています。 関数型プログラミング言語は「副作用をなるべく減らすことで安全性を高めた言語」というように説明されることがありますが、すべての式が副作用を持たないという『純粋』関数型プログラミング言語が言語を参照透明にしてモナドを導入するのは決して「副作用はなるべく避けたほうが安全だから」という理由だけではないのです。長いですが、これでも結構削りました。 序盤戦・Promises/Generatorsの光と影 Promises/Generatorsで世界はちょっと平和になる かつてはJavaScriptの非同期処理はコールバック地獄に陥ったり様々なパターンが混
多くのプログラミング言語が用途を限定しない汎用の言語として設計されているのに対して、領域特化言語(ドメイン固有言語, domain-specific language, DSL)は何らかの目的に特化して設計された言語のことをいいます。領域特化言語を導入する利点のひとつは、プログラムの各部分の役割が明確になり、ソフトウェア全体の設計がよりわかりやすくなるというものがあります。たとえば、ゲームソフトウェアではゲームの描画とゲームの状態更新は完全に分離されているべきです。ゲームで一時的に処理が重くなり、描画を何フレームかスキップして速度を維持したいとしましょう。もし状態更新と描画がきちんと分離されていなければ、描画だけをうまくスキップするということはできなくなってしまいます。もし描画専用の領域特化言語を導入すると、ソフトウェアのコードをその内容に沿って完全に分離するのを強制し、それに違反するよう
【注意事項】この記事はとてもとても古いです。現在のPureScriptとは大きく言語仕様が変わっており、この記事の情報はあまり宛てにならないと思います。あまりに現状のPureScriptとかけ離れているので削除も考えましたが、何かの参考になるかもしれないので一応残しておきます。PureScriptについては、もし英語でも構わないのであれば、PureScriptのオリジナルの開発者であるPhilさん本人によるPureScript by Exampleがもっとも信頼できる情報源です。どうしても日本語の情報を探しているなら、かなり古いですが関数型なAltJS、PureScriptの入門書を邦訳しました。も参考にしてください。 **PureScript**とは: Haskellライクな構文とライブラリ Row Polymorphismによる柔軟な型システム JavaScriptへトランスコンパイル
2018/4/30 追記: 古くなっていたこちらの邦訳ですが、プルリクエストを頂き最新版PureScript v0.11に対応しました。本当にありがとうございました。 Haskellライクな関数型プログラミング言語PureScriptの入門書、"PureScript By Example"を邦訳しました。本書はPureScriptのオリジナルの作者であるPhilさん本人が執筆した入門書です。本書を理解するにはJavaScriptを知っていることが望ましいですが、そうでなくともすでに何らかのプログラミング言語を知っていれば読みこなすことはできると思います。PureScriptはHaskellを始めとした多くの関数型言語と様々な考え方を共有していますから、PureScriptという言語そのものを学ぶという目的でなくとも、関数型プログラミング全般についての入門としても読むにも適しています。無料で
言語全体が参照透明な式1で構成される言語を純粋関数型プログラミング言語(Purely Functional Programming Language)と言いますが、プログラミング言語から副作用のある式をすべて除去し、その代わりにアクションとかIOモナドと呼ばれる仕掛けを追加すると、その言語を純粋関数型に変えることができます。このあいだふとした思いつきでJavaScriptを純粋関数型にしてみたんですが、そのままストレージの奥で腐らせるのはもったいないのでAurorScriptと名づけて記事にして飾っておきます。アクションの仕掛け全体は10行くらいで書けるので簡単です。 純粋関数型を理解するには、自分でアクションのような仕組みを作ってみるのがとてもいい勉強になります。だって、「副作用のない式のみで副作用を表現する」とか説明しても「……はぁ? けっきょく副作用あるの? ないの?」とかっていう反
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 追記 こんな記事を読むより、まともな関数型プログラミング言語を使ってまともに関数型プログラミングを学ぶほうが、関数型プログラミングについてよほど正確な理解を得られます。少しでも関数型プログラミングに興味のある人は、まずは真面目なHaskellの教科書やすごいH本を読んだり、やさしいHaskell入門を読んだりしながら、実際に関数型プログラミングのコードを書いてみることをお勧めします。 繰り返しますが、この記事はあんまり読む必要はないです。関数型プログラミングを理解するには実際に自分でコードを書いてみるのが一番です。関数型プログラミングあ
このページを最初にブックマークしてみませんか?
『@hiruberutoのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く