embryo

エンジニアの備忘録

2019年振り返り

前職の振り返り含むので何だかんだ1年半の振り返り。 2019年 やったこと 婚約 退職&開業 iOS Frontend開発 Web Frontend開発 Web Frontendのトレーナー 技術書典 向き合った細かいトピックなど Web Frontend ドメインモデルとUIコンポーネント設計 gRPC 型生…

DIの目的とメリットについて

今日はDependency Injection(以下DI)の目的を整理しました。 できるだけ目的やメリットをベースにまとめていきます。 tl:dr DIはオブジェクトを外から渡すこと → モジュールは依存するオブジェクトの依存解決(生成)方法を意識しない 抽象に依存することによ…

技術書典5にサークル参加しました その2

前回はサークル参加の反省をメインにまとめましたが、今回はイベント自体の感想を一般参加者目線のまとめになります。 戦利品 一人サークル参加してしまったため、半ば諦めていたのですが隣のサークルの方のご好意で回ることができました。ありがとうござい…

技術書典5にサークル参加しました その1

頒布したもの techbookfest.org 「本 + PDFダウンロードカード セット」で500円で頒布しました。 用意したのは以下。 本は100部 PDFダウンロードカード100枚 (+予備94枚) ※ ダウンロードカード6枚は手違いでダメにしてしまいました 結果 詳しく時間を見てい…

言語ファイルの命名規則と管理方法

今日は言語ファイルの管理方法及び命名規則に関してです。技術書典5でデザインシステムの本を書く予定なんですが、その中でも言語は重要な要素なので一度整理しておこうと思います。 なぜ言語ファイルを管理するのか 実際のところ本当に多言語対応するつもり…

AtomicDesignが解決してくれないこと

今日はAtomicDesignについてです。 概要 弊社のとあるチームでAtomicDesignの導入を試みていたのですがあまり上手くいっていないようでした。そこでなぜ上手く行っていなかったのか考えて整理したので、その内容をまとめました。 AtomicDesignとは Design La…

Xcode9のビルドを高速化する

Xcode9においてビルド高速化するための手法についてまとめました。 設定ファイルの最適化 ビルドの速度に関係する主な項目が下記になります。それぞれの設定の意味と推奨される設定値を解説していきます。 Build Active Architecture Debug Information Form…

再帰下降構文解析で電卓プログラムを実装する

パーサ入門として式解析の一つである再帰下降構文解析をTypescriptで実装してみたのでまとめました。 構文解析の基礎 構文解析入門にあたって基本的な語句を整理します。 構文図 構文の規則を図式化したもの。構文の構成要素とその関係性を図式で表します。 …

SketchPlugin開発の効率化

この記事はSketch Adevent Calendar の 17日目の記事になります。 今日はデザインツールSketchのPlugin開発を効率的に行う手法についてまとめていきます。開発者向けの記事となりますのでご留意ください。 SketchPlugin開発の基本 SketchPluginは以下のディ…

PWAを支える技術とPRPLパターンの実装

この記事はトレタ Advent Calendar 2017の11日目の記事です。 dev.toで最近話題になったPWA実装ですが、今日はそのPWA設計パターンの1つであるPRPLを実践するために必要な技術スタックとその実装方法についてまとめました。 PRPLパターンとは Googleが提唱…

Golangの環境をつくった(goenv+ghq+peco)

goの開発環境を整えた際のメモです。 goenvでgoをインストール golangのバージョンを管理するためにgoenvを導入しました。direnvと併用してプロジェクトごとに環境を分けることも可能ですが今回はgoenvのみをセットアップします。 GOPATHを設定する goのワー…

DNSの仕組みと調査方法について

仕事で外部のエンジニアに依頼したドメイン移行が正しく動作していなかったため、良い機会と思いDNSについて調べました。 名前解決の方法 そもそも名前解決とは何かというと、ドメインとIPアドレスを紐付けることです。手法として以下の2つが上げられます。 …

LU分解を実装してみた

今日は連立方程式の解法などに用いられるLU分解についてです。 LU分解とは とある正方行列Aに対して以下のような等式が成り立つ場合を考えます。 このとき A を L(下三角行列)とU(上三角行列)に分解すると三角化された行列の計算を2回行えば 解を得られるこ…

Generatorと非同期処理

今日はes6の仕様であるGeneratorについてです。 es6でカスタムイテレータを作る (Iterator, Iterable, Generator) - embryo で簡単に紹介しましたが、今回はGeneratorで非同期処理を扱ってみたいと思います。 co で非同期処理 GitHub - tj/co: The ultimate …

es6でカスタムイテレータを作る (Iterator, Iterable, Generator)

今日はes6の仕様であるIterator、Iterableについてです。仕様を調べつつ実装して挙動を確かめていきます。 Iterator 一連の処理中において現在の処理位置を把握しつつ、コレクション中の項目へ一つずつアクセスする方法を指します。es6においては下記のnext…

React+Typescriptでコンポーネント公開用のBoilerplateを作った

今日はReact製のコンポーネントを外部公開するための雛形を作成したのでその紹介です。 ソースは以下。 github.com 構成 AltJS: Typescript Development・Docs: Storybook Unit test: Jest Typescript 型が欲しいのでTypescriptを使用しています。普段も大体…

UniversalLinksの挙動について

iOS

OpenIDConnectのクライアント実装のためにUniversalLinksを使用したので、その挙動についてまとめました。 Webブラウザからアプリへの遷移方法 AppScheme app://[*] でアプリへのリンクを実現しようというもの。被ったり敢えて被せてくるセキュリティリスク…

FluxとDDD(レイヤードアーキテクチャ)について考えてみた

トレタ Advent Calendar 2016 - Qiita 16日目の記事になります。 フロントエンドエンジニアのすえだです。 はじめに Flux実装する上で曖昧性をできるだけ無くすために頑張る話です。 ***アーキテクチャはこうあるべきみたいな原理主義的な話はありません。あ…