2. 自己紹介 2019/11/23 2 増田 亨 (@masuda220) 最近の仕事:JavaとSQLでプログラミング(したい) 今日は、この本の背景にある オブジェクト指向プログラミングの 基本的な考え方を説明します 仕事レベルで使った言語 Z80アセンブラ, C, PL/SQL, C++, COBOL, FORTRAN, BASIC, Lisp, Prolog, Smalltalk, awk, Perl, PHP, Ruby, Python, Groovy, Objective-C, JavaScript … 試したことのある言語 Haskell, OCaml, Schema, Scala, Kotlin, Go, Rust, IO, TypeScript, … 面白いと思っている言語 Haskell, Prolog, Rust
Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。msyksphinz氏は、自作エミュレータで得た学びについて発表しました。全2回。前半は、自作エミュレータの実装とその結果について。 実機が存在しなくてもエミュレータを使えば動きの中身が見える msyksphinz氏(以下、msyksphinz):「Rustで作るフルスクラッチQEMU型エミュレータ」と題して、発表をします。 簡単に自己紹介をさせてください。Twitterだとこういうアカウントでいろいろと活動しています。趣味で「FPGA開発日記」というブログを書いていて、RISC-V、FPGA、CPU、低レイヤプログラミングなど、興味のあるものの記事を書いています。本業はハードウェア開発エンジニアをしていて、汎用CPUの設計などの仕事をしています。 今回はRustとい
Goで構造体を設計する場合、オブジェクト指向的な「型ごとの責務の分担」以外に、「どのように使われるものか」を考える必要があります。 ポインタで扱うのか? 値として扱うのか? 両方許可するのか? 値として扱える場合にimmutable(変更不可能)なオブジェクトとするのか、mutable(変更可能)なオブジェクトとするのか 値として扱える場合にゼロ値での動作を補償するかどうか 他の言語で言うと、C#の構造体とクラスの違い、C++のデフォルトコンストラクタあたりに頭を悩ませたことがある人にはおなじみかもしれませんが、Goでもいくつか考慮が必要になります。 ポインタ型として扱う必要があるケースまず最初に決断できる方針としては、ポインタ型でのみ扱うかどうかです。 内部にスライスやmap、ポインタなどの参照型な要素を持っていれば、基本的にポインタ型でのみ扱う構造体になります。これらの要素を持っていた
ドメイン駆動設計と関数型プログラミングを組み合わせることで、顧客満足度の向上、開発サイクルの短縮、無駄な作業の削減を実現できます。本書では、ビジネスドメインの例とF#のコードで、ビジネスに焦点を当てた、柔軟で高品質なソフトウェアを構築する方法を紹介します。たとえば、F#の型システムを使って複雑なドメインをモデル化し、読みやすいドキュメントにもなるコードを作成します。また、ビジネスルールをエンコードして「コンパイル時ユニットテスト」を作成することで、不正な状態を表現できないようにして潜在的なバグを排除します。関数型プログラミングの核となる原則を適用することで、実世界の要求をエレガントかつ簡潔にモデル化したソフトウェア設計を実現できます。 ドメイン駆動設計と関数型プログラミングを組み合わせることで、顧客満足度の向上、開発サイクルの短縮、無駄な作業の削減を実現できます。本書では、ビジネスドメイン
無職やめ太郎(@Yametaro1983) さんは、株式会社ゆめみに所属するエンジニアです。エンジニアコミュニティサービス「Qiita」にて、関西型言語(関西弁)を駆使した文体で記事を執筆・投稿しており、多くの読者からの人気を集めています。 Findy Engineer Lab編集部はそんなやめ太郎さんに「普段どおりのポップな文体で、ご自身のキャリアを振り返る記事を書いてください」とリクエストしてみました。知られざる「やめ太郎さんが技術記事を書き続ける理由」とは? とある休日 娘「ねぇ、パパ?」 ワイ「なんや?娘ちゃん」 娘「パパはどうして、関西弁のコントみたいな記事をQiitaに書くの?」 ワイ「コント・・・?」 ワイ「ああ、関西型言語による技術記事のことやな」 娘「なんでもいいけど、あの関西弁の会話調の記事を書き始めたきっかけを知りたいな〜と思って」 ワイ「うーん、それはなぁ」 きっか
はじめに Pythonでキチンと型アノテーションを書くのであれば一度は読んでおきたいのがtypingライブラリの公式ドキュメントです。 前回の記事でも読んでくださいと(偉そうに)書いたわけですが、実のところこれは型アノテーションを解釈する側1に向けたドキュメントだったりもするのでアノテを書く側にとっては情報がごちゃごちゃしてるんですよね。加えて未翻訳の箇所もそれなりにあってま~~~~読みにくい。実際に読んでいただいた方々からの評判もすこぶる悪かったです。また 機能は分かったけど結局どんな時に使えばいいのか分からない という致命的なコメントも聞きました。 そこで今回はこれらの不満を解消すべく、公式ドキュメントを一般ユーザー向けに再編し具体的なユースケースを盛り込んだ非公式ドキュメントをご用意しました。 なおPython 3.10は2021年10月04日リリース予定ですが、先駆けてドキュメント
本記事は、TechFeed Experts Night#11 〜 JavaScript/TypeScript最前線のセッション書き起こし記事になります。 イベントページのタイムテーブルから、その他のセッションに関する記事もお読み頂けますので、一度アクセスしてみてください。 本セッションの登壇者 セッション動画 クレスウェア株式会社の奥野賢太郎です。私はTypeScriptが登場してすぐの2013年初頭から使っていますので、TypeScript歴はちょうど10年になります。今回はこの10年間のTypeScriptの進化について各バージョンで追加された機能や進化の傾向を振り返りつつ、今後のTypeScriptの学習/キャッチアップ方法についてもご紹介します。 TypeScriptは10歳 - 過去を振り返る まずはTypeScriptの誕生から現在まで、過去10年間の各バージョンで追加された機
Lodash is dead. Long live Radash. 記事は上記記事を意訳したものです。 ※当ブログでの翻訳記事は元サイト様に許可を得て掲載しています。 Lodashの何が問題なのか? 関数の詳細分析 Lodashの_.get関数 Lodashの_.filter関数 Lodashの_.map関数 コード品質 でも、そのコミュニティは... では、どうするか? try関数 parallel関数 retry関数 counting関数 range関数 list関数 Lodashの何が問題なのか? JavaScriptの動的な能力が欠点ではなく特徴として捉えられていた時代に、Lodashは異なる入力に対して異なる振る舞いをする関数を提供することで、できる限り役立つように作られました。現在では、私たちはより良い方法を知っています。純粋関数、決定論的な振る舞い、関数合成といった関数型のコ
フロントエンドカンファレンス北海道 2024にて「ウェブエンジニアでもWasmを使いたい!」というタイトルで20分のトークを行いました. 当日のトークでは,WebAssemblyの特徴に触れつつ,特殊な用途[1]以外でWebAssemblyをどのように活用できそうか,実際にAssemblyScriptのコードを例に紹介しました. AssemblyScriptはTypeScriptをWebAssemblyにコンパイルできる言語として紹介しましたが,より正確にはTypeScriptと同じ構文を持つ言語をWebAssemblyにコンパイルする言語という方が正しいかもしれません. これはTypeScriptにはない構文などをAssemblyScriptでサポートしているという話ではなく,TypeScriptの型推論などの言語機能を活用してAssemblyScriptのコードを書くことができるように
こんにちは、デジスマチームでエンジニアをやっている堀田です。 これまで、TypeScriptの型で色々試したことがあります。 2年前: TSの型で麻雀の点数計算 最近: 型で足し算 遊ぶことの方が多かったですが、先日M3 TechTalkで実用的かも?と思える話をしました。 そこでは、3つの場面を想定して、それぞれの場面でより安全なコードを書くための型定義を提案しました。 この記事では、その時の話をまとめて紹介します。 1. key? 2. ログ送信 Rest parameters with tuple types Function Overloadsでも実現可能 3. 画面遷移パス生成 まとめ We are hiring!! 1. key? 早速、1つ目の場面です。 ここでは、「パラメータを受け取って、その値によって生成か更新か挙動が変わる」以下のような関数を扱うことを考えます。 fun
どうも、こんにちは。HRBrain でフロントエンドエンジニアをやってます。ちゃんかつです。 この前初めて代々木公園に行ったのですが、めちゃくちゃ広いですね。自然がいっぱいで気持ちが良かったです。 さて、HRBrain では今年の 6 月から、毎週月曜日に「type-challenges」を用いて社員の TypeScript (以下 TS) の型表現の向上を図っています。 この記事では、HRBrain ではなぜ type-challenges を解く時間を設けているのか、また、type-challenges への取り組み方を紹介します。 なぜ type-challenges を利用するのか いろいろ理由があるのですが、「解答がなるべく簡単にできる」が一番大きな理由です。 Typescript Playgroundで解答することが出来て環境構築の手間は不要、そして、type-challeng
この記事では、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
11月16日、Nuxt 3 の初のstable版となる 3.0 がついに正式リリースされました! Public Beta版が公開されてから約1年、RC版で様々な改善と機能追加が行われてきましたが、待望の安定版の登場です。 個人的にこの1年いろいろな機能を試してみた感覚として、Nuxt 3 はあらゆるフロントエンド開発者にオススメできる、非常に使いやすくて優れたフレームワークだと思っています。 Nuxt 3 は非常に多機能かつ巨大なフレームワークであり、「何が優れているのか」を一言で説明するのはなかなか難しいのですが、大きく5つのテーマに分けてその魅力を整理してみました。 まず冒頭に、テーマごとの「最低限これだけ知ってもらいたい!」という要約を載せてから、細かいポイントを解説していきます。 まずは忙しい人向けの要約だけでも読んでもらって、興味が出てきた方は続きを読んで頂ければ嬉しいです! N
大きな問題も分割すればなんとかなる まつもとゆきひろ氏:次のことわざにいきましょうね。4番目は、これもことわざじゃないと言われちゃうんですが、「分割統治」という言葉です。英語だと「Divide and Conquer」。「分割して征服せよ」という感じです。大きな問題もね、分割すればなんとかなるというやつですね。 (スライドを示して)これは最近見た漫画です。巨大なタスクが存在して、圧倒されそうな気持ちになった時には、タスクを取り上げて細かく分解すると、細かく分解されたタスクは無視しやすいので、タスクは片づかなくても気分は楽になるという漫画なんですけども(笑)、実際、そういうところもあるんですよね。 非常に巨大なことをしろと言われると大変なんだけど、手に負える範囲に分割して1つ1つ話をしていくと問題を解決できるというのは、どこにおいても応用可能な原則だと思います。 クイックソートは一応現時点で
import { asApi, Zodios } from '@zodios/core' import { z } from 'zod' const vR1x0k5qaLk = z.object({ id: z.number(), name: z.string() }).partial() const v8JbFEq2fUl = z.object({ id: z.number().optional(), name: z.string(), category: vR1x0k5qaLk.optional(), photoUrls: z.array(z.string()), tags: z.array(vR1x0k5qaLk).optional(), status: z.enum(['available', 'pending', 'sold']).optional(), }) const vlh
型は型、どうもかわしんです。SQLite では型は絶対ではなく、あくまでも尊重です。信用しすぎると裏切られます。 最近 Rust で SQLite をフルスクラッチで再実装しています。 github.com なるべく本家の SQLite と compatible にするために SQLite のドキュメントやコードを読んで挙動を理解しながら作っています。これを作ることになった経緯はこの記事で紹介していますが、その過程でいろいろ知らなかった面白い仕様や実装があったので紹介していきたいと思います。今回はその第一弾です。 kawasin73.hatenablog.com データ型と Type Affinity SQLite のドキュメントの中で、今の所一番面白いのがこれです。 www.sqlite.org まず、SQLite の内部的には 5 つのデータ型しかありません。 NULL INTEGER
何番煎じかわかりませんが TypeScript でのエラーハンドリングについて考えてみたいと思います。 この記事で扱う TypeScript のバージョンは 4.3 です。 エラーを型安全に扱いたい TypeScript を書いていれば誰もが一度はぶつかる問題ではないでしょうか。 TypeScript では catch した例外は any として扱われます。 これは JavaScript の仕様上どんな値でも throw できてしまうため仕方のないことなのですが、せっかく型安全性を手に入れるために TypeScript を使っているのに any をハンドリングしなければならないのは苦痛です。 次のように例外を throw し得る関数 foo() のエラーハンドリングを考えてみます。 e は any なので、プロパティにアクセスしようにも危険性が伴います。 そこで型アノテーションを使用して
TypeScriptでユーザー定義型ガードを定義する場合、引数をany型にして中を自由に書く方法と引数をunknown型にして中でasを駆使して書く方法があります。この記事では両者を比較考察します。結論としては、unknownとasを使うのが型安全性の面からおすすめです。また、うまく関数を分割することでasを消すことも可能で、これも有効です。 ユーザー定義型ガードとはTypeScriptのユーザー定義型ガードとは、型の絞り込み (type narrowing) に使うことができる関数です。ユーザー定義型ガードは返り値が引数名 is 型のような形の型述語 (type predicate) になっています1。このような関数は真偽値を返り値として返し、trueを返すならば引数名が型であることを表します。 例えば、与えられた値がstring | number型かどうか調べるユーザー定義型ガードは次
@uhyo さんのTS本ということで読んでいます。 一応入門書という位置づけなので、社内での育成に活用したい目線。 とはいえ自分でも学べるところ多そう、特にTSのd.tsみたいなモジュールまわり理解弱いので… 全体的な感想 4章(関数)、6章(高度な型)が特によかった。 (5章が入ってないのは自分がクラス使わないからなので、使う人だったら5章も入ってると思う) 自分も何年かフロントエンドエンジニアとしてやっているのでさすがにだいたいは知っている内容のおさらいになったけど、それでもふわっとした理解が適切に言語化だったり、コーナーケースの知らない挙動など発見は沢山あった。 特に育成には有用だなと思った。6章の内容は理論と実践の話のバランスが良く、レベル的にもそれなりにTS書いてる人でも知らないこと全然ありそうな内容だったので、自分のチームのメンバーにも少なくとも6章は読んでもらいたい。勧めます
宿泊の管理システムについて 新しい管理システムについて 開発初期のフロントエンド設計 コンポーネントは4レイヤー方式を採用 UIのコンポーネントライブラリを採用 これ以上の設計、方針は決めなかった 初期ローンチ後の課題 改善した内容 1. コンポーネント設計の見直し ディレクトリ構成の変更 大きくなったコンポーネントの分割 Fragment Colocationを導入してコンポーネントのインターフェースとFragmentを整理 2. 業務処理(composables)の分割 3. 型安全に開発できるように厳しいlint設定に変更 4. 秩序を保てる開発体制、ドキュメントの整備 現在と今後 今後やりたいこと 改善を継続するためのポイント まとめ おわりに 宿泊プロダクト開発部の田中(id:kentana20)です。 このエントリーは一休.com Advent Calendar 2023の14
先週の This Week In React に流れてきたやつ。 🧵 TypeScript Cheat Sheets by @orta 4 nicely designed and official cheatsheets now online: - Types - Interfaces - Classes - Control Flow Analysishttps://t.co/fnqAcuU8c8 pic.twitter.com/D7BlZsyvjf— Sebastien Lorber 🇫🇷 🦖 ⚛️ 📨 (@sebastienlorber) 2022年1月19日 ざっと読んでみたけどそこまで目新しい発見はありませんでした。以下メモ。 💬 はコメント。 Classes https://www.typescriptlang.org/static/TypeScript%20Clas
この記事はScala Advent Calendar 2023の11日目です. 最近, 趣味でScala 3のコードをだいぶ書いていて, マクロの使い心地のよさに感心しました. 理論的な背景も含めて, 産業界で多く使われているプログラミング言語の中では筆者の知る限りぶっちぎりに優れたマクロを備えています. 他の言語にも見習ってほしいですね. たぶん見習おうとすると処理系を作り直す羽目になりますが. この記事ではScala 3のマクロのすごいところを例を使って紹介します. マクロの実践的な例 準備 実践的な例: NamedArray – 名前でアクセスできる配列 NamedArrayのマクロ実装 記述が明瞭 メタレベルのプログラムの扱い クォートとスプライスがある パターンマッチもある 生成コードに型がつく 多段階計算に基づいている クォートとスプライスの本当の意味 ネストしたスプライス ネ
3年前に抱いていた Rust に対するイメージ 「コンセプトから理解するRust」(Amazon)という書籍を読んで Rust に再入門してみました。 実は2019年に Rust のチュートリアルである「The Rust Programming Language」(通称 TRPL)を写経したことがあります(GitHub)。 しかし、当時の自分は PHP のバックエンドエンジニアとしての経験が2年ちょっとあるくらいで、TypeScript にもまだ入門しておらず静的型付け言語の経験はほとんどなかったように記憶しています。 当時から Rust は所有権などの概念が難解で初心者を拒むものの、 Stack Overflow のアンケートで開発者から人気な言語として高い地位を誇っているというイメージがありました。 自分自身、PHP 以外にもサーバーサイドで使える言語があるといいなという思い、Rust
型推論オプション 型推論の結果が変わるもの。 ⭐strict ... 以下のセット alwaysStrict strictNullChecks T | null や T | undefined が T に縮退しなくなる。 例 strictBindCallApply Function の各種メソッドが any に縮退しなくなる。 例 strictFunctionTypes コールバック関数の引数が共変でもunifyするようになる結果、型変数の推論優先度が変わることがある。 例 strictPropertyInitialization noImplicitAny 宣言型がない場合にflow typeが使われる機会が増える。 例 noImplicitThis thisの宣言型がない場合に文脈から型が決定される機会が増える。 例 useUnknownInCatchVariables catch (
はじめに Zod というバリデーションライブラリが非常に流行っているようなので、素振りした。 www.totaltypescript.com このチュートリアルはたしか Twitter で流れてきて知ったのだが 今見ると Zod の公式ドキュメントからも Resources として紹介されているので、そこそこ信頼していいコンテンツなのだと判断した。 チュートリアルについて チュートリアルと名がついているが、内容は全 10 問のエクササイズを解くという構成。 あらかじめ型チェックのエラーまたはランタイムのエラーが発生するサンプルコードが問題として用意されており、そのコードを修正しながら Zod の基本的な使い方を学ぶ。 チュートリアルには Zod の使い方の説明は特にないので、チュートリアルの問題を解くために Zod の公式ドキュメントを読んで必要な箇所を理解する、という感じ。 Rust で
2023年5月、信託型ストックオプション(以下、信託型SO)の国税庁と経済産業省による説明会が実施され、Q&Aが配布された。 この点については既に2023年2月の国会で議論に上がっており、この経緯に関しては既知のものとして扱うが、知らない方については経緯及び概要は以下の有料記事がわかりやすく取り上げられているため参考とされたい。 前提として、本noteは既存の信託型SOの会計処理ではなく、国税庁Q&Aで明確になる部分の影響を対象としている。 また税効果会計は対象としていない。 本noteは2023/5/29に公開をしている。今後の状況によって加筆をする場合はその点を記載していこうと思う。 私見見解の相違点見解の相違する点は国税庁の資料を用いて示すと以下のとおりとなる。 国税庁配布:信託型ストックオプションの課税についてより筆者作成⑦・⑧の新株予約権の行使・株式交付時における課税に関して、企
はじめにOpenAPI仕様に則ってREST APIの設計をする際に、値が存在しないという状態をどのように表現するかというお話です。 undefinedとはまずはじめに、ここでundefinedと言っているのは、OpenAPIの仕様において、リクエスト/レスポンスのデータ型を定義するSchema Objectのプロパティの1つであるrequiredが指定されていない状態を指します。 OpenAPIにおけるrequiredの定義を確認してみましょう。 OpenAPIの仕様を参照すると、Schema ObjectはJSON Schemaの仕様に従うと記載されています。 The Schema Object allows the definition of input and output data types. These types can be objects, but also primit
こんにちは、新卒エンジニアの id:d-kimuson です 先日 type-predicates-generator という型定義からユーザー定義型ガード・アサーション関数を自動生成するツールをリリースして紹介記事を書いたのですが、感想とかを眺めていたら同じく外部から来た値に安全な型付けをするためのライブラリやツールの情報をいくつも観測しました この辺りのランタイムチェックライブラリの情報ってあまりまとまっていない印象で自分が知らないものもいくつかあったので、調べつつ簡単にまとめられたらなと思ってこのエントリを書きました 外部からやってきた値を型安全にするにはざっくりと 型生成によるアプローチ ランタイムチェック用の独自型を書かせるアプローチ 型情報からランタイムチェック関数を自動生成するアプローチ の 3 つのアプローチがあると思うので、それぞれのアプローチごとに紹介します ① 型定義
動機 Why OCaml 学習方法 Real World OCaml Github Copilot と ChatGPT オンラインジャッジ (競プロ) Advent of Code その次? 所感 関数型という概念 OCamlの書き味 Rust, Python の経験 AIとの親和性 まとめ 某Nさんがここ最近Haskellとか勉強してて楽しそうで真似してみたくなって、自分も今さらながら何か関数型言語はじめてみるか〜と周りに相談したところOCamlをオススメされたので 今年に入ってからひたすらOCaml書く練習してる。AtCoder Boot camp for BeginnersのEasy 100をようやく終わらせたところ。 pic.twitter.com/POBWhvHHCn— すぎゃーん💯 (@sugyan) April 9, 2023 大西さんが動画の中で感極まっていたけど、宮川さ
代数的データ型とはなにか 代数的データ型とは、要素の個数の足し算と掛け算のアナロジーで語ることができる型のことを指すというふわっとしたコンセンサスがありますが、 厳密に「これが代数的データ型である」という定義はおそらくありません[1]。 また、代数的データ型はいわゆる関数型言語で実装されることが多い言語機能であり、 代数的データ型を重用するプログラミングスタイルは関数型の一派としてみなされる傾向がある[2]と思っています。 本記事では数学的な説明やアナロジーは用いず、なるべく具体的なコードを提示します。 そして、代数的データ型という言葉を「かつ」と「または」を表すことができる型として使います。 更に、「または」の型はコンパイラによって漏れなく徹底的にチェックされる必要があります。 詳細は後ほど説明します。 本記事の構成 まず、本記事における「代数的データ型」とはなにかを説明し、それをコード
こんにちは。サイボウズ・ラボの内田( @uchan_nos )です。 SSD の自作という活動について、キオクシア株式会社の社員(元キオクシアを含む)にお話を伺う機会がありましたので、ご紹介します。 インタビューの様子は、電子の森ラジオ(電子工作とプログラミング系ポッドキャスト)にて配信しています。 エピソード 019 自作SSD 打ち合わせの様子 普段の収録と異なり、今回は企業からオフィシャルな立場で収録に来てくださるということで、事前に打ち合わせを行いました。 収録に向けた打ち合わせの様子 弊社の東京オフィスにある会議室での打ち合わせの様子です。 写真の左から順に、内田(サイボウズ・ラボ)、日下様(キオクシア)、米澤様(キオクシア)です。 事前の打ち合わせでは、主にどのような話をするかと、出してはいけない話題について確認しました。 企業の看板を背負って出演することの責任をひしひしと感じ
みなさまに、RBSに関する重要なニュースを発表できることを嬉しく思います。 私の目標の一つにはRBSを当たり前の世界にするというものがあります。 この目標に対して大きなインパクトを残せたことに大変興奮しています。*1 aws-sdk-ruby配下すべてのgemにRBSが含まれた状態でリリースされました こちらは公式blogからのアナウンスです。 aws.amazon.com aws-sdk-rubyはrubygemsでの累計ダウンロードランキング2位に乗るほどの人気gemです。(aws-sdk-core) aws-sdk-rubyは現状370以上のgemのあつまりです。 このすべてのgemにRBSが含まれた状態でリリースされました。 そうです。すべてです。 rbs v3.4.0以上でご利用いただけます。 steep + vscodeの例。etagがStringであることがわかる え、なにが
Goの歴史 本連載では、筆者(tenntenn)と周囲のGoエンジニアで、Goに関わる今アツい話を取り上げていきます。最新のGoの機能やこれからリリースされるGoの機能はもちろん、実際の開発現場で用いられているノウハウや自作ライブラリやツールについてご紹介します。第1回目はtenntennがこれまでとこれからのGoについて取り上げます。 Goは2009年にGoogleによって公開されたプログラミング言語です。2012年にGo1として正式公開されました。2022年現在では、GoogleやNetflixをはじめとする海外企業だけはなく、筆者の所属するメルカリなど国内の企業でも多く用いられるようになってきました。海外のGoの導入事例は公式サイトのケーススタディで確認できます。国内企業の導入事例はGoの公式Wikiに掲載があります。これらを見るとスタートアップからメガベンチャー、大企業までさまざま
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く