あまり知られていない関数型言語のおもしろ概念として、Opticsというものがある。 Opticsとは、オブジェクト指向言語で言うところのSetter/Getterを一種の関数として捉え、いくつかの便利な特性を付与したものの総称だ。この便利な特性によって、Setter/Getter以上のことをパワフルにこなせる。 最も有名なOpticsはLensであり、色々な解説資料が(主にHaskell向けに)出ている。 blog.recruit.co.jp さて、これまでのOpticsを紹介する資料はSetterとGetterとしての側面に注目しがちだったので、じゃあOpticsの何が良いのか、Scalaでやる意義は何か、という側面をこの記事で紹介しようと思う。 Optics -- vs. copyメソッド地獄 Opticsは合成可能である Opticsはボトムアップのアプローチである Opticsがう
「住所の揺らぎ程度のことにAIを使いたいだとかデジタル音痴」だの「住所の正規化なんてExcelで2時間あれば作れそう」だの、たいへんフットワークの軽やかな言説の数々に、位置情報界隈のみならず住所の正規化や名寄せに少しでも関わったことのあるエンジニアが総立ちでマサカリを投げていたのも記憶に新しい今日この頃ですが(2023年6月6日)、この手の騒動は周期的に起こってる印象です。 ということはつまり いつまで経っても解消されない、解決が困難な課題である その困難さが界隈以外に共有されていない であるわけで、その都度Twitterにトリビアが投下されてはTLが賑わい華やかではありますが、そろそろ自分の整理としてもどれだけ日本の住所システムがカオスで、その計算機的な処理がいかに困難かをメモっておこうかと思いました。 なおこの件については既にQiitaにGeoloniaの宮内さんが鼻血の出そうな良エン
伊藤直也さんが「今逢いたい」ソフトウェアエンジニアに声をかけて対談を重ねてきたシリーズの最終回は、これまでの対談の文章化を手がけたラムダノート株式会社の鹿野桂一郎さんとの異色対談です。コンピュータ技術書や記事の編集者であると同時に仕事や趣味でHaskellのプログラムも書く鹿野さんの視点を通し、現代のウェブシステム開発に伊藤さんが何を見ているのか、特に「型」と「エンジニアの学び」というこれまでの対談に通底するテーマについて掘り下げます。 ・伊藤 直也さん / 株式会社 一休 執行役員 CTO 新卒入社したニフティ株式会社でブログサービス「ココログ」を立ち上げ、CTOを務めた株式会社はてなでは「はてなブックマーク」などの開発を主導。グリー株式会社では統括部長としてSNSを担当した。2016年4月、一休に入社し執行役員CTOに就任。 ・鹿野 桂一郎さん / ラムダノート株式会社 代表取締役社長
チーフエンジニア兼エンジニアリングマネージャのid:taraoです。先日開催されたYAPC::Kyoto 2023にはたくさんの方にご参加いただけまして、ありがとうございました。 トートバッグに書かれたPerlコード YAPC::Kyoto 2023には、はてなもスポンサーとして参加しており、会場で配布されたトートバッグのデザインも提供していました。そのバッグの片面にPerlのコードが書かれていたことにはお気づきいただけたでしょうか? コードを書き写すと以下のようになります。 use feature qw(try); try { Something->new; } catch ($your_dream) { tell $your_dream and seek our $future, @ YAPC::Kyoto, 2023; } 今回のカンファレンスのテーマは「try/catch」だったの
この記事はScala Advent Calendar 2022の19日目です. Scalaではジェネリック型の変性(variance)は+や-で指定しますが, 他の言語(たとえば, C#, Kotlin)ではoutやinだったりします. この記事では変性の意味を整理して, なぜScalaでは+/-の記号を使うのか説明します. 追記ただし, ここで説明している内容は基本的にC#やKotlinでも成立する(はずな)ので「なぜこれらの言語では+/-の記号を使わないのか」を説明するものではありません. 個人的には+/-の方がわかりやすいと思うし, out/inの記法は扱っている概念が簡単であるかのような誤解を生む(悪く言えば騙す)のでどちらかと言うと嫌いです. 発端 こういう話題がありました. Scala は共変が + で、反変が - なので理論重視? なのに対して、Kotlin と TypeSc
こんにちは,sititou70です.私は社会人2年目のよわよわWebフロントエンドエンジニアであり,「数学」とか「証明」とは無縁の人生を送っています. そんな私ですが,がんばって型システム入門(通称:TAPL)という本を読み終えました.全32章,503ページ,牛乳パック1本分の重さがあり, 自立します. 自立する本は大抵やばいです. TAPLの序文を見ると,想定読者は プログラミング言語と型理論を専門とする大学院生および研究者 プログラミング言語の鍵となる概念に触れたい,計算機科学の全分野の大学院生および習熟度の高い学部生1 となっています.本記事では 「そんな本を,学生や専門家でない人間(私)が読んだらどうなるのか」 について書きます.専門的な用語は避けますので,TAPLの雰囲気だけでも感じ取ってもらえたら嬉しいです. どうなったのか 宇宙語が読めるようになった 「型安全」を説明できるよ
noteからの転載 つまり、何が言いたいかと言うと、タイトルの通り”コードは、業務のレア度や重要度には関心を示さないのだ”ということ。 人間が意味を見出さないといけない。 重要な業務のロジックだから品質保証をしっかりやろう!と言っても、実行するコンピュータはそんなことに関心を示さないし、そんな色付けをできるプログラミング言語を、私は知らない。そこに人間が意味を見出さないといけない。 当たり前のようで、これがなかなかコンセンサスが得られないことなのだ。 システムに実装されている業務と、人間が認識する業務の違いってレアリティの高い状態に対するスタンスじゃないかって思っていて、人間は「それは超レアだから、普段は気にしない、起きたら考える」って言えるけど、システムはそれを等しく(レアじゃないことと同じ粒度で)実装しなければいけなくて…— magnoliak🍧 (@magnolia_k_) Feb
本項は「C# Tokyo オンライン「世界一わかりやすいClean Architecture」他」による発表の登壇原稿となります。過去に発表した.NET版の記事はこちらにアーカイブしています。 本稿のサンプルコード・PPTはこちらで公開しています。 「CC BY-SA 4.0」で公開していますので、気に入っていただけたら営利目的含め、ライセンスの範囲で自由に利用していただいて問題ありません。 github.com また動画を以下で配信しています。よろしければご覧ください。 世界一わかりやすいClean Architecture はじめに まず初めに、クリーンアーキテクチャの誤解されがちな二つのことについてお話させていただきます。 その上で、クリーンアーキテクチャの本質とは何か?押さえておくべき、本当に重要だと考えている三つの事について、お話しします。 注意事項 さて本題に入る前に、少し注意
新型コロナウィルスの影響も長引いてますが、皆さま無事お過ごしでしょうか。私は幸い無事です。 日ごろチームでソフトウェア開発をしているのですが、近年社内ではペアプログラミングやモブプログラミングが流行しています。 私のいるチームでもここ二年ほどモブプログラミング(ないし類似のプラクティス)に取り組んできました。 モブプログラミングについて正確にどのようなものかは以下の記事などをご参照いただければと思います。 簡単にまとめると、要求分析やコーディング等幅広い開発作業を、同じ場所に集まったチームの共同作業でこなしていくというものです。 このご時世ですので、最近はオンラインのミーティングルームに集合する形式でしたけど。 www.agilealliance.org ここから先は、非常にパーソナルな、私に限定された体験になります。 どの人・チームにも適用できる話ではありません。ではありますが、どの人・
はじめに 先日ツイッターで見かけた呟き pic.twitter.com/33Yk02hu1U — TOMO (@tomozh) October 14, 2020 そういうこともあるのか的な反応もあるようなので具体例を挙げてみることにする。 例1 所謂FizzBuzz問題。 #include <stdio.h> void fizzbuzz(int n) { int next; int i = 1; do { printf(i % 15 ? i % 5 ? i % 3 ? "%d\n" : "Fizz\n" : "Buzz\n" : "FizzBuzz\n", i); if (i++ >= n) next = 0; } while (next); } int main(void) { printf((char[]){""}); // この位置にprintfが無いとなぜか動かない fizzbuz
この番組は、思わず頭の中で手順を組み立て、先を予想したくなるような興味深い実験、手順の組み合わせを改善していく楽しさを伝えるアニメーション、さまざまな仕事や物の中にプログラミング的思考が活かされていることを伝えるコーナーなどで構成されています。番組の中では、実際にコンピューターを使ったプログラミングを体験するシーンは出てきません。コンピューターへの苦手意識やICT 環境を問わず、誰でも楽しくプログラミング的思考を育めます。コンピューターを使ったプログラミングへの導入としてはもちろん、実際のプログラミング体験をした後でも、活用できる番組です。
長男がプログラム(でゲーム)を作りたいと言い出したので、Javascriptの書き方とブラウザでの動作確認を軽く教えた 次男も感化されたようで長男の真似をし始め、今は簡易な動作のHTMLファイルであれば作れるようになっている ある日、二人の空気が険悪だった(大喧嘩したあとの空気だった) まずは長男に事情を訊いてみると、とあるプログラムの方針で対立したとのこと それは「じゃんけんゲーム」だった 画面でグーチョキパーのいずれかを選びボタンを押すと、相手(CPU)の「手」と勝敗が表示されるというものだった 次男はまずCPUの「手」を乱数で決定し、画面に入力された「手」と比較して勝敗(と引き分け)を決める、素直な処理だった 長男はそれに飽きたのか、まずは乱数で「勝ち」「負け」「引き分け」を乱数で最初に決めてしまい、その後で結果に応じたCPUの「手」を決定するというロジックだった 次男はこれが気に入
この記事について。 2030 年 「エンジニアです。コードは書けません。」|__shinji__| note 自分はそもそもビジュアルプログラミングやオーサリングに興味があり、ノーコードは興味の範疇でありつつも、現状のもの、現状の「コード抜きで作れる」ような謳い文句は厳しいと思っています。それを、RPG ツクールを例に説明します。 はじめに、ノーコードを分類する 本記事では、「専用の管理画面で編集し、出力のためにコードを書かない、もしくはコピペ程度」のものをノーコードとして扱います。 その中でさらに種類ごとに分類してみます。このような定義があるわけではなく、自分の主観的で暫定的な分類です。 タイプ 1: データベースから自動的にフォームを生成 Google App Sheet MS Power Apps タイプ 2: 高水準 API のパイプライン Zapier IFTTT 古の Yaho
アメリカ・ニュージャージー州のフィル・マーフィー知事が、2020年4月4日の記者会見で「プログラミング言語COBOLのスキルを備えたボランティアが必要です」と訴えました。その背景には、新型コロナウイルスの影響で失業保険の請求が急増しているため、COBOLで記述された古いシステムの改修や維持管理を行える人材が必要になったという事情があります。 COBOL-coding volunteers sought as creaking mainframes slow New Jersey's coronavirus response • The Register https://www.theregister.co.uk/2020/04/05/new_jersey_seeks_cobol_volunteers/ COVID-19 Response: New Jersey Urgently Needs
※この記事は2019年8月に取材・撮影した内容です 私たちが使う便利なアプリの数々は、“プログラミング言語”によって作られています。言語の種類は数え切れないほど存在していますが、「多くの人々に利用されているもの」となると、ごくわずか。優れたプログラミング言語を生み出せる人物は、世界的に見ても一握りなのです。 その数少ない人物のひとりが、日本にいます。プログラミング言語・Ruby(ルビー)の作者である、ソフトウェア技術者のまつもとゆきひろ( @yukihiro_matz )さんです。使い勝手の良さや生産性の高さから、まつもとさんの生み出したRubyは世界中で高い評価を受け、まつもとさん自身も世界中のコンピュータエンジニアから「Matz(マッツ)」の愛称で知られるようになりました。 では、まつもとさんは戦略的に、現在のキャリアを築き上げてきたのでしょうか。その答えは「NO」です。むしろ、「自分
ポール・グレアム「アイデンティティは控え目に」を翻訳しました。原題はKeep Your Identity Smallです。親切な皆様、コメントや人力検索でのアドバイスをよろしくお願いいたします。翻訳にあたってコメント欄でttamo様、practicalscheme様、punkaholic様、TeX様からのご協力を得ています。ありがとうございます!! アイデンティティは控え目に 2009年2月 どうして政治や宗教が、お決まりの役にも立たない議論を引き起こすかについて、私は今日ついに理解した。 一般にネットのフォーラムでは、宗教について何を話しても宗論になってしまう。なぜだろう? どうして宗教でそうなり、Javascriptとかパン焼きとかその他のことを論じるフォーラムでは、そうならないのだろう? 宗教が違うのは、人は宗教に関してなら、まったく専門的知識を持っていなくても意見を持って良いと考え
予選の問題作成を担当したDeNAのkarupaneruraです。 予選に参加した皆様、お疲れ様でした。 楽しんで頂けましたでしょうか。 お陰様で大きなトラブルもなく無事に予選を終えることができました。 参加者の皆様をはじめとした皆さんのご協力がなければ成し得ないことでした。 ご協力いただいた皆様、ありがとうございました。 課題アプリケーション今回の課題はイベントのチケット予約アプリケーションでした。 ユーザーを作成、またはログインを行うと座席を予約することができます。 座席は抽選で決まる仕組みになっており、ランダムに決まった座席が即座に分かるようになっています。 埋まっている座席は黒く塗りつぶされ、自分の獲得した座席は緑色の字で表示されています。 また、自分の座席をクリックするとキャンセルを行うことができます。 マイページでは自分の最近予約(orキャンセル)した席を5件、最近予約(orキャ
当社はCookieを使用して、お客様が当社のWebサイトでより良い体験を得られるようにしています。引き続き閲覧する場合は、プライバシーポリシーに同意したことになります。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く