タグ

プログラミングに関するmapk0yのブックマーク (25)

  • 趣味プログラミングのたのしみ - Hatena Developer Blog

    こんにちは。CTOのid:motemenです。みなさん趣味プログラム書いてますか? このエントリは Backyard Hatena #4 のフォローアップ記事です。エピソードの最後のほうで、「motemenが作って公開しているツール、どんなことを考えて作ってる?」という話になりました。そのときは時間の関係もあってあまりちゃんと話せなかったな、という感覚があったので、ここであらためて考えてみようと思います。 治具のようにつくる ウェブ上で読める自分が好きな記事のひとつに、Go Is a Shop-built Jig(抄訳)というものがあります。一言でいうと、「Goは現実的な問題を解くための治具である」ということをいっています。治具とは何かを達成することを補助する小さな目的のために作られた道具、という感じかな。fujiwaraさんの隙間家具のたとえからも近いニュアンスを感じます。 自分がツール

    趣味プログラミングのたのしみ - Hatena Developer Blog
  • 最小限のコードで動く最も汚いコードから始める

    最小限のコードで動く最も汚いコードから始める 2023.09.02 コードを書く際の重要な要点は、読みやすく他人に理解される「良いコード」を書くことです。しかし、完璧を目指して最初から書こうとすると行き詰まります。代わりに、荒削りながらも動くコードを作成し、徐々にリファクタリングして完成度を高めます。型エラーやリントエラーを無視しても構わないので、まずは動くものを作成しましょう。それからリファクタリングして「良いコード」を作成できます。 コードを書くときに最も大切なことってなんだろう?聡明な読者諸君ならご存知だろうが、コードは書く時間よりも読む時間のほうが長い。だから他人に読まれることを意識して、読みやすい「良いコード」を書かなくっちゃならない。コンポーネントは適切な粒度で分割されていて、適切な名前がつけられている。型システムに安全性だって守られてるし、最新のなんとかアーキテクチャにも準拠

    最小限のコードで動く最も汚いコードから始める
  • それ、非再帰で書けます - Qiita

    この記事は再帰自体を全否定する趣旨ではありません。 両方の良さを理解した上で非再帰で書きたいと思ったときの参考にしていただければと思います。 まだ再帰関数書いてるの? 再帰関数はプログラミング言語の有用な機能で、深さ優先探索をベースとする様々なアルゴリズムの実装として有用です。 その一方で、関数呼び出しはオーバーヘッドが大きく、定数倍が弱くなります。また、JavaPythonなどのスタック領域の制限が厳し目の言語では深すぎる再帰のせいでRuntime Errorが発生する場合があります。 C++などのコンパイル言語ではインライン展開によって関数呼び出しのオーバーヘッド解消されることもありますが、再帰関数は中でもインライン展開の難易度が高く、深い再帰ではそのまま実行せざるを得ない状況になります。 ところが、再帰関数は生のスタックを自分で用意するなどして非再帰に書き直すことができます。(「停

    それ、非再帰で書けます - Qiita
  • 10歳息子がScratchでゲームを作ってたらプログラムを上書きして消してしまい「プログラミングなんてやらない!もう嫌だ!」と大泣きした→その結果がとてもいい話

    Meimoon | 谷 明夢 @言語化とコミュニケーション @meimoonstyle 10歳息子が学校のパソコンのScratchで初めてサッカーのPKのゲームを作ってウキウキしていたら、なんと新規で作り始めた別のプログラムを上書きして消してしまった。あんなに頑張って作ったのにと目に涙を溜めて絶望状態。もうプログラミングなんてやらない!もう嫌だ!!と顔を真っ赤にして大泣き。 2022-10-27 22:05:00 Meimoon | 谷 明夢 @言語化とコミュニケーション @meimoonstyle プログラミングとかやってるとバックアップちゃんととってないあるあるではあるんだけど、このままだとプログラミング嫌いになってしまうと思った私はすかさず「宿題全部後回しでいいから今すぐ同じの作ってみて!絶対最初より圧倒的に早くできるしなんならもっといいプログラム作れるから!絶対!」と 2022

    10歳息子がScratchでゲームを作ってたらプログラムを上書きして消してしまい「プログラミングなんてやらない!もう嫌だ!」と大泣きした→その結果がとてもいい話
  • 本の紹介『読みやすいコードのガイドライン』 - ソフトウェア設計を考える

    はじめに 良いです。コードを書く人であればだれでもが気づきと学びがあるでしょう。 特に、コードの規模が大きく長期間にわたってさまざまな関係者が読むことになるプログラムを書く人にはぜひ読んでほしいです。 gihyo.jp このから学べるのは、どちらかというと「やり方」よりも「考え方」です。 書き方の具体例というよりは、良いコードを書くための考え方を、著者の知見に基づいて丁寧かつ具体的に説明しています。 別の言い方をすると、とにかくコードの具体例で「やり方」を覚えたい、という人には合わないかもしれません。 コードの具体例もたくさん登場しますが、それは「考え方」を説明するための例であって、コードの書き方のお手やサンプルを集めたではありません。 サンプルコードはKotlinです。内容は、どちらかといえばユーザーインタフェースよりという印象です。しかし、Kotlinを知らなくてもほぼ問題な

    本の紹介『読みやすいコードのガイドライン』 - ソフトウェア設計を考える
  • 個人開発で「Excel専用のWebAPI」を作りました

    どういうもの? このように関数を使ってデータを取り込めます。 背景 元々は「インターネット上のWebAPIのデータをExcelに取り込みたい」と思ったのがきっかけです。 VBAマクロを使えば簡単ではありますが、マクロは使いたくないという方も多いのではないでしょうか。かくいう私も勤務先が属人化を防ぐためにマクロの使用を推奨していません。 そこで、関数を使用する方法を選択しました。 ExcelにはWEBSERVICE 関数という指定したURLの応答データを取り込む関数があります。 しかし、この関数は大変便利な関数ですが、ExcelHTMLやJSONのパーサーを用意していません。結局取り込んだHTMLやJSONの処理にはVBAマクロが必要になります。 また、欲しいWebAPIが存在しない問題もありました。 そこで、Excelでデータを編集するのではなく、元々のWebAPIExcel用に作れば

    個人開発で「Excel専用のWebAPI」を作りました
  • 動的型付き言語は素早くプロジェクトを立ち上げるのに向いており、静的型付き言語は長期間の保守にむいているという仮説 - kmizuの日記

    注:誤解されないように最初にこの記事の意図を書いておくと、古典的な静的型付き言語VS.動的型付き言語の論争をするつもりはありません。これまで色々なプロジェクトを観察(風聞も含む)して来たところ、そういう傾向があるのではないかという仮説です。それと、文脈として主にWebアプリケーション開発する時のことを想定しており、それ以外のケースはいったん脇に置いています。WebアプリケーションだとPHP(動的型付き言語)の方が圧倒的に事例多いのではという感想もありそうですが、その辺りを考え出すと話がこんがらがるので、これもいったん脇においています。 たとえば、色々な事例を見聞きするに、スタートアップ企業において動的型付き言語であるRubyのWebアプリケーションフレームワークであるRuby on Rails(RoR)は好まれる傾向にあります。近年のPythonの動向はさておき、未だにRoRの求人がかなり

    動的型付き言語は素早くプロジェクトを立ち上げるのに向いており、静的型付き言語は長期間の保守にむいているという仮説 - kmizuの日記
  • 全プログラマに捧ぐ!図解「パターンマッチ」 - Qiita

    パターンマッチを使い始めてかなりの時間が経ちました。最初は関数型言語の一機能として触り始めましたが、徐々に関数型言語のユーザだけの玩具にしておくのは勿体ないと思うようになってきました。プログラミングにおいて、パターンマッチほど有用であるにもかかわらず普及が遅れている言語機能は他にないと思います。 記事ではその状況に一石を投じたく、一般のプログラマにも伝わるようになるべく図解で「パターンマッチ」を解説してみたいと思います。 (記事は自分のブログからの転載記事です。) はじめに 記事はプログラミング言語における「パターンマッチ」1という機能に着目して解説したものです。「パターンマッチ」は、switch文の強化版2であり、仮にパターンマッチを持たないプログラミング言語のユーザだとしても全プログラマが知っていて損はないアイデアだと思います。 パターンマッチとは パターンマッチは以下の図のよう

    全プログラマに捧ぐ!図解「パターンマッチ」 - Qiita
  • 内製化は、きっとうまくいかない - orangeitems’s diary

    最近はDXという言葉が独り歩きしてしまい、結局はどうすればいいのかと考えたあげく、内製化に舵を切る企業が多いと聞きます。 でも、この内製化、非常に危ない面を持っていると思っています。結局はユーザー企業が、SI部門を自前で持つということにほかならないからです。このSI部門、立ち上げるときにはだいたいが、大手のSIerが出身で、それまでの知識や経験をもとに組織を組み立てるのが通常です。 これ、はじまりはうまく行くんです。むしろ、一から作ったのでSIerよりもスマートに内製をスタートできる場所もあるぐらいです。そう、そこまではよい。問題は、この内製化部門が成長できるかどうか、です。 SIerはいつも競争にさらされていて、いつでも新しいトピックを主にアメリカから輸入し、常に最新化、モダナイズしないといけない強迫観念を持っています。 過去、外資のベンダーのイベントが都内ホテルであったときに、基調講演

    内製化は、きっとうまくいかない - orangeitems’s diary
  • スマホにカメラついてるんだからOCRできるでしょという気持ち - Progate Tech Blog

    どうも、 株式会社Progate で SoftwareEngineer チームのマネージャーをしています @satetsu888 です。記事は Progate AdventCalendar 2020 10日目です。 普段仕事ではエンジニア組織のことやプロダクトの技術戦略的なことを考えたり、ミーティングしたり採用活動したりタスクをお願いして回ったりなどを担当していますが、今日はそういうのとはなんの関係もないただの日常の話を書こうと思います。 ことの始まり 我が家では子どもの朝ごはんとして週に2,3回くらいの頻度でポケモンパンを買っています。 先日(2020/09/18 ~ 11/24) ポケモンパンについてるポイントを5点集めるとポケモンシールホルダーの抽選に1回応募できるキャンペーンがありました。(キャンペーン自体はすでに終了しています) いつも通りのペースでパンを買ってると何回か挑戦で

    スマホにカメラついてるんだからOCRできるでしょという気持ち - Progate Tech Blog
  • 【長文】N予備校、始めてました | 今日も8時間睡眠

    今月は、今年始めたものをいくつか書いていこうと思っています。今日は、2019年の4月から始めている、N予備校について書いていきます。 【目次】 N予備校とは N予備校はじめました 授業の進め方について 入門コースの内容について 入門コース第1章 入門コース第2章 入門コース第3章 入門コース第4章 入門コースを受けてみて テキストについて 掲示板について 受講料について 他のプログラミング学習サイトとの比較 今後のN予備校との付き合い方について N予備校とは まずそもそもN予備校とは何か、なのですが、その前にN高等学校の説明をしたほうがいいでしょう。 角川ドワンゴ学園が2016年にN高等学校を開校しました。名前が変わっているので「高校」と名の付く"高校ではない何か"だと思われるかもしれませんが、高校資格がとれる当の高校です。ネット・通信制であることがウリです。N高等学校自体のさらに詳しい

    【長文】N予備校、始めてました | 今日も8時間睡眠
  • N予備校プログラミング入門コースで学べること - Qiita

    私 is 誰 今年の7月にドワンゴの教育事業部に異動し、N予備校でプログラミング講師をやることになりました。 現在は週2回ニコ生やN予備校上にてプログラミング入門コースの授業放送をしています。 ドワンゴ自体は7年目となり、ニコニコ動画の開発を4年、エンジニア教育エンジニア採用を2年ほどやってきました。 この記事で書きたいこと 現部署に異動後、教材のインプットを兼ねて『N予備校プログラミング入門コース』を履修したのですが、明らかに難易度が僕の想像した "入門コース" から外れたガチ編成になっていて衝撃を受けたことが記事を書こうと思ったきっかけです。 中身としてはとても良い教材になっているので、僕のような勿体無い誤解が少しでも減れば幸いです。 入門コースはいわゆる入門コースではない 『プログラミング入門コース』のゴールは ドワンゴがエンジニアとして採用したいレベル や IT企業のエンジニア

    N予備校プログラミング入門コースで学べること - Qiita
  • 技術的負債への後悔と返済|Seiji Takahashi@ベースマキナ

    反省文。 tl;dr・「後から改善すれば良い」のスタンスは、返済コストを甘く見積もっている結果 ・負債の返済にはコーディング以外の工数が大きくかかってくる ・技術的負債を"徐々に"返済することは様々な面で良い 出社即リファクタリング最近出社した直後に、こっそりリファクタリングの時間を一定程度取るようにしている。朝のウォーミングアップがてら改善作業をしていると、瞑想みたいな効果があって大変気分がよくなるし、その後のコーディングも生産性が上がる。大体こういう気分。 具体的な作業は、アーキテクチャの方針が固まってなかった時代のコードの1つのエンドポイントだけ、適切なレイヤ化を施したり、単体テストが可能なメソッドとして切り出しつつ実際にテストを書いたり、テストに必要な共通処理を定義したり、だ。 初期から機能追加を重点的に行ってきたプロダクトでは、スピード優先の名目で多くの負債が生まれる。こうした負

    技術的負債への後悔と返済|Seiji Takahashi@ベースマキナ
  • JITあれこれ | κeenのHappy Hacκing Blog

    κeenです。遅刻してしまいましたがこのエントリーは 言語実装 Advent Calendar 2018 1日目の記事です。 最近私の観測範囲内でJITが流行っているのですが一口にJITと言っても色々あるよなーと思ったので私がJITについて知っていることをグダクダ話します。 このブログでも何度がJITや周辺技術について取り上げてますが話の流れがスムーズになるので最初から説明していきます。 2018-12-03: 加筆修正しました。差分はこちら JITって? Just in Time(コンパイル)のことで、日語にすると「間に合ってコンパイル」になりますかね。 インタプリタの高速化テクニックの1つです。 最初はインタプリタのようにコードをコンパイルせずプロセスが起動しますが、メソッドを実行するまでにはメソッドをコンパイルして、ネイティブコードで実行する方式です。 来ならJITはこのような意

    JITあれこれ | κeenのHappy Hacκing Blog
  • 実践的低レベルプログラミング

    はじめに 学校で習わないが(習う学校もある)、現実に必要になるプログラミング技術に、低レイヤプログラミングなどと呼ばれるものがある 厳密な定義は聞いたことがないし、おそらく存在しないとは思うが、大体のみんなの共通認識として、 「高級プログラミング言語を使わないプログラムを書き、OSで抽象化されないデバイスの機能を使う」といったような認識があると思う。 筆者の経験から言わせてもらうならば、低レイヤプログラミングに関する知識は、プログラミングにおいてあらゆる場面で、常に、少しずつ役立てられる知識だと言えると思う。 普段はRubyPHPなどを書いてる人であったとしても、メモリが足りなくなった場合や、デバッガを使っている場合、性能が足りなくなった場合など、 厳しい環境におかれた時に低レイヤプログラミングに関する知識が必ず役に立つ場面が来ると信じている。 また、役に立つかどうかは置いておいても、「

  • 「20年以上プログラミングしてきた人しか知らないこととは?」に対するJohn Byrd氏の回答 | Yakst

    Quoraでの質問に対する回答の翻訳。長らくコンピューターの世界に身を置いている人間からの、ウィットに富んだ回答。 ソフトウェア開発におけるあらゆることは、既に発明されてしまっています。人々は、それを再発見し、あたかも初めて見つけたかのようなフリをしているだけです。あなたがかっこよくて新しいと思ったものはすべて、Smalltalk、HAKMEM(訳注 : MIT AI研究所で書かれた、アルゴリズムや理論などが書かれたメモ。Wikipedia英語版)、Ivan Sutherland(訳注 : Wikipedia語版)、Douglas Engelbart(訳注 : Wikipedia語版)、初期のIBM、あるいはBell Labsからのコピーでしかありません。 コンパイラーを信じてはいけません。ツールを信じてはいけません。ドキュメントを信じてはいけません。自分のことも信じてはいけません

  • FizzBuzzを1byteで実装する - Qiita

    以前「FizzBuzz Zero ―― 人類の知識なしでFizzBuzzをマスターする」という記事がQiitaに出ました。 これに対して「人類の知識を使わないと大変すぎる」という趣旨の意見がいくつかありました。確かにGitHubで公開されているコードをみると全部で31,086 バイトで、少し長いような気もします。 では、人類の知識を使うと、どれくらい簡単にFizzBuzzを書けるのでしょうか? 気になって調べたので、備忘録も兼ねて記録したいと思います。 この記事の内容をざっくり2行で: 様々なプログラミング言語の最小のFizzBuzzコードを比較する 最短で1バイトで実装できる 目次: 1. Code Golfとは 2. Python3 3. Python2 4. C 5. Ruby 5. Bash 7. GolfScript 8. Vim 9. Hexagony 10. Lazy K 1

    FizzBuzzを1byteで実装する - Qiita
  • 今あえてDRY原則に向き合う

    [Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails

    今あえてDRY原則に向き合う
  • この10年間のプログラミングの変化|山本一成🚗TURING

    はじめましてnoteの皆さん、名人を倒した将棋プログラムPonanzaというものを作っていた山一成と言います。この度ははてなから引っ越してきました。2018年になったので新しくブログ書いてみようかなぁ〜ってはじめました。 私がプログラミングをはじめたのは大学生だった時ちょうど10年前でした。そして今2018年になって、同じプログラミングにしても色々変わったなぁという印象です。今日はそのへんを皆さんと共有できたらなぁ〜と書きました。 あくまで私の観測範囲内での話をすればですけど、10年前のプログラミングの世界は速く動くことがかっこよかったです。実際にかっこいいだけでなく、必要とされる場面も多かったような気がします。私が愛用しているプログラミング言語はC++(シープラスプラス)と言って、まあそれは高速に動作することだけを意識して作られた言語でした。 加えて、今から考えれば一体なんでそんなトリ

    この10年間のプログラミングの変化|山本一成🚗TURING
  • A Training System of Ruby Programmers / Rubyプログラマが育つ仕組み - Rubyでの受託開発を10年回してみて -

    A talk presentation for RubyWorld Conference 2017 held in Matsue, Japan. Introducing Everyleaf Corporation's training program. Written in Japanese.

    A Training System of Ruby Programmers / Rubyプログラマが育つ仕組み - Rubyでの受託開発を10年回してみて -