lacolaco

唐揚げとアニメとプログラミングが大好きです

プログラミング

持続可能なAngularアプリケーション開発のために大事なこと

Webにかぎらず、アプリケーションというのは作って終わりではなく、その後も継続して改修・改善されていくケースが多い。受託で開発して納品して終わりというケースでも、納品した先にメンテナンスする人がいる。 この記事では、Angularアプリケーションの開…

Angular v2からv6までの変化をまとめてみた

Angular 2から6までの主要な進化をまとめた記事を読みたい。— Masahiko Sakakibara (@rdlabo) 2018年4月20日 逆にIonicの変遷が知りたいですね 最近Stencilも出てきたしその辺の絡みとか俯瞰的に見てみたいです— lacolaco (@laco2net) 2018年4月20日 rdlabo…

Custom ElementsとEventTargetの話

Shadow DOMのHayato Itoさんと、Custom ElementsとEventTargetについてちょっと議論できた話。(ありがとうございました!) 先日、Web Components Cafeで登壇しました。 slides.com 最近自分の中でCustom Elementsの盛り上がりが強くて、 単純なPresentatio…

なぜAngularJSに$httpが必要だったのか(あるいはAngular HttpClientの価値について)

lacolaco.hatenablog.com 「レールに乗っておいたほうがいいんじゃないの?」という声もあるとおもうので、 そもそもなぜAngularはHTTPクライアント機能をスタックとして提供しているのか、というところについて。 AngularJSには$httpが必要だった 遡ってAng…

Angularとaxiosを使ったHTTP通信

題して「頼りすぎないAngular」ということで、Angularの層をなるべく薄くアプリケーションを作るにはどうすればいいかというのを考えるシリーズです。 Angular良さそうなんだけどロックインされて捨てにくそう、という人々向けに、コードのモジュール性とフ…

はてなブログにDouble OのAsk Meボタンを設置する

Double O というサービスがWeb ComponentsやPWAなどアグレッシブにWeb技術を取り入れていて応援したい気持ちなので、まずはユーザーとして使っていこうと思います。 ooapp.co 「よくある質問」がDouble Oの公式アカウントとして運用されてるの面白いですね h…

Angular 頻出実装パターン その1

僕がAngularアプリケーションを書くときに頻出する実装パターンを紹介する記事です。続くかどうかは未定です。 onDestroy$ ngOnDestroyメソッドが呼び出されたタイミングでemitされるEventEmitterを作っておき、RxJSのtakeUntilパイプなどで使う実装パターン…

Angular CLI v1.7からv6.0へのマイグレーションについて (for v6.0.0-rc.2)

Angularフレームワークのv6.0.0リリースにあわせ、Angular CLIもv1.7系からv6.0へメジャーアップデートをおこなう予定です。 この記事ではAngular CLI v1.7系で作成した開発環境からv6.0系の開発環境へマイグレーションする方法を解説します。 この記事は安…

GraphQLのスキーマについて今日考えてたこと

今日はGraphQLのクエリのスキーマを考えてた いろんなデータが関連していて、原理的にはどんな入れ子の順番でも解決はできるんだけど、基本的にはデータの寿命が短い順に入れ子になっていくのが良さそうな気がする。 user { organizations {} } はユーザーの…

MANABIYA.techでAngularとWebについて発表したので反省する

3/24に、MANABIYAというカンファレンスイベントで登壇してきました。 manabiya.tech 当日のスライドはこちら。発表タイトルは「The Angular World」で、Angularの現在と未来、あとWebの世界との関わりについて話そうと思ってました。 内容はだいたいスライド…

ngIvyメモ

lacolaco.hatenablog.com ngIvyのSeparate Compilationについてのプロポーザルを読み、実装中のRenderer3のコードを読み、ベータ版のcompilerが生成するコードを読み、毎晩毎晩考えを巡らせた結果、ngIvyについてある程度体系的な理解が得られたという錯覚が…

DESIGN DOC (Ivy): Separate Compilationを読む

angular/separate_compilation.md at master · angular/angular · GitHub 日本語訳しながらngIvyの設計を理解する。 読んだ。要点だけまとめると以下。 Angular 6.0ではIvyという新しいコンパイラが導入される IvyはAngular 5.0 (Renderer2) における分離コ…

Angular v6で導入されるTree-Shakable DIの紹介

追記: 最新では scope が providedIn に変わってます。 github.com Angular v6では、これまでのDependency Injectionの仕組みをTree-Shaking可能にするためのオプション機能を追加します。 概要を説明するために簡単なスライドを作りました。 現状の問題 現…

Angular commits summary 2018-02-28

github.com Angular CLIが依存するwebpackのバージョンを4系にアップデート。 github.com @angular/common が提供するパイプで使われている関数を公開APIとしてエクスポートする変更。 NumberPipeやDatePipeの変換処理をテンプレート外で使えるようになる。v…

merge-graphql-schemasを使ってGraphQLのスキーマファイルを結合する

lacolaco.hatenablog.com ^の続きです。 前回はglobとfsを使ってschema/**/*.gqlファイルを結合し、graphdocを使ってドキュメンテーションページを生成する記事を投稿しました。 まったく同じ目的のために merge-graphql-schemas というnpmパッケージがあっ…

GraphQL Schemaをファイル分割してドキュメンテーションする

GraphQLのSchemaから静的なドキュメンテーションページを生成するツールとして、graphdocというものがあります。 github.com GraphQL Schemaを渡すと、こんな感じのHTMLを生成してくれます。 これはGraphQL公式のサンプルにもあるStar Wars APIの例。 https:…

Angular用ライブラリをnrwl/nx + ng-packagrのmonorepoで管理してみた

表題のとおりです。結論からいうといろいろ問題があり、このmonorepoは失敗ということでそのうち解散するつもり。 Nx workspaceを使ったmonorepo Angular用ライブラリのmonorepoには、Nrwlが提供するNx Workspaceを使うのが早いし便利だ。 nrwl.io Nxとは何…

「やはりHTML/DOMは再発明されるべきじゃないか」に対する感想

mizchi.hatenablog.com エモにはエモ。 わかる だいたいわかる。そもそもSPAの必須パーツであるクライアントサイドルーティングなんてブラウザ機能の再実装の極致だし、ブラウザ上でアプリケーション作るとなるとブラウザに足りてない部分はラップして、アプ…

社内向けprettierの設定をnpmパッケージとして公開した話

こんにちは、lacoです。 今日は業務中にこういったものを作ってnpmに公開しました。 www.npmjs.com リポジトリはこちらです。ご覧の通りKaizen PlatformのOSSです。 github.com なにこれ Prettierというコードフォーマッターがあり、その設定をKaizen Platfo…

source-mapの正当性についての検討

あるsource-mapが、本当にソースコードの各行に対応したマッピングを行えているかどうかを評価したい。 背景 github.com light-ts-loaderというwebpackのloaderを作っていて、このloaderを使ったときに吐き出されるsource-mapが自分のloaderのせいで壊れてい…

GitHubでしりとりを始めました

何を言っているかわからないと思いますが、僕も自分が何を始めたのかいまいちわかりません。 github.com Pull Requestでしりとりを繋いでいくだけのリポジトリを作りました。次に挙げるような意図があります。 GitHubやOSSへのコントリビューションに不慣れ…

JSer.info 5周年記念イベントに行ってきた

JSer.info 5周年記念イベントに行ってきました。 jser.info 会場のサイボウズさん、広いし綺麗だし面白い。 イベントの内容はazuさんが↑の記事でまとめてくれているので割愛、印象に残ったことだけ書く。 JSer.infoの仕組み azuさんがJSer.infoがどう運用さ…

PolymerとTypeScriptの相性が悪い

2015/10/16時点での所見をまとめておく TypeScriptで書く pros TypeScriptに慣れてる ES6 classが使える 現状 "use strict"; export default class HelloWorldComponent { is: string; beforeRegister() { this.is = "hello-world"; } } Polymer(HelloWorldC…

IEnumerable<T>#Random()の実装について

C#、LINQネタです。 LINQでIE<T>を扱っていると、「ランダムに要素を1つ取り出したい」と思うことが時々あります。なのでそういう時は拡張メソッドで IEnumerable<T>#Random() を実装すると便利ですね。 ところでこのメソッドの中身、どう実装するのがパフォーマン</t></t>…

ormliteで新しくテーブルを追加するときの注意点

現在開発中のAndroid用ツイッタークライアントの中でデータベースの管理ライブラリとしてormliteを使っているのですが、元々テーブルを一つ作っていたものにアップデートでテーブルを追加する必要が出てきました。 なので最初にテーブルを作った時と同じよう…

Javaマルチスレッディングその3(スレッドセーフなコレクション)

前回、前々回は非同期処理の実行についての記事でしたが今回は非同期処理「される」側の実装についてです。特に今回はスレッドセーフなコレクションの実装について書きたいと思います。スレッドセーフ スレッドセーフについてWikipediaでは あるコードがスレ…

Javaマルチスレッディングその2(UIスレッドとCallable)

というわけで前回の続きです。今回はUIスレッドという観点からJavaマルチスレッドの解説です。 Androidアプリケーションでは(というより多くのGUIアプリケーション開発においては)UI描画はメインスレッドでしか行えない制約があります。ですがすべての処理…

Javaマルチスレッディングその1(Executorとタスクキュー)

Androidアプリ開発を想定した上で一般に使えるJavaのマルチスレッディングについてのメモ書きです。 全部を解説するにはページが足りないので、タスクキューの実装を例に触れていきます。 (Java SE 6以上)Executor まずはExecutorについての説明を。Java SE …

「はてダえでぃたー」完成しました

というわけで完成しました 今のところ太字とpre記法しか機能が無いですが一応タブキーでスペース4つ(可変)挿入とか、コード載せやすい感じにはなってます完成したはいいものの配布方法で悩んでる。これからもいろいろ作るだろうし自分のサイトとか作ってダウ…

はてなダイアリーAPIを使った投稿(WSSE認証)

もともとOAuth認証でやるつもりだったんですが、どうあがいても認証鯖がoauth_signatureを弾いてくるので諦めてもう一つの認証方法「WSSE」を試してみました。 はてなサービスにおけるWSSE認証の仕様はこちら http://developer.hatena.ne.jp/ja/documents/au…