並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 556件

新着順 人気順

scalaの検索結果1 - 40 件 / 556件

  • 良いソフトウェアとコードレビュー / Good software and code review

    Scala + Caliban で作るGraphQL バックエンド / Making GraphQL Backend with Scala + Caliban

      良いソフトウェアとコードレビュー / Good software and code review
    • 2023 年に読んでよかった本

      2023 年に読んでよかった本 2023.12.30 年末なので 2023 年のまとめっぽい記事を書きたくなりました。今年は 1 年間でおおよそ 300 冊の本をよんだようです(そのうち 3 割ほどはラノベなのですが...)。その中でも特に印象に残った本を紹介します。 年末なので 2023 年のまとめっぽい記事を書きたくなりました。 今年は 1 年間でおおよそ 300 冊の本をよんだようです(そのうち 3 割ほどはラノベなのですが...)。その中でも特に印象に残った本を紹介します。 忘れる読書 この本では「本は忘れるために読んでいます」と語られています。というわけでこの本の内容もあまり覚えておりません(?)。 本を読むときには一字一句正確に覚えるような読み方をしていると、「覚えなきゃ」という気持ちが芽生えてしまい、本を読むことが苦痛になってしまうことがあります。そうではなくて、パラパラとペ

        2023 年に読んでよかった本
      • Scalaはもうだめなのか?…というかJVM言語がもうだめじゃん?|sugitani

        AndroidのためのJava/Kotlinはスコープ外とします まず断っておくと、俺はScalaが好きだ。 自分が作ったScalaプロダクトは二個現存している。うち一つはまだまだ自分が開発している。というか今は会社を作って1人でプロダクトを作っている身なのだが、それもScala3+ZIO2でゴリゴリ書いている。 でも残念、もうScalaというかJVM言語がオススメできません。TypeScriptかGoかRustをオススメします。 どういうこと?まずこの記事を見ていただくのが一番分かりやすい。 https://aws.amazon.com/jp/builders-flash/202310/java-serverless-saas-backend/?awsf.filter-name=*all 素晴らしいエントリーだ。読みに行かないせっかちな方のために概要を紹介する JavaプロダクトをAWS

          Scalaはもうだめなのか?…というかJVM言語がもうだめじゃん?|sugitani
        • 人類がインターネット以前に戻った感じがする - 井戸端

          (井戸端が250+ブクマ記録 2024/09/19)井戸端が250+ブクマ記録 2024/09/19.icon from 2024/06/10 mtane0412.icon 細かい仕様とかのドキュメントがなく検索してもなかなか出てこない Discordが活発らしく、とにかくDiscordで聞いてくれという感じっぽい 最近このパターンが多くて人類がインターネット以前に戻った感じがする wakaru.iconbsahd.icon インターネットが人生に現れたときに検索してセルフ解決することが多くて感動した 今は人に聞かないとわからないほうが好まれている Discordにも検索機能はあるがワードの単純なマッチっぽいのでめちゃくちゃ弱い Discordを全部読んでて質問に即座に答えてくれるChatGPT拡張マダ〜〜〜???nishio.icon チャンネルやスレッドが数クリックで要約されるべきだと

            人類がインターネット以前に戻った感じがする - 井戸端
          • じゃあ何すか、COBOL以外では4.8 - 4.7 - 0.1できないってことっすか / ScalaとSpireで安心安全な計算ライフを実現しよう - Lambdaカクテル

            先日こういうツイートが流れてきた。 Q:なぜ金融系では未だにCOBOLが使われるんですか? A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。— 遊撃部長F/S&RWAs (@fstora) 2024年6月6日 Q:なぜ金融系では未だにCOBOLが使われるんですか? A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。 普段我々がゴリゴリ馬車馬のように使っているソフトウェアでよく利用されている浮動小数点型、すなわちfloatやdoubleなどは特定の算術に弱いことが知られている。というかもうこの手の話題はあまりに拡散されてしまったので、なぜかネット民はみんな知っている基礎教養、三毛別羆事件とかデーモンコアみたいな感じになっている。 ちなみにこれはCOBOLかそうではないか、という軸が問題になっ

              じゃあ何すか、COBOL以外では4.8 - 4.7 - 0.1できないってことっすか / ScalaとSpireで安心安全な計算ライフを実現しよう - Lambdaカクテル
            • 読まないと後悔する技術書30選 - Qiita

              はじめに 現代の人に名著以外の本を読むような時間はない こんにちは、Watanabe Jin (@Sicut_study)です みなさんは何か新しい技術を学ぶときにどんなコンテンツを利用するでしょうか? 最近ではUdemyなどの動画講座を利用する人が多いと思いますが、本を読んで学ぶという人もまだまだ多いのではないかと思います 今回は私がこれまで5年間読んできた150冊以上の中から厳選した30冊の本を紹介します。広く多くの人に役立つものから、特定の技術の書籍までどれを読んでもあなたの大切な一冊になるのでぜひ読んでみてください 現代人には時間がない なぜ働いていると本が読めなくなるのかという本が話題になりました 現代人は本を読む時間がなくなっています。 仕事に追われてしまい、プライベートで本を読む暇などなくなっているのです。 しかし、エンジニアは「技術職」なのでプライベートの時間でも学習をして

                読まないと後悔する技術書30選 - Qiita
              • 株式会社一休に入社しました - 貳佰伍拾陸夜日記

                転職のお知らせ、あるいは個人の日記です。 6月から以下のように所属変更となっています。 From 株式会社はてな To 株式会社一休 マネージャではなく、とくに役職のないソフトウェアエンジニアとして働きます。いわゆるIC (individual contributor)というやつです。 きっかけ はてなには新卒として入社して以来11年も勤めて、インターンやアルバイトとして関わった時期から数えると16年になります。出入りの激しいこの業界でずっと1社しか知らずに過ごすのは負い目に感じていました。また、年齢的にも今年で40歳になることもあって、そろそろ転職を経験しておかないとまずいという焦りもありました。 そんなときに、大学の同期でプライベートでも仲良くさせてもらっているid:suzakから声をかけてもらい、ちょっと真剣に転職を考えたのがきっかけでした。 できることではなくやりたいこと はてなで

                  株式会社一休に入社しました - 貳佰伍拾陸夜日記
                • 新しいチームでTypeScriptに素早くキャッチアップするためにやったこと - KAKEHASHI Tech Blog

                  カケハシのプラットフォームチームでソフトウェアエンジニアをしているすてにゃん (id:stefafafan) です。今回は、私が TypeScript をメイン言語として採用しているチームに参加した際、言語や周辺技術のキャッチアップを行った方法について紹介します。 この記事は秋の技術特集 2024の 3 記事目です。 この記事の想定読者 私が元々持っていたスキルセット 認知負荷の増加 TypeScript 学習のためにやったこと 学習の進め方 テックリードとの 1on1 の中で壁打ちや相談 ペアプログラミング 輪読会 もくもく会 学習コンテンツ O'Reilly Online Learning を使った学習 TypeScript Deep Dive プロを目指す人のための TypeScript 入門 安全なコードの書き方から高度な型の使い方まで type-challenges 公式ドキュメ

                    新しいチームでTypeScriptに素早くキャッチアップするためにやったこと - KAKEHASHI Tech Blog
                  • 日本経済新聞社を退職しました

                    業務委託期間を含めて4年在籍した日本経済新聞社を退職しました。 日経に入るまで 自分が日経に入った理由は3つあり、 そろそろ健康保険が切れそうだったから Web標準への理解が求められる仕事をしたかったから 情報を編纂すること、発信すること自体に興味があり、興味と事業ドメインがマッチするから です。なんと自己中な・・・ 前の会社を辞めてフリーランス(と名乗ってはいたがどちらかというと無職の方が実態には近かった)になったときの話も書いておくと、元々は営業から入社した職場で活躍できず逃げるようにエンジニアになったものの、その道で進んでいこうにも未経験で基礎的な能力が無かったので勉強期間を作りたくなって辞めました。当時社会人を経験して思ったのは、社会では期待される人に成長できる仕事が任されていくので、ブートストラップに失敗した自分はこれから常に不利な戦いを強いられ続けそうだということです。なので勉

                      日本経済新聞社を退職しました
                    • TypeScriptの型と値とバリデーション

                      TypeScript は本質的に自分に型が付与されていると思っているだけの JavaScript です。 いくら型を付与しようが、それが実行時に影響を与えることはありません。 コードレビューをしているとここを誤解している人が本当に多いです。何度も解説しているのですが、なかなか浸透しないので、TypeScript におけるバリデーションという視点で記事を書くことにしました。 あと TS でバリデータ使って色々作ろうとしている友人と、プログラミング始めたてで zod と openapi を使っいる友人がいたので、彼らが想定読者です。 型と値の名前空間 TypeScript 上での名前空間(スコープ)は2つに分類できます。 値: 実行時にランタイム上のメモリに存在するもの 型: 静的解析時にのみ参照可能なもの。コンパイル時に完全に消滅する。 TypeScript は基本的に JavaScript

                        TypeScriptの型と値とバリデーション
                      • プログラマーにとって必須の 15 個のソフトウェアをすべて所有していますか? - Qiita

                        Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? デジタル時代において、プログラマーの役割はますます重要になっています。彼らの使命は、単にコードを書くことだけでなく、無限の可能性に満ちた新しい世界を構築することです。効率性と創造的プロセスの楽しさを高めるためには、適切な開発ツールを選択することが重要です。 ここでは、開発効率を大幅に向上させ、全体のワークフローをスムーズにするための高く評価されているソフトウェアツールをいくつか紹介します。初心者から経験豊富なプロフェッショナルまで、これらのツールは、コードの整理、プログラムのデバッグ、プロジェクト管理、効果的なコラボレーションをサポート

                          プログラマーにとって必須の 15 個のソフトウェアをすべて所有していますか? - Qiita
                        • 2023年買ったもの(技術書とか) - Magnolia Tech

                          2023年のお買い物、技術書編です。 技術書以外はこちら blog.magnolia.tech とりあえずノータイムで買っちゃえ!損は無いよ!という3冊 他に、類似の本がないか、有ってもこっち買っておけばよくね?という3冊 なっとく!関数型プログラミング なっとく!関数型プログラミング 作者:Michał Płachta翔泳社Amazon Scalaをベースとした関数型プログラミングの学習本。オブジェクト指向言語であり、関数型プログラミング言語であるScalaの特性を生かして、命令型から宣言型のコードの書き方への変え方を学んでいくスタイル。 前半の凄まじい丁寧な学習のステップと、後半の「ここまで一気にやらなくても良くない?」の落差もすごいけど、ページ数の厚さに躊躇せず、前半1/3くらいを時間をかけて丁寧に学習するくらいが良いと思います。 周りに良い先生が居れば別ですが、そうでなければこの本

                            2023年買ったもの(技術書とか) - Magnolia Tech
                          • 署名とゼロ知識証明の初歩

                            Kernel/VM探検隊@東京 No17 https://kernelvm.connpass.com/event/321962/

                              署名とゼロ知識証明の初歩
                            • Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena

                              オブジェクト指向言語の話をするときに便利なように、Javaを中心にプログラミング言語をまとめてみました。 Javaに影響与えるか、Javaから影響を受けるか、という感じですね。 Simula オブジェクト指向はここから始まったと言われています。 クラス、オブジェクト、継承、仮想関数(多態)といった、オブジェクト指向の基本要素が備わっていました。 ただし、「オブジェクト指向」という言葉は生まれていません。 Smalltalk Simulaから発想を得て「オブジェクト指向」という言葉を生んだのはアラン・ケイでした。 しかし、モデルとしてはSimulaとは異なりメッセージングを主体としたものでした。また、アラン・ケイの「オブジェクト指向」はプログラミングのパラダイムだけではなく、人がコンピュータをどのように扱うかというメタファであり、ダイナブックというハードウェアやそのユーザーインタフェースを含

                                Javaを中心に偏見ベースでプログラミング言語の関係をまとめた - きしだのHatena
                              • RustでWeb開発コソコソ噂話

                                下記に登壇した際の資料です。 https://findy.connpass.com/event/331621/ スライドはメモ書き程度のものとなっており、実際には講演の中で口頭で数多くの補足が入っています。講演の内容をまとめた記事も近日公開される予定なので、あわせてご覧ください。

                                  RustでWeb開発コソコソ噂話
                                • JSONの差分を取ってJSON Patchを得るにはdiffsonがおすすめ - Lambdaカクテル

                                  こういうツイートを見た。 Scala (or Java) で、jsonのdiffをpatchファイルみたいな感じでわかりやすいテキストで出力してくれるライブラリないかなあ。そしてjacksonに依存してないといいな— Arthur (@Arthur1__) 2024年1月13日 現代のプログラミングではJSONの差分を取ったり、逆にパッチを当てるということがよくある。可能ならそれがPretty Printできると良い。 JSONの差分をScalaで取る方法についていくつか調べてみたのでメモ。 JSONの差分をどう表現する? JSON Patch diffson diffsonでJSON Patchを生成する diffsonでJSON Patchを適用する diffsonでJSON Merge Patchを生成する diffsonでJSON Merge Patchを適用する JSON Pat

                                    JSONの差分を取ってJSON Patchを得るにはdiffsonがおすすめ - Lambdaカクテル
                                  • フロントエンドの移り変わりは早すぎるのか

                                    インターネットでは毎日のように言われることですが、私はそこまでではないと考えています。 ネットでよくそう言われる理由として考えられるものと、それを踏まえてどう向き合っていくとよさそうか、個人的な考えをまとめてみます。 なぜ言われるのか 言語が実質的にJavaScript一択 バックエンド、というかサーバサイドでは技術選定に「言語の選択」が入りますが、フロントエンドでは実質的にはJavaScriptにほぼ固定されます(TypeScriptも別言語ではないので、ここではJavaScriptに含めます) サーバサイドと比較して「技術の移り変わりが早すぎる」と評される場合、多くはその人の使用しているとある言語と比較されているように思われます。 実質的に言語が固定なので、比較するならすべてのサーバサイドの変化の総量と比較するのが妥当でしょう。 PHP + Python + Ruby + go + J

                                      フロントエンドの移り変わりは早すぎるのか
                                    • 「GitHub Copilotのおかげで“とりあえず書き切る”ができるようになった」 開発プロジェクトへの活用で感じたメリット

                                      登壇者の自己紹介 服部佑樹氏(以下、服部):準備ができたようなので、続いてパネルディスカッションを進めていきたいと思います。 ファシリテーターを務めるのは、GitHubの服部です。よろしくお願いします。では、左から自己紹介をしていただいてよいでしょうか? 黒瀧悠太氏(以下、黒瀧):よろしくお願いします。GMOペパボ株式会社の黒瀧と言います。GMOペパボでちょうど10年ぐらい働いて、今は11年目になります。2012年に入社していろいろなWebサービスを開発したあとに、「SUZURI」というオリジナルグッズを作成するサービスの技術の責任者をしています。 最近、GMOインターネットグループの中で技術的な新しい取り組みや、先進的な活動をしていることを認められて、今はデベロッパーエキスパートもやっています。 業務はWebシステムがメインですが、趣味ではIoTデバイスやハードウェアを作ったり、いろいろ

                                        「GitHub Copilotのおかげで“とりあえず書き切る”ができるようになった」 開発プロジェクトへの活用で感じたメリット
                                      • F# 8 のリリースで F# が最強の言語になってしまった件 - Qiita

                                        おはようございます. 遅ればせながら,11/14/2023 の .NET 8 のリリースの内容を確認し,コードジェネレータの新しい最適化機構(PGO)のデフォルト有効化や AI/LLM のアプリケーションへの統合,各フレームワークのアップデートや,C# の方ではコレクション記法の統合など様々なトピックがある中で,付随してリリースされた F# 8 についても新機能をチェックしてみました. ヤバすぎました. 私は涙しました.これまであらゆる F#er が望んでも得られなかったものがそこにはありました.F# という言語がこれまでの不満点を一気に払拭し,至高の領域に到達しようというヤバみを感じるリリースだったので,今回は以下のブログポストに記載されている新機能から個人的に凄いと思ったものを抜粋して解説します. 11/24/2023 一部サンプルコードのミスを修正しました. F# および F# 8

                                          F# 8 のリリースで F# が最強の言語になってしまった件 - Qiita
                                        • モダンな開発環境のBtoB SaaSアーキテクチャ特集 技術選定のポイントと今後の展望 - Findy Tools

                                          公開日 2024/06/26更新日 2024/07/25モダンな開発環境のBtoB SaaSアーキテクチャ特集 技術選定のポイントと今後の展望 ご好評頂いているアーキテクチャ特集の第三弾となる今回は、BtoB SaaSを提供する企業10社にご協力頂き、技術選定のこだわりや今後の展望をご寄稿いただきました。アーキテクチャを通して、各社の事業特性や設計思想にも触れられる内容となっております。※ご紹介は企業名のアルファベット順となっております 株式会社あしたのチーム あしたのチームは「誰もが "ワクワク" 働ける世界を創る」をビジョンに掲げ、人事評価制度の構築・運用・クラウド化で "人と組織の成長" を支援しています。今回は、2024年4月にリリースされた同社の新サービス:パフォーマンスマネジメントプラットフォーム『Cateras™』のアーキテクチャについてご説明します。 アーキテクチャ選択の背

                                            モダンな開発環境のBtoB SaaSアーキテクチャ特集 技術選定のポイントと今後の展望 - Findy Tools
                                          • ちっちゃなScalaコンテナを作つコツ(6 MiBだぞ) - Lambdaカクテル

                                            おなじみの画像 JavaやScalaといったJVM言語のDockerイメージは、JVMを同梱しなければならない都合で肥大化しがちである。特に何もしなくても、例えば一般的なamazoncorretto:21のイメージサイズは217.7 MBもある。 hub.docker.com これにさらにビルド済みのJARファイルが載ってくるので、結構大きくなってしまうのだ。 そこで、Scalaのコンテナイメージのサイズをなんとか小さくできないかと、考えた。すると、JVMを使ったまま70 MiBくらいに縮めることができた。 github.com コンテナイメージのサイズを小さくするために、何をしたかを書いていく。ちなみに題材としたアプリケーションはちょっとしたHello, Worldをするだけのもので、ライブラリはCatsに依存させた。 JVM使う編 マルチステージビルドを行う Alpineなどの軽量ラン

                                              ちっちゃなScalaコンテナを作つコツ(6 MiBだぞ) - Lambdaカクテル
                                            • あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記

                                              この記事はScala Advent Calendar 2023の11日目です. 最近, 趣味でScala 3のコードをだいぶ書いていて, マクロの使い心地のよさに感心しました. 理論的な背景も含めて, 産業界で多く使われているプログラミング言語の中では筆者の知る限りぶっちぎりに優れたマクロを備えています. 他の言語にも見習ってほしいですね. たぶん見習おうとすると処理系を作り直す羽目になりますが. この記事ではScala 3のマクロのすごいところを例を使って紹介します. マクロの実践的な例 準備 実践的な例: NamedArray – 名前でアクセスできる配列 NamedArrayのマクロ実装 記述が明瞭 メタレベルのプログラムの扱い クォートとスプライスがある パターンマッチもある 生成コードに型がつく 多段階計算に基づいている クォートとスプライスの本当の意味 ネストしたスプライス ネ

                                                あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記
                                              • DSL作りたいんだけど何もわからないので識者に教えてもらいたい - Lambdaカクテル

                                                トランスパイルするDSLを作りたいが何を読んだらいいのかまだよくわかっていないので、誰か教えてほしい、という記事です。 あらすじ DSL作りたい あらすじ 最近色々な技術を勉強している。具体的にはロガーの実装を読んだりRefinement Typesの勉強をしたりしている。仕事で必要というのが半分、興味半分といった具合で、素振りも兼ねてやっているので結果的に仕事で役立ったりしている。 個人的には、こういう暮らしの勉強みたいなところだと、本業で勉強しなければならないものに加えて、シナジーが生じるような勉強をしたり購買をすると良いのだろうなと思っている。 たとえばラズパイとかN100のマシンを買ってちょっとしたk3sクラスタを作ってみたりするとクラスタ技術の良い勉強になる。さらに電子工作の勉強をしておくとラズパイと組み合わせてIoT的なこともできるようになる。 そんな中、ずっと自分が勉強したい

                                                  DSL作りたいんだけど何もわからないので識者に教えてもらいたい - Lambdaカクテル
                                                • キャリアと給料 - たにしきんぐダム

                                                  (自分の気持ちを整理するために考えをダンプしただけの雑文です) 日本のエンジニア達は海外に出なければいけない|Kei というブログを見た。日本より海外の方がソフトウェアエンジニアの給料が一般に高いので海外に行こうという話 僕は今ポーランドの会社にコンパイラエンジニアとして(日本からリモートで)働いていて、コンパイラバックエンドやIDEなどの開発をフルタイムでしている。"海外" に関する話だけど上記ブログに載せられているスクショにはポーランドが見当たらないですね。 上記のブログのソースとなった Average Software Engineering Salaries by Country [2022] を見てみると、 Japan $36,024 に対して Poland $22,740 で日本のほうが200万円くらい平均が高い。実際、日本でフリーランスとしてWebアプリケーションとか書いてた

                                                    キャリアと給料 - たにしきんぐダム
                                                  • 『関数型ドメインモデリング』はF#の本なのか? - 詩と創作・思索のひろば

                                                    関数型ドメインモデリング ドメイン駆動設計とF#でソフトウェアの複雑さに立ち向かおう 日本語版出版に際し、訳者の猪股さんにご恵贈いただきました。ありがとうございます! すでに原著の『Domain Modeling Made Functional』を読んでいて、そのときの感想は以前に書いたとおり。そこからの差分としては、はてな社内でこの本の輪読をはじめたこと。輪読がはじまったその週に日本語版の出版が告知され嘆息する一同でしたが、日本最速で輪読を開始できたのは間違いないと思う。 この本の特徴をひとつ挙げろと言われれば、実装に使われている言語がF#であること、というのが大方の回答になるとおもうが、一方でこの本をやるのにF#を実践する必要はない、と考えている。そういうわけで今回輪読における実装言語にはGoとTypeScriptを指名しており、その後Scala勢力も増えたのだけど、進度的には実際にコ

                                                      『関数型ドメインモデリング』はF#の本なのか? - 詩と創作・思索のひろば
                                                    • Lensを始めとするOpticsがプログラミングをどう変えるか / 複雑なデータのモデリングをサボるには - Lambdaカクテル

                                                      仕事でLensを使う機会があった。Lensは複雑で入り組んだデータ構造の読み書きに非常に効果的な手法であるにもかかわらず、関数型プログラマ以外にはあまり知られていないように思える。 そこでこの記事では、Lensとは何なのか、なにが良いのか、具体的にどのようなケースでLensが役立ったか、そしてLensの亜種について紹介する。業務でも使ってます! AIくんが考えるLens 前提条件 Lensとは Lensの使いどころ データをモデリングする場合 (とても つらい) Lensを使う場合: Lensはアクセスパスである Lensと愉快な仲間たち Lensの合成 -- andThenでひっつけよう Lens Law Monocleの便利機能 Lensの自動生成でサボる Focusでもっとサボる Lensがもたらしたもの まとめ あわせて読みたい 前提条件 この記事ではLensを紹介する言語としてS

                                                        Lensを始めとするOpticsがプログラミングをどう変えるか / 複雑なデータのモデリングをサボるには - Lambdaカクテル
                                                      • オブジェクト指向プログラミングと関数型プログラミングの違い

                                                        オブジェクト指向プログラミングと関数型プログラミングの違い:手法、コード例、ユースケースごとに解説 関数型プログラミングモデルの採用を考える開発者は多い。だが、採用するなら、関数型プログラミングモデルとオブジェクト指向のアプローチがどのように異なるかを正確に理解することが重要だ。 プログラミングのパラダイムを決めることは、どのようなアプリケーション開発作業にとっても重要なステップの1つだ。関数型プログラミングとオブジェクト指向プログラミングのどちらを選ぶかは、この2つしか選択肢がないわけではないとしても、今日の多くの開発者が直面する課題の1つになっている。 本稿では、関数型プログラミングとオブジェクト指向プログラミングの主な違いを復習し、両コーディングパラダイムが機能する仕組みを幾つか示し、いずれかを選択する際に最も重要な考慮点を確認する。 オブジェクト指向プログラミングと関数型プログラミ

                                                          オブジェクト指向プログラミングと関数型プログラミングの違い
                                                        • 仕様の複雑化、過渡期特有の難解なコード、技術スタックの老朽化… システムの健全な成長を妨げる要因に対する基本戦略

                                                          仕様の複雑化、過渡期特有の難解なコード、技術スタックの老朽化… システムの健全な成長を妨げる要因に対する基本戦略 アーキテクチャ刷新の現場:未知の技術を採用するために #1/2 アーキテクチャ刷新の現場における取り組みと成果を発表 成瀬允宣氏:みなさん、こんにちは。GMOインターネットグループでデベロッパーエキスパートとして活動しています、成瀬允宣と申します。本日はよろしくお願いします。 私、所属はGMOインターネットグループ株式会社で、システム統括本部に所属している一般のプログラマーではありますが、私からお送りするお話は、「アーキテクチャ刷新の現場」で、ここ数年……2年ほどですかね、アーキテクチャを刷新する現場で一番前を走っていたので、その現場のお話をしようかなと思っています。 非常に苦労して、やっと花開いてきたところなので、今日は、何を予測して、何を準備して、そして何を失敗したのか。そ

                                                            仕様の複雑化、過渡期特有の難解なコード、技術スタックの老朽化… システムの健全な成長を妨げる要因に対する基本戦略
                                                          • 筒で理解する反変・共変

                                                            この記事では、Java、Scala、TypeScriptなど、サブタイピング(subtyping)をサポートする言語であれば間違いなくサポートしているであろう「反変(contravariant)」・「共変(covariant)」について、視覚的なアナロジーを用いつつ解説したいと思います。コード例を含め全てTypeScriptを前提とした説明ですが、同様の機能を持った言語であれば概ね同じことが言えるはずです。 そもそもサブタイピングとは サブタイピングとは、型と型との間にサブタイプ(subtype)・スーパータイプ(supertype)という関係を定めて、スーパータイプである型の代わりとして、サブタイプである型を利用できるようにする仕組みです。 例えば、TypeScriptではstring型はObject型のサブタイプであるので、次のようにObject型の変数にstring型の値を代入するこ

                                                              筒で理解する反変・共変
                                                            • 型のメンタルモデル | TypeScript入門『サバイバルTypeScript』

                                                              型システムの背景理論​プログラミング言語の型システムにはそれぞれ固有の世界観があり、言語ごとに型の機能が異なります。 その一方で複数の言語で共通している機能もあり、それらのさまざまな型の機能は唐突にどこからともなく出現してきたわけではありません。背景として大きくは型理論(type theory)と呼ばれる数学的な研究分野があり、各言語の型システムは型理論に基づいて実装されています。 たとえば、TypeScriptのunknown型やnever型のような一見何のためにあるか分からないような型であっても、型理論においてはその役割や機能を一般的に説明することができます。これらの型はトップ型やボトム型と呼ばれる型の種類に分類され、部分型関係が作る階層構造の両端点に位置する型として振る舞います。 部分型階層の両端点に位置する型型理論的な観点からの知識を持つことで似たような型システムを持つ他の言語にお

                                                                型のメンタルモデル | TypeScript入門『サバイバルTypeScript』
                                                              • なっとく!関数型プログラミング を読んで関数型プログラミングを学んだ - Qiita

                                                                EDOCODEでエンジニアをしているYutakaです。 こちらは社内勉強会で発表した資料を元にしています。 関数型言語の知識がほとんどないエンジニアがなっとく!関数型プログラミングで学んだ用語を一部まとめました。原著はGrokking Functional Programmingです。本書はScalaとJavaで説明がされていますが、できる限り社内で使われている言語(Go, JavaScript, TypeScript)でサンプルコードを記載しました。 書籍のソースコードはこちらに全て公開されています。 そもそも関数型プログラミングとは? プログラミングのパラダイムには大きく①命令型プログラミング②宣言型プログラミングがあります。 ①命令型プログラミングとは どのよう(HOW)に計算するかに焦点を合わせ、段階的なアルゴリズムを詳細に定義します。これは実際のハードウェアの計算処理の流れに沿っ

                                                                  なっとく!関数型プログラミング を読んで関数型プログラミングを学んだ - Qiita
                                                                • 計測システムにおける計測データの管理方法の進化 - ZOZO TECH BLOG

                                                                  はじめに こんにちは。計測プラットフォーム開発本部バックエンドチームの佐次田です。普段はZOZOMATやZOZOMETRYなどの計測技術に関わるシステムの開発、運用に携わっています。 本記事では計測システムにおける計測データの管理方法を進化させた点についてご紹介します。 目次 はじめに 目次 計測プラットフォーム開発本部 バックエンドチームとは ユビキタス言語 3Dデータ 計測箇所 計測値 ZOZOMETRYとは ZOZOMETRYのコア機能 計測箇所のカスタマイズに関する課題 計測処理をサーバーが担当する解決アプローチ システム構成図 既存プロダクトのシステム構成 ZOZOMETRYにおけるシステム構成 システム構成の変更点 計測セットを元に計測箇所をカスタマイズする 計測セットのドメインモデル 計測シーケンスの概要 3Dデータと計測値の保存先を分離する 3DデータをAPIサーバーで管理

                                                                    計測システムにおける計測データの管理方法の進化 - ZOZO TECH BLOG
                                                                  • ZOZOMETRYでのマルチテナントシステム設計のアプローチ 〜テナント間分離の変遷〜 - ZOZO TECH BLOG

                                                                    目次 目次 はじめに 我々のチームについて ZOZOMETRYについて ZOZOMETRYでのBtoB開発で取り入れたこと プールモデルによるマルチテナント管理 Cognito+DBによるユーザー情報の管理 RLSによる行単位でのデータアクセス制御 RLSの利用を見送った理由 理由1 : コネクションプールの管理 理由2 : O/RマッパーでのRLSの利用 DDDにおけるテナントのアクセス制御 MySQLを採用した理由 AWS Auroraとの互換性 PostgreSQL独自の機能の不使用 チームの経験と学習コスト 計測プロダクトとの整合性 PostgreSQLを採用したいケース Gitの運用フロー まとめ 最後に はじめに こんにちは。計測プラットフォーム開発本部バックエンドブロックの髙橋です。 先日、ZOZOMETRYという新規サービスをローンチしました。 corp.zozo.com

                                                                      ZOZOMETRYでのマルチテナントシステム設計のアプローチ 〜テナント間分離の変遷〜 - ZOZO TECH BLOG
                                                                    • 更新可能なデータレイクを構築するテーブルフォーマットApache Hudiについて - Repro Tech Blog

                                                                      Reproでチーフアーキテクトを担当しているjoker1007です。 今回、社内のデータストレージの将来的な選択肢の一つとしてApache Hudiというテーブルデータフォーマットについて調査と実データでの検証を実施しました。 この記事では2回に分けて、そもそもhudiってどんなフォーマットなのか、どういうデータで検証してどんな結果が得られたのかについて紹介します。 ということで第1回は、hudiそのものについての紹介をしていきます。 この記事はhudi-0.14.1を利用して検証した時のものです。また社内向けに書いた資料の手直しであるため丁寧語でないことに御留意ください。 Hudiとは何か、その目的 hudiは更新可能なデータレイクを構築するためのテーブルフォーマットである。 ストリーミングによるデータインサートや、upsert, deleteをサポートする。 通常、データ分析に向いたデ

                                                                        更新可能なデータレイクを構築するテーブルフォーマットApache Hudiについて - Repro Tech Blog
                                                                      • Java/Scalaの最新版Webアプリケーションフレームワーク「Play Framework 3.0」正式リリース。Akkaに代わりApache Pekkoを採用

                                                                        Java/Scalaの最新版Webアプリケーションフレームワーク「Play Framework 3.0」正式リリース。Akkaに代わりApache Pekkoを採用 Play Framework開発チームは、JavaとScalaに対応したWebアプリケーションフレームワークの最新版となる「Play Framework 3.0」の正式リリースを発表しました。 Houston, Play developers here. The eagle has landed! Play 2.9 (https://t.co/ars6Le2VUw) and 3.0 (https://t.co/Eus82EOS9c) are available now! To everyone out there helping and sponsoring: You are the best! THANK YOU SO MU

                                                                          Java/Scalaの最新版Webアプリケーションフレームワーク「Play Framework 3.0」正式リリース。Akkaに代わりApache Pekkoを採用
                                                                        • ZodでAlways-Valid Domain Modelを実現する

                                                                          課題意識 特定の商品を数量を指定して購入できるECサービスのドメインモデルを表現とします。TypeScriptで構築する際に、「数量」を単にnumber型で扱うことは可能ですが、よりロバストな設計を目指す上で以下の2つの方法論があります。 Refinements(値の制約を表す): 「数量」は一般的に自然数です。1度の注文で指定できる上限を設けるビジネスルールがあると仮定します。この場合、number型に「自然数」「上限付き」の制約を加えた値として表現します。 Branded Types: (同じ構造の型を区別する): 「価格」などの他のnumber型と混同されないように、これらの数値を型レベルで区別したいです。JavaやC#に見られる公称型の概念をTypeScriptで模倣するBranded Typesのテクニックを用いることで、これらの誤った利用を型システムで防ぐことができます。 Br

                                                                            ZodでAlways-Valid Domain Modelを実現する
                                                                          • Kotlinエバンジェリスト・長澤太郎氏が薦める、Kotlinへの理解を深める3冊

                                                                            Kotlinエバンジェリスト・長澤太郎氏が薦める、Kotlinへの理解を深める3冊 2024年9月5日 Kotlinエバンジェリスト 長澤 太郎 Ubie株式会社のソフトウェアエンジニア。「テクノロジーで人々を適切な医療に案内する」をミッションに、日々開発に勤しむ。 本業のかたわら、自称Kotlinエバンジェリストとして、講演や執筆などを通じて啓蒙活動に尽力。国内最大のKotlin技術カンファレンス「Kotlin Fest」の代表を務める。 X: @ngsw_taro 1. 『Kotlinイン・アクション』Dmitry Jemerov 著、Svetlana Isakova 著、長澤 太郎 監修・翻訳、 藤原 聖 監修・翻訳、山本 純平 監修・翻訳、 yy_yank 監修・翻訳 2. 『Kotlinスタートブック』長澤 太郎 著 3. 『Kotlin サーバーサイドプログラミング実践開発』竹

                                                                              Kotlinエバンジェリスト・長澤太郎氏が薦める、Kotlinへの理解を深める3冊
                                                                            • 2023年のはてなスタッフのアウトプットまとめ - Hatena Developer Blog

                                                                              こんにちは、id:onk です。 2023年は、インパーソンの技術カンファレンスが戻ってきた 1 年だったなぁと思います。私が参加した 100 名程度以上の規模のものだけでも、以下のように参加していました。 2023/02/18 福岡Rubyist会議03 2023/03/04 鹿児島Ruby会議02 2023/03/19 YAPC::Kyoto 2023 2023/05/11-13 RubyKaigi 2023 2023/07/13 開発生産性Conference 2023/08/03 CloudNative Days Fukuoka 2023 (病欠) 2023/09/09 Osaka RubyKaigi 03 2023/09/29 PIXIV MEETUP 2023 2023/10/15 大江戸Ruby会議 10 2023/10/27-28 Kaigi on Rails 2023 2

                                                                                2023年のはてなスタッフのアウトプットまとめ - Hatena Developer Blog
                                                                              • Scala 3のマクロTips 100連発 - 貳佰伍拾陸夜日記

                                                                                この記事はScala Advent Calendar 2023の12日目だ! Scala 3のマクロを書く上で役に立つ, メタれたTipsたちを紹介するぜ! 勢いに任せて書いていくからサンプルコードがちゃんと動かなかったらごめんな. 一応, Scala 3.3.1を想定しているぞ. マクロ 1. メソッドをマクロとして定義する 2. マクロの本体を実装する 3. マクロ実装の記法の意味を知る 4. マクロで生成されるコードの内容を確認する 5. 引数の式を評価せずに使う 6. 返り値の型をマクロの実行結果によって決める 7. マクロの返り値の型を制限する 8. マクロの返り値の型を書かない 9. マクロで計算された型をテストする 10. マクロで計算された型をScalaTestでテストする 式 11. 定数式の値を得る 12. 定数式でなければコンパイルエラーにする 13. 定数値の式を作

                                                                                  Scala 3のマクロTips 100連発 - 貳佰伍拾陸夜日記
                                                                                • ChatGPTの新機能であるGPTsを使って私のコピーを作ってみた - Qiita

                                                                                  Supershipの名畑です。映画「ゴジラ-1.0」を見た後にインターネット上で他の方々の感想を読んだのですが、様々な観点があるものだなと勉強になりました。 はじめに 「New models and developer products announced at DevDay」で様々なアップデートを発表したOpenAIですが、そのうちの一つとしてGPTsがございます。ものすごく話題ですね。(CEO退任のニュースの方が話題になってしまっている感もありますが……続報からすると、OpenAIで働き続ける線もあるのですかね) GPTsは端的に言えば「自分だけのChatGPTを作成して公開することができる」というものであり、サイトを見ると Starting today, you can create GPTs and share them publicly. Later this month, we

                                                                                    ChatGPTの新機能であるGPTsを使って私のコピーを作ってみた - Qiita