タグ

ブックマーク / qiita.com (143)

  • 最高のゲームエンジンに足りなかったもの - Qiita

    はじめに 現在、Cizenというものを開発中です。Erlang VMを効果的に使うためのElixirで書かれたフレームワーク/ミドルウェアです。この記事ではCizenの作成に至った動機などを説明します。 ※プロジェクト名は Citadel X から Cizen に変更されました。(2018/10/22 追記) 背景 以前、Elixirで作る最高のゲームエンジンという記事(以下「当該記事」)を書きました。当該記事を先に読んでおく必要をなくすため、内容を要約すると、 Elixirがもつ、高い並列性・パターンマッチング・マクロなどの特色がゲーム制作に向いている。 メッセージングではなくeventで動作させることにより、プロセス間の結びつきを弱くして拡張性を高める。 現状、プロトタイピングしただけで、テストも書いていない。 というものです。 これを書いてから8ヶ月近く過ぎましたが、あれから何も進ん

    最高のゲームエンジンに足りなかったもの - Qiita
    kuy
    kuy 2018/08/04
    プロセスを大切にするCitadel Xちゃん。
  • Reduxは不要ではないか? - Qiita

    僕の職はサーバーサイドなのですが、半年くらいReactとReduxを使ったフロント部分を触ったので、書きたいと思います。 先にReact.jsについてですが、家がチュートリアルをしっかりと用意しており、学習コストも高くなく、悪くないものだなと思いました。 しかし、Reduxが入った途端、めっちゃ複雑になった印象があります。chromeのプラグインを入れて開発するのが普通とか言われたのですが、そんなものを使わないと作業できないくらいに複雑で辛いなぁという印象です(Javascriptは、console.logがあれば、ほぼ開発できる気がします。) ここから先は、こんなこと考える人も居るんだなぁ程度で見てください。Reduxが好きな人はすごく嫌な記事かもしれません。その場合は、ここでそっ閉じしてください。 Reduxはモダンだから採用した これよく聴くのですが、当に辞めてほしいです。jQ

    Reduxは不要ではないか? - Qiita
    kuy
    kuy 2018/02/23
    たぶんRedux不要だったんじゃないかなぁ。まずはなぜそれが必要になったのか背景を知ってほしい。
  • Google Apps Scriptの新しい3つの機能 その③ CLI Tool Clasp - Qiita

    この記事は2018/1/11にGoogle Apps Scriptに新しく追加された3機能の紹介記事の3番目です。 https://gsuite-developers.googleblog.com/2018/01/three-new-tools-to-help-improve-your.html?m=1 新機能 Dashboard Apps Script API CLI Tool clasp (この記事です) 一つ一つが結構しっかりした機能なので記事を分けて説明したいと思います。 今回は3つ目のCLI Tool claspです。 CLI Tool clasp claspはオープンソースのGAS向けCLIツールです。 https://github.com/google/clasp CLI上からGASプロジェクトに対して以下の様なことが行なえます。 GASプロジェクトの新規作成 GASプロジェ

    Google Apps Scriptの新しい3つの機能 その③ CLI Tool Clasp - Qiita
    kuy
    kuy 2018/01/14
    数年前にこれがあったら・・・! でも今後めっちゃ捗りそうだ。
  • Haskellと層 - Qiita

    層とプログラミング はじめに Haskellは、モナドという圏論用語を言語仕様に採用した初めての実用プログラミング言語です。歴史的には、Godementが1958年に、層コホモロジーの計算のため使ったのが(コ)モナドの最初の例だと言われています。 層は何らかの空間の「形」を代数的に計算するための仕組みで、局所的な性質と大域的な性質の関係を圏論的に表現するフレームワークと言えます。 一言で言えば、層とは関数とその定義域の組の集りのようなものです。いろいろな大きさの鉱物の結晶が積み重なって、地球全体を地層が覆っている様子をイメージするとわかりやすいかもしれません。層を使うと、定義域が重なりあう部分関数の関係と、それらが全体に波及していく様子を、圏論的に、すっきり表すことができます。 層はいわゆる"幾何的論理(geometric logic)"のモデルでもあり、実はモナドも幾何的論理で表現できる

    Haskellと層 - Qiita
    kuy
    kuy 2018/01/02
    高度すぎて理解できなかったけど勉強したい。
  • 新QiitaでReactをやめてhyperappを採用した背景 - Qiita

    12/1 に Qiita のトップページをリニューアルしました。これまで React を使っていましたが、それをやめて hyperapp を採用しました。まわりを見てもあまり採用事例が見当たらないので、この記事では一体なんで今をときめく React ではなく hyperapp を選択したのか、どういうところが魅力的なのかについて プレゼンテーション層を実装するためのツールとして 学習コスト の観点から書きたいと思います。なおこの記事に書かれていることは全て個人の感想であり、はっきりいって個人の日記レベルです。 それと hyperapp の開発者が社内にいるという事情もあるので、そこら辺さっぴいて読んでください。 TL;DR プレゼンテーション層を実装するためのツールとして React は機能過多だし、機能不足 hyperapp は過不足ない 学習コスト 仮想 DOM は学ぶ価値のある知識

    新QiitaでReactをやめてhyperappを採用した背景 - Qiita
    kuy
    kuy 2017/12/28
    仮想DOMって基本意識する必要ないのでは。いろいろこねくりまわす必要なくて、mizchiさん辞めたからReactやめましたでいいと思う。
  • Haskell副作用ポエム - Qiita

    この記事は,「whywaita advent calendar 2017」の22日目の記事です. 真面目な記事を一書いてしまったので,バランスを取るため(?)不真面目な記事をぶっこんでおこうというのが,この記事の主たる動機です.特に読む価値はありません.メリークリスマス(まだ早いか). あと@whywaitaは最後の行だけ目を通してください. 概要 Haskellを触り始め,最初に目につくのがIOというヘンテコな2文字だ.多くの近代人は,まずはGoogle検索を訪問するだろう.そして,うんざりして画面を閉じる.そこに書いてあることはこうだ. Haskellは純粋関数型で,副作用をIOで閉じ込めることができる. といったことや Haskellは純粋だけど,理論背景は難しいから副作用を扱えると考えて良いよ. と言ったことだ.ふむ,なるほどよく分からない.さらには, Haskellは,純粋な式

    Haskell副作用ポエム - Qiita
    kuy
    kuy 2017/12/24
    良い記事。Sagaでも同様に副作用を作用として扱っているので。
  • 持続可能な開発を目指す ~ ドメイン・ユースケース駆動(クリーンアーキテクチャ) + 単方向に制限した処理 + FRP

    この記事は、開発を持続可能にできるようなアーキテクチャとその適用方法を考察するものです。 骨子はできていますが、実装経験をフィードバックして詳細を若干変更するかもしれません。 勉強不足な点もあるので、意見を歓迎します。 開発においてよくある問題点 ビジネスロジックの質が何だったか見失う。ソースコードのどこまでが業務上の関心で、どこからがそれを実現するための技術上の関心か分からなくなる。 入出力双方向の処理が散在して処理が追い切れなくなる。特にイベント処理でどこに飛ぶかわからないコールバック地獄になる。 初期化・つなぎ込み・統合者的オブジェクトが小さな機能単位で生まれて統一感が無くなる。 状態を持つ値が大量に散在して副作用を起こしバグを生む。 これらの問題の結果、小さな単位ごとに個人のノウハウで"良い"設計がされ、機能を追加しようとしたときにどういう方針で行えばよいか分からなくなる。 解決

    持続可能な開発を目指す ~ ドメイン・ユースケース駆動(クリーンアーキテクチャ) + 単方向に制限した処理 + FRP
    kuy
    kuy 2017/04/26
    誰かに説明するとき、この記事の図を使うと理解してもらいやすい。とても助かる。
  • ac4b77324a9989e8e6bb

    目次 モチベーション 環境 認証の手法(JSON Web Token) 流れ クライアント側での認証の制御 ログイン認証の処理 まとめ 参考記事 モチベーション ReduxをフレームワークとしてReactを使ったSPAを作成していたときに、ログイン認証の処理で結構悩んで、悩み抜いた結果の知見を共有といった感じです。 まだまだSPA勉強中の身のため、間違ったやり方をしている部分があるかもしれませんが、そのときはご指摘いただけるとありがたいです。 なお、今回のサンプルソースは以下においてあります。細かい解説をしていない部分は、実際のソースを見て確認してください。 nabeliwo/jwt-react-redux-auth-example ※サーバーサイドレンダリングには対応していません。 環境 サーバーサイド Node 6.1.0 hapi 13.4.1 (フレームワーク) ※今回は特にサーバ

    ac4b77324a9989e8e6bb
  • ライフゲームを書く - Qiita

    const path = require('path'); module.exports = { entry: { main: './main.re', }, output: { path: path.join(__dirname, 'dist'), filename: '[name].js' }, module: { rules: [ { test: /\.(re|ml)$/, use: 'bs-loader' }, ], }, resolve: { extensions: ['.re', '.ml', '.js'], }, };

    ライフゲームを書く - Qiita
    kuy
    kuy 2017/04/11
    すでに先駆者がいた・・・orz
  • Minikube で快適に Ingress を利用する - Qiita

    TL;DR minikube addons enable ingress で Minikube で簡単に Ingress を使いはじめることができる ローカルのネームサーバで Ingress に設定したホスト名を名前解決させてより快適に利用する Minikube 標準の Ingress Controller の代わりに nghttpx-ingress-controller を使うのも簡単、そのときカスタム Cluster Add-on を使うとより快適に利用できる はじめに プロダクションにおいて Ingress を利用しているならローカルの Minikube においても Ingress を利用して動作を検証したい。Minikube は、ローカルにシングルノード構成の Kubernetes クラスタを簡単に構築できるツールである。 Ingress を使うには、作成されている Ingress

    Minikube で快適に Ingress を利用する - Qiita
    kuy
    kuy 2017/04/04
    MinikubeでIngress使えたんかい!すばらしい。これでlocalとproductionの差異がほぼなくなるぞ。
  • 純粋関数型データ構造 (0)

    はじめに 関数型言語スキーの皆様,趣味でも仕事でも関数型されてますでしょうか? 関数型言語の強力な特徴の一つとして不変性が挙げられます.不変性においてはletやIOモナドが注目されがちですが,真に不変性を下支えしているのは関数型言語のライブラリに含まれているListやMapといったデータ構造です.これら関数型データ構造について記述された古典が「Purely Functional Data Structures」です.これらに記述されてるデータ構造について実装と解説を書く,というのが稿の目指すところです. 関数型データ構造とは? 正確な定義については,MITの講義ビデオ など見て欲しいのですが,重要な特徴として,全ての関数型データ構造では,操作を行う前の古い版と,操作後の新しい版の,両方が維持される点が挙げられます.(これを永続性(Persistency)と呼びます.ややこしいことに永続性

    純粋関数型データ構造 (0)
    kuy
    kuy 2017/03/15
    従来のデータ構造に対して破壊的な操作をするアルゴリズムではなく、immutable前提ではそれに特化したアルゴリズムがある、と。Purely Functional Data Structuresという本があるのね。
  • flowtypeのUtility Typeについて その2 - Qiita

    flowtypeのv0.38.0がでましたね! CHANGELOGを読んでみると $ReadOnlyArray is the common supertype of arrays and tuples. It's basically an array without stuff like push(), pop(), etc $ReadOnlyArray<T>なんて便利そうなUtility Type(旧Magic Type)が追加されてるじゃないですか!! これは楽しそうだと https://github.com/facebook/flow/blob/master/src/typing/type_annotation.ml を見てみるとなんか$から始まる見知らぬ型が増えてる・・・。 ドキュメントにないのはまだ許せるけど、CHANGELOGにすらないってどういうことなの・・・!!! 嘆いても

    flowtypeのUtility Typeについて その2 - Qiita
    kuy
    kuy 2017/02/25
    その2が来てた。本当に勉強になる。
  • Rails4プロジェクトを新規作成してRails3.2からRails4にマイグレート - Qiita

    Rails3.2のプロジェクトRails4に移行する際の手順をまとめます。 今回は新規にRails4プロジェクトを作り、Rails3.2のプロジェクトのファイルを移していく方法を取りました。 前バージョンからの移行でなく新しくRails4プロジェクトを作る場合にもある程度参考になると思います。 前準備 使っているgemrails4に対応しているか調べる 以下のサイトが便利です。ほとんどのgemrails4対応状況がわかります。 ※リンク先が切れていたので削除しました。 RubyGems体をアップグレードしておく 必要があれば。

    Rails4プロジェクトを新規作成してRails3.2からRails4にマイグレート - Qiita
    kuy
    kuy 2017/02/20
    Rails 3.2→Rails 4の移行。
  • Angular入門: Component/ServiceをTestまで含めて試す - Qiita

    <p>Counter</p> <p>Point: {{point}}</p> <button (click)="increment(3)">Increment 3</button> <button (click)="decrement(2)">Decrement 2</button> import { Component } from '@angular/core'; import {CounterService} from './services/counter.service'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'] }) export class AppComponent { point: number; c

    Angular入門: Component/ServiceをTestまで含めて試す - Qiita
    kuy
    kuy 2017/02/20
    洗練されてる。サービスの使い所とテスト周り。
  • React&Reduxを牛丼屋に例えてみる図 - Qiita

    import React from 'react'; import { render } from 'react-dom'; import { createStore } from 'redux'; // 座席確保(State) const initialState = { // 単品メニューの準備 menu: '', // 全ての注文の準備 menus: [] } // チケット販売機(ActionCreator) const inputCoin = (menu) => ( { // 基オーダー(Action) type: 'WATER', payload: { menu } }); const addTicket = (menu) => ( // 券オーダー(Action) { type: 'TICKET', payload: { menu } }); // スタッフが券を厨房に

    React&Reduxを牛丼屋に例えてみる図 - Qiita
    kuy
    kuy 2017/02/13
    Reduxってなんだっけ。
  • Barge(Docker ホスト用軽量 OS)って? - Qiita

    気軽に Docker を使いたい人向けの軽量な Docker ホスト(VM)用 Linux OS です。 Only-Docker → RancherOS-Lite → DockerRoot → Barge と変遷してきています。 (最後に Barge になったのは、Docker 社が他社製品名の先頭に Docker を使用することを禁止しているため) Barge は、以下のような特徴を持っています。 最軽量 高速ブート Docker のバージョンを切り替え可能 glibc、bash、dumb-init を標準搭載 パッケージ・インストーラ Vagrant 用 Box VirtualBox に最適化 Raspberry Pi 3 のサポート 最軽量 以前、メモ:Docker ホスト用軽量 OS の比較 - Qiita でもご紹介させて頂いたんですが、なんとか未だに 15MB をキープしており

    Barge(Docker ホスト用軽量 OS)って? - Qiita
    kuy
    kuy 2017/02/13
    試してみよう。
  • OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る

    はじめに この文書では、OAuth 2.0 + OpenID Connect サーバーをゼロから一人で実装した開発者(私)が、得られた知見について書いていきます。基的には「実装時に考慮すべき点」を延々と述べることになります。 そのため、この文書は、「素早く OAuth 2.0 + OpenID Connect サーバーを立てる方法」を探している方が読む類のものではありません。そのような情報をお求めの方は、「Authlete を使って超高速で OAuth 2.0 & Web API サーバーを立てる」を参照してください。そちらには、「何もない状態から認可サーバーとリソースサーバーを立て、アクセストークンの発行を受けて Web API をたたいて結果を得る」という作業を、所要時間 5 ~ 10 分でおこなう方法が紹介されています。 文書のバイアスについて 私は、OAuth 2.0 + Ope

    OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る
    kuy
    kuy 2017/02/09
    ありがたい記事。
  • ReduxでのMiddleware不要論 - Qiita

    問題提起 (※タイトルはキャッチーなのにしましたが、Middleware全般の不要論ではありません。非同期処理において不要論です。) Redux使うときに非同期処理はどう書きますか? 「よくわからないけどMiddleware使うらしい」と思考停止していませんか? この記事では、Redux来どのように扱うことを想定されているのかと、なぜ非同期処理の文脈でもMiddlewareが出てきたのか、そして「実はMiddleware無くても読みやすく書けるよね」という話をしていこうと思います。 Reduxでの設計を悩む人への個人的な解です。 (気になる・詳しく知りたい箇所などありましたらお気軽にコメントください) この記事のゴール ActionDispatcherという筆者が命名したクラスを使うことで、 複数の非同期処理を含むロジックでも読みやすく書ける ネットワーク通信などを含んでもテストがしや

    ReduxでのMiddleware不要論 - Qiita
    kuy
    kuy 2017/02/06
    なるほどー、これはかなり現実的で使いやすそう。ActionDispatcherとしてクラスにしといて、newするときにDIしたりって感じか。テストもやりやすいし、async/await使えるし良さげ。redux-saga不要論だった。
  • 「後付の型システム」の活用についてFlowtypeとReduxから考える - Qiita

    FlowtypeやTypeScriptは静的解析によって事前に型違反を検知することができる。JavaScriptは動的型付けの言語であり、来はランタイムにしか型が出現しない。 FlowtypeとTypeScript、ともに「それ自身がランタイムではない」というのが特徴であり、一種のLintツールだと言うことができる。ランタイムではないがゆえに、嘘の事前条件を与えることでそれらを騙すことができるし、自らに有利な制約を追加できるという柔軟性を持つ。 JavaScriptの現実においての型 例を出そう。 type MyUtil = { foo(v: string): number; }; const util: MyUtil = new HogeUtil(); util.foo(1) //=> type error HogeUtil は何かしらのユーティリティ関数の詰め合わせだが、fooにしか

    「後付の型システム」の活用についてFlowtypeとReduxから考える - Qiita
    kuy
    kuy 2017/01/23
    mizchiさんがReduxと仲良くなろうとしている
  • 関数オーバーロードとIntersection types - Qiita

    Union と Intersection flowtype の公式ドキュメントによると、Union typesは指定された型のうちどれか1つを満たす型で、Intersection typesは指定された型をすべて満たす型です。言葉による説明よりもコードを見てもらった方がわかりやすいと思います。 type A = { a: string }; type B = { b: number }; type U = A | B; // Union type I = A & B; // Intersecion ({ a: 'hoge' }: U); // OK! ({ b: 1 }: U); // OK! ({ a: 'hoge', b: 1 }: U); // OK! ({ c: true }: U); // Error! ({ a: 'hoge', b: 1 }: I); // OK! ({ a:

    関数オーバーロードとIntersection types - Qiita
    kuy
    kuy 2017/01/12
    flowtypeにおける関数オーバーロードとIntersectionについて書きました。 長年(数ヶ月)のモヤモヤが解消してスッキリです。