※大まかに前半が構文系、中盤が概念系、後半が定番の行動・お約束のセリフなど ※表記揺れの可能性あり。フリーレン構文(私はエルフ~)、ヒンメル理論(ヒンメルなら~)など、一部私の造語がございます。ほかの名称で呼ばれている可能性も十分考えられますので、ご留意ください。
本書では関数型言語をはじめとして多くの言語にあるパターンマッチをコンパイルする方法を紹介します。パターンマッチはシンプルに条件分岐の連鎖にコンパイルすることもできますが、よく研究された手法を使えば驚くほど効率的なコードを生成できるようになります。そのような手法を2種類紹介します。 パターンマッチはデータ型に照合しそのデータを取り出すものです。例えばRustであれば match opt { Some(x) => f(x), None => g()} のように Option 型への照合などに使えます。本書の前半ではパターンマッチの挙動や使い方などを学びます。挙動の確認にはプログラミング言語Standard MLを使い、一部Cのコードも使います。その後Common LispやJavaなどの他の言語でのパターンマッチの状況を確認します。後半ではパターンマッチのコンパイル技法について紹介します。パタ
Rust 分かんないッピ ・ε・ Rust の文字列周りのプラクティスを基礎から勉強してみようと思って勉強したのでそのときのメモをまとめます。 Rust は GC を持たない なぜ Rust の文字列周りの型があんなに大変なことになっているかは、Rust のメモリモデルと Copy の仕組みを学ぶことで理解できた気がしたので、メモリの話から始めます。 FYI: https://www.reddit.com/r/rustjerk/comments/ovx0uq/the_two_major_ways_rust_changed_my_life/ GC とは まずは GC からです。 GC とは Wikipedia をそのまま引用すると ガベージコレクション(英: garbage collection; GC)とは、コンピュータプログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に
この記事では、JavaライクなインターフェースとHaskellライクな型クラスを比較します。どちらも、複数の異なる型を統一的に扱うための仕組みです。 インターフェース インターフェースはご存知の方も多いと思いますが、コード例を載せておきます。 // インターフェースの定義 interface Greetable { String greet(); } // 実装の例1 class Hello implements Greetable { String message; Hello(String m) { this.message = m; } public String greet() { return "Hello " + message + "!"; } } // 実装の例2 class Goodbye implements Greetable { public String gree
こんにちは、バーチャルってますか?昔バーチャルリアリティーの研究をしていたものです。 Apple Vision Proが現行VRの頂点にいままさに君臨しつつあることを簡単に解説したいと思います。 まず、VRの歴史からVirtual reality(VR)の歴史は古く、狭義の"コンピューターで作られた仮想空間を現実であるかのように疑似体験する"という意味でも50年以上前から存在します。 Computer Generated Image(CGI)を利用した模擬飛行装置、いわゆるフルフライトシミュレーターがJALに導入されたのは1977年です。 本物の飛行機に訓練生のせて飛ばすのに比べたら、安全で安価で何度でも使える大変にオトクな装置だったからですね。 (フライトシミュレーターはざっくり100年ほどの歴史がありますが、CGIを本格的に利用しだしたのはここ50年程です) とはいえ、あくまで比較の問
コードを書き換えず,フラグを使って機能を有効化するプラクティスを「Feature Flag(フィーチャーフラグ)」と言う.一般的に main ブランチ(もしくは master や trunk)は常にリリースできる状態にしておくため,並行開発のために feature ブランチを作る.しかし,開発が長期化すると main ブランチとの差が大きくなり,コンフリクトが起きて,ブランチ運用面での考慮が必要になる.あるある! Feature Flag を実現する選択肢は多くある.単純に if ステートメントや設定ファイルを使った「コードレベルでの制御」もできるし,高機能を求めるなら LaunchDarkly や Unleash や AWS AppConfig など「サービスレベルでの制御」もできる.最近は使ったことがなかった Unleash を試して記事を書いたりしていた. 高機能な Feature
はじめに Java の enum は大変便利で非常多くのシーンで活用されています。例えば区分を表すようなオブジェクトを表現したい際にもよく使われていますね。 Java 14 で正式機能となった switch式にて網羅性検査が行えるようになり、それまで以前ではどうしても抽象メソッド等を活用する必要があった処理についても、switch式を利用する事で簡潔に表現することができるようになりました。 また、Java 17 で正式機能となった sealed classes/interfaces と Java 21 で正式機能になった Record Patterns によって、これまで必要だった区分値のような enum を必ずしも定義しなくて良い場合も出てきました。 この記事では、今まで enum を使っていたコードがこれらの機能によってどのように変わるのかを紹介し、盲目的に enum を定義するのでは
オンボーディングとアクティベーションについて考察した 前記事 の続き。今回は 120 アプリのオンボーディング体験を調査してそれらを 15 種類の UX に分類、それぞれの UX について共通項・個人的に思ったメリット・デメリットをまとめました。 次回はこれらの統計結果を公開。今回は実際の UX 事例について。現場で「これ使ってみる?」と今日から検討できる(かどうかは知らないけど…)記事になっていれば幸いです。全 6 記事予定の 2 記事め。 00# こんな感じで 120 のアプリ UIUX を調査した ・ US iOS App Ranking Top 100 + 気になるもの 20 をダウンロード ・ ゲームは除外 ・ アプリひとつひとつを 4-5 分触る。気になったもののみ深堀り。 ・ 定義・種類は独断と偏見。 ・ 複数種類の手法を使っている場合はそれぞれをカウント 01# スライド式
※この記事は全然入門記事ではないです。Javaなどのオブジェクト指向言語とRustをある程度理解している前提での記事です。あと、メモ程度に雑に書いています。 今回は抽象化がテーマです。オブジェクト指向の多態相当のことをRustでどうのように解決すればいいのでしょうか。個々の実装型の都合によらず、呼び出し側は統一的なインターフェイスで操作するケースはRustでもあるはずです。 オブジェクト指向言語の設計に慣れていると、Rustで設計するときにどうしたらいいかわからないことがあります。なぜならRustには継承がないからです…。まぁJavaと比べるとだいぶ違うので頭を切り替える必要があります。今回はそういう感じの記事です。 では、早速デザインパターンを題材にして考えてみましょう。 抽象化について 簡単なコマンドパターンから考えます。 ここでは単純に渡した文字列を標準出力するコマンドを考えます。以
先日とらのあなラボ様の勉強会に参加していたところ「強いキャッシュ」「弱いキャッシュ」とキーワードが出てきました。 初めて聞く表現だったので質問したところやはり知らない定義だったため、少し調べてまとめてみたものです。 なお、強いキャッシュ・弱いキャッシュという説明を否定するものではなく、補完したいと考えています。 強いキャッシュ・弱いキャッシュの定義 ネット上を調べると日本語・中国語・英語で説明が出てきますが、調べた限りでは強いキャッシュ・弱いキャッシュの初出はWebフロントエンド ハイパフォーマンスで、定義は以下の通りです。 ExpiresヘッダーとCache-Controlヘッダーでは強いキャッシュを設定できます。 ETagヘッダーとLast-Modifiedヘッダーでは弱いキャッシュを設定できます。 Webフロントエンド ハイパフォーマンス p124 こちらの文書の前後に詳しい定義があ
こんにちは。フィナンシャル開発センターの鈴木です。LINE証券のフロントエンドを担当しています。 以前の記事でご紹介した通り、LINE証券ではReactを使用しています。React 16.8で導入されたフックの機能は非常に革新的で、特にカスタムフックの概念によってReactにおけるコンポーネント設計は大きく様変わりしました。我々もフック時代のコンポーネント設計を試行錯誤しており、その結果はLINE証券にも反映されています。 この記事では、その中でも我々が最近ハマっている「カスタムフックを通じてコンポーネントを提供する」という、いわば“render hooks”とも言うべき設計パターンを紹介します。 今回のお題 今回は、「いくつかのチェックボックスがあり、全部チェックを入れると次に進める」という典型的なパターンを題材にしましょう。次の画像では3つのチェックボックスと「次へ」ボタンが並んでおり
ジェネラティブアートという言葉をご存知でしょうか? アルゴリズムによって作られる芸術作品を指す名称です。Pinterestで「generative art」と検索すると静止画、動画ともにたくさんの作品を見ることができます。 無機質さを感じさせるものもあれば、まるで生きているように感じる作品もあります。創作者たちはどのようなところから着想を得ているのでしょうか? 彼らの中には数学的な幾何学模様や物理現象、果ては生物が織りなす複雑なパターンをコンピューターで再現することにより作品を作る者もいます。 本記事では特に「生物」に焦点を当てます。生物の複雑な営みを紐解いた背景や、それをアルゴリズムに落とし込むことで可能になった表現を紹介します。 本記事を読むことで日常に潜むあらゆる現象が芸術の種に見える喜びを感じていただければ幸いです。 サンプルはHTML CanvasとJavaScriptで作成して
はじめに アプリケーションレイヤーでトランザクションを考慮した実装をどのようにすればいいのか悩んでいる人が多いことに気がつきました。オニオンアーキテクチャ等でアプリケーションコードを関心ごとのレイヤーに分離するときに、トランザクションを開始するためのDBとのコネクションの作成をどのレイヤーで実施するのか悩んでいる人が多いそうです。 本記事ではDDD+オニオンアーキテクチャ+Repositoryパターンを使う前提で、私がよく使うトランザクションを考慮した実装について説明しようと思います。 トランザクションを考慮した実装 私はトランザクションを開始するためのDBとのコネクションの作成はUsecase層で実施します。 私がよく書く実装ではDDDでいうEntityを定義します。そしてRepositoryではEntityのCRUDのみ行うように実装し、Repositoryをトランザクション境界にしま
React is an excellent tool for building front-end applications. It has a diverse ecosystem with hundreds of great libraries for literally anything you might need. However, being forced to make so many choices can be overwhelming. It is also very flexible, you can write React applications in any way you like, but that flexibility comes with a cost. Since there is no pre-defined architecture that de
〇〇 強化型人間を目指す:PM + プロダクトに関わる人のプチキャリア論と、今後強化できる 20 のスキルについて 職種に通常求められる職能を超え、自身をあえて「自分は 〇〇 にも強みがあります」と主張する必要に迫られた場合。プロダクトに関わられているみなさまは、どんな言葉を 〇〇 に入れようと思われますか? 「アプリオタクなので、UX の引き出しには自信があります」「戦略立案なら、元コンサルの私にお任せを」「元エンジニア。開発 ROI 最大のプロジェクトを提案できます」などなど……色々な答え方があるかと思います。 こうした強みを持った「〇〇強化型人間 にならなければマズイ」と最近自分は強く感じるようになってきているのですが、結論から書くと、例えば PdM の場合には最も良く言及されがちな デザイン or コードができなくても大丈夫。思ったより強化エリアにも色々な方向がありそう。 という
こんにちは、@ueokandeです。 本番リリースってドキドキしますよね。 本日はkintone.comのリリース自動化と、その戦略についてお話します。 kintone.comのCI/CDパイプライン kintone.comのインフラ構成はモノレポで管理しており、AWSの構成や、Kubernetes上にデプロイするサービスなどが1つのレポジトリに存在します。 現在のkintone.comは、開発環境、ステージング環境、本番環境の3つがあります。 適用タイミングをずらすことによる環境間の乖離を防ぐため、各リリースはすべての環境に適用することとしました。 開発環境でしばらく寝かせたい変更は、機能フラグやカナリアによって切り替えます。 CI/CDパイプラインは以下のようになっています。 それぞれの環境に順に適用し、本番環境適用後にテストが通れば無事リリース完了です。 kintone.comのCI
こんにちは、THECOO株式会社のpoteboyと申します。普段は現職1人目のWEBフロントエンド開発者としてFaniconというファンコミュニティサービスの開発を行っております。 弊社では私が入社する以前までフロントエンド専任の開発者がおらず、サーバーサイドの開発者やAndroidの開発者がフロントエンドの開発業務を兼務していました。 専任がいなかったのは、Faniconが元々ネイティブベースのアプリで、WEBアプリの開発優先度を下げていたためです。 そのため、フロントエンドの開発環境に関しても万全とは言えず、2022年6月に私が入社し、9月には2人目のフロントエンド開発者となるTomoya氏が入社したタイミングで、2人で協力してFaniconフロントエンドの大改修を行なうこととなりました。 フロントエンド改修業務にはTypeScriptの導入、既存コンポーネントのVue3化、単体テスト
Googleなどの検索エンジンでは「職務質問」と入力するとどんなサジェストが表示されるのでしょうか? なんと、というよりも「やはり」という結果ですが、トップ表示となるのは「職務質問 拒否」です。 YouTubeなどの動画投稿サイトでは「職務質問を拒否して警察官を撃退した」といったタイトルの動画が数多くアップロードされていますが、果たして本当に職務質問を拒否できるのでしょうか? 元警察官のライターが、職務質問の正しい対処法を紹介します。(ライター・鷹橋公宣) ●まず知っておくべき、職務質問の基本 「職務質問」は、警察官に許されている「停止」と「質問」を主体とした活動です。警察官職務執行法第2条1項によると、警察官は、異常な挙動や周囲の事情から合理的に判断して、次のような相手を停止させ、質問することができます。 ・何らかの罪を犯した、もしくは犯そうとしていると疑うに足りる相当な理由のある者 ・
プログラミングスクールのフィヨルドブートキャンプを運営していて、就職に関するアドバイスを求められることも多いです。SESについてはよく訊かれるのでここにまとめて回答しておきます。 SESとは SES(System Engineering Service)とはソフトウェア開発・運用・保守における委託契約の一種です。特定の業務に対してエンジニアを派遣し、エンジニアリングの能力を時間で提供します。 他に一般的な契約として請負契約があります。(特定派遣については2018年に廃止されました) この二つは主に報酬の対象が違います。 SES:労働時間に対して報酬を支払う。 請負:成果物に対して報酬を支払う。 SESはその時間働いていれば必ずお金がもらえますが、請負は成果物(システム)ができなかったら報酬が貰えません。 請負が成果物によって報酬が出るか決まるということは、「成果物とは何か?」ということを事
行ったことのない場所を検索するとき、地域の多くの情報が詰まった Google のクチコミを使えば、お店やレストランなど、あなたにぴったりの場所やビジネスの情報を見つけることができます。 日々、世界中のユーザーから数百万件にのぼるクチコミが投稿されており、Google は情報の有益性と正確性を保つため 24 時間体制でサポートしています。不適切なコンテンツを防ぐための作業の多くはあまり知られていませんが、今回はユーザーがクチコミを投稿した時の舞台裏を紹介します。 ポリシーの作成と実施 クチコミが実際の体験や来店に基づいていることを確認し、関係性のないコメントや不快なコメントを Google ビジネス プロフィールから除外するために、 厳格なコンテンツポリシー を作成しています。 世界が進歩するにつれて、Google のポリシーと保護も進化しています。これにより、不正行為の対象となる可能性があ
Ganesh Mani I'm a full-stack developer, Android application/game developer, and tech enthusiast who loves to work with current technologies in web, mobile, the IoT, machine learning, and data science. Editor’s note: This article was updated 27 September 2022 to include information about state patterns and anti-patterns in TypeScript, as well as to make general revisions to the article. Design patt
「アコム」に迫る勢いのLINEポケットマネー “10代とやり取り多い40代”は延滞リスクが低い?:金融ディスラプション(1/3 ページ) スマートフォンを使い、個人向けに与信から貸し出しまでを行う、LINEポケットマネー(LINEクレジット運営)が好調だ。2019年8月のサービス開始から、22年3月末で申込件数が累計100万件を突破した。累計貸付実行額も500億円を超えている。 LINEクレジットサービス企画部の山岡巧部長は、「消費者金融大手に匹敵する件数」だと話す。大手消費者金融アコムの場合、年間の新規申し込み数が60万件程度。2年半で100万件のLINEポケットマネーの規模感が分かる。 キャッシュレス特化の利用体験 LINEポケットマネーの特徴は大きく2つある。1つは、キャッシュレスに特化した利用体験を提供している点だ。これまでの消費者向けローンは、申し込むと銀行口座に入金され、ATM
TL;DR ADOP はヘキサゴナルアーキテクチャの実装パターンとして考えられます。 パターンという名前はそれに由来します。 あえて名付けた理由はこぼれ話をご確認いただけると幸いです。 ADOP の概要 ADOP (Application Domain Others Pattern) は中長期的に運用可能なコードへ誘導するアプリケーションアーキテクチャパターンです。 ADOP は次の特徴があります。 最小限のルールである 指針が明確である 特定の技術スタックに縛られない テスタビリティが確保される これらの特徴は、コードを自然と中長期的に運用可能なコードへ導きます。 まず、簡単にそれぞれがどういった意味を成すのかを確認してきましょう。 最小限のルールである どれほど完璧な作戦であっても、その実行が不可能であれば何の意味もありません。 プログラミングにおいてもそれは同じことで、制約を守るため
『陋巷に在り』『泣き虫弱虫諸葛孔明』といった、中国に題材を取った小説で知られる作家の酒見賢一が11月7日に死去した。ネットにはまだ59歳だったのかといった驚きや、『泣き虫弱虫諸葛孔明』とTVドラマが放送中の『パリピ孔明』との関係を類推する声がずらりと並んだ。わけてもデビュー作『後宮小説』が、後の『十二国記』や『彩雲国物語』、そしてこちらもTVアニメが放送中の『薬屋のひとりごと』にもたらした影響を問う声が多くあって、中華風のファンタジーやミステリで盛り上がる今の小説状況を、30年も前に拓いた作家として再注目が集まっている。 『後宮小説』は酒見賢一のデビュー作で、1989年に第1回日本ファンタジーノベル大賞を受賞して刊行され、第102回直木賞の候補にもなった。「腹上死であった、と記載されている」という驚きの書き出して始まる小説は、そうした死因による皇帝の崩御から始まり、次の皇帝即位に向けて新し
ランダムっぽいパターンのタイルやブロックって、どうやって貼っているのかなーと気になっていた。 設計図はあるのか。ないとしたら現場の裁量でランダムに貼っているのか。自分でも仮想的に貼ってみて調べることにした。 タイルのパターンが気になる こういう模様のパターンってあると思うんです。 歩道のブロックのパターン 例えば歩道で、いろんな色のブロックがランダムっぽく貼られてるやつ。 家の壁のタイルにもある 壁のタイルにも何種類かの色が混ざってるものがある。こういうのってどうやって貼ってるかなーというのが以前から気になっていた。 まず、模様の設計図はあるんだろうか。でも見る限り決まったパターンはなさそうだし、設計図があるようには見えない。とすると、現場で作業する人の裁量で貼ってるんだろうか。 こういうのとかも もしそうだとしても、現場に運ばれるそれぞれの色のタイルの枚数は決まっているだろう。であれば、
モダンiOSナビゲーションパターン 日本語訳Modern iOS Navigation Patterns (Japanese Text Ver.) この資料は、Frank Rausch 氏による Modern iOS Navigation Patterns の、日本語訳版です。オリジナル版 “2023-03-07” を基にし、CC BY-NC-SA 4.0 ライセンスによって公開しています。 オリジナルを日本語に訳すにあたり、なるべく元の表現を尊重するように心がけていますが、一部の表現については、訳者による解釈の補足や文言調整を加えています。 目次 目次 はじめに 1. 構造的なナビゲーション ドリルダウン (Drill-Down) フラット (Flat) ピラミッド (Pyramid) ハブ・アンド・スポーク (Hub-and-Spoke)2 2. オーバーレイ型ナビゲーション 強いモー
0. はじめに 現代のWebアプリケーションの開発言語として、TypeScriptはファーストチョイスの一つです。特殊なケースを除き、フロントエンドの開発言語にはTypeScriptが選ばれるため、言語を統一するメリットを優先し、バックエンドにもTypeScriptが採用されるケースはよく見られます。 またReactがClass Componentを捨てFunction Componentを採用した事件が象徴するように、現代のプログラミングパラダイムのトレンドとして関数型プログラミングがあります。そもそもJavaScriptの出自は、関数型言語をブラウザに搭載できると聞いてNetscapeへ入社したブレンダンアイク氏が、オブジェクト指向言語であるJavaのような言語を会社から要求され、開発したというものです[1]。そのためか、JavaScriptは未だ関数型言語としては未成熟で、関数型プロ
連休の余韻も楽しんだので今日から散歩を再開した。ちょっと前までは「陽の光を浴びなきゃ!」と思って3時過ぎにウロウロしてたけど、これからはもうちょっと涼しい時間帯がいいなと思って、夕暮れ時に散歩しながら fukabori.fm を聴いてた。Value Object のお話。面白いなぁ 73. Value Object w/ kumagi | fukabori.fm kumagi さんの記事はこちら Value Objectについて整理しよう - Software Transactional Memo お絵描き PoEAA や DDD はだいぶ前に読んだことがあるけど、Value Object を雰囲気で捉えてるからちゃんと見直しておこうと思って、調べたりしながら絵を描いた。こういうことなのかな? (絵をかくほどでもなかった・・・ Value Object とは? kumagi さんも書いてる
Photo by Joadl サマセット・モーム「英国で良いものを食うなら朝食を3回とるべき」 塩気たっぷりのベーコンにソーセージ、ベイクドビーンズ、目玉焼き、焼いたマッシュルームにトマト、そしてトースト。 この組み合わせは「フル・ブレックファスト」または「フライ・アップ」と呼ばれます。 アメリカ資本のホテルのみならず、世界各国から宿泊客を受け入れるホテルでもこの朝食のラインアップはポピュラーです。イギリスの食文化で世界にもっとも受け入れられている食べ物は「朝食」であると言えそうです。 ではフル・ブレックファストはどのようにして生まれたのでしょうか。 1. 各国のフル・ブレックファスト フル・ブレックファストはイギリス圏の食文化ですが、各国で乗せる具材に若干の違いがあります。 イングリッシュ・フル Photo by Joadl もっともよく知られる「イングリッシュ・フル」は、フライパンでベ
タイポグラフィとしてのスタイルシート タイポグラフィでは、文字や単語は機械的な手法で生み出されます。……(サイズや位置などの)情報は他の人に渡すことができ、別の機会にまったく同じものを再現することもできます。 フレット・スメイヤーズ『カウンターパンチ※1』 タイポグラフィとは、人の手によって直接描かれるものではなく、機械的な手法によって生成されるものです。そして、その書体や文字サイズや行間といったものをデータとして定義でき、そのデータをもとにまったく同じものを再現できるものでもあります。 ここに示したのはウェブサイトやモバイルアプリケーションなどの表示スタイルを記述する言語であるCSS(カスケーディング・スタイル・シート)のコードです。これによって書体や文字サイズ、行間、そして文字サイズを基準にしたスペーシングなどが定義されます。このコードをもとにして、ウェブブラウザなどユーザーエージェン
マッキンゼーによる、コロナウイルスによる世界経済への影響、および、対策方法の資料を和訳しました。めちゃくちゃ勉強になりました。 時間がなくて和訳を最後割愛しています。和訳間違っているところがあれば、コメントで教えてください! COVID-19は、未曾有のグローバルな人道的挑戦である。 何千人もの医療従事者が英雄的にウイルスと戦ってい、自分の命を危険にさらしている。政府と産業界が協力して課題の理解と対応、被害者とその家族への支援、そして地域社会の発展に貢献し、治療法やワクチンを模索している。 世界中の企業が迅速に行動する必要がある。 この文書は、上級指導者が COVID-19 を理解するのに役立つことを目的としている。状況とその展開を把握し、従業員、顧客、サプライチェーン、業績を保護するための対策を講じる。 要旨 現在の状況 本稿執筆時点で、COVID-19の症例数は38万件を超え、世界中で
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く