タグ

programmingとqiitaに関するyuki_2021のブックマーク (70)

  • アルゴリズムの世界地図 - Qiita

    こんにちは、square1001 です。 現在は東京大学の学部 1 年生をしています。私は中学 1 年の頃からプログラミングをやっていて、特にアルゴリズムが大好きです。AtCoder をはじめとする 競技プログラミング にも取り組んでいて、中高生のときは 情報オリンピック にも参加していました。 記事では、アルゴリズムや競技プログラミングに興味がある方、あるいはプログラミングをやっているけどアルゴリズムをよく知らない方に アルゴリズムはどんなもので アルゴリズムを使うとどんな問題が解けて アルゴリズムが地球のように広く、多様で、奥深く、そして楽しいこと を知ってもらおうと思っています。 アルゴリズムの世界へようこそ 時代は 2020 年代に突入し、急速に IT 化 や DX が進んでいく中で、問題を効率的に解くアルゴリズム技術の重要性が、ますます高まっています。そして、アルゴリズムは、世

    アルゴリズムの世界地図 - Qiita
    yuki_2021
    yuki_2021 2021/12/24
    後でじっくり読む。
  • リファクタリング自爆奥義集 - Qiita

    こんにちは、リファクタリングが大好きなミノ駆動です。 この記事は READYFORアドベントカレンダー2021 、13日目の記事です。 これはなに? コードが複雑化し、技術的負債が蓄積していくと、コードの変更が難しくなり、開発生産性が低下していきます。技術的負債の解消にはリファクタリングが必要です。 しかし、リファクタリングの実施には数々の罠やハードルがあります。 下手すると逆に負債を作り込んでしまうといった、自爆技をやりかねません。 この記事は、リファクタリングのアンチパターンと、その対策をまとめたものです。 この記事のゴール リファクタリングには様々なアンチパターンがあることを知る。 アンチパターンにハマらないためのアプローチを知る。 リファクタリングの効果を高めるにあたり、何のために実施するのか意義を理解する。 前提知識 なぜ自爆技となるのか、自爆だと理解するのに必要な前提知識を挙げ

    リファクタリング自爆奥義集 - Qiita
  • 設計を歪める認知バイアス - Qiita

    こんにちは、リファクタリングが大好きなミノ駆動です。 この記事は READYFORアドベントカレンダー2021 、5日目の記事です。 これはなに? ソフトウェア開発において、設計をないがしろにすると、低凝集密結合な構造に陥り、変更容易性が低下してしまいます。 設計スキルを高め、あるべき構造を設計する……これで解決できるに越したことはありません。 しかし、認知バイアスと呼ばれる心理効果により判断を誤り、良くない設計をしてしまうことが往々にしてあります。 記事は、設計を歪めてしまう認知バイアスを理解し、設計判断の精度向上を促すことを目的とします。 この記事のゴール 人間の判断を歪めてしまう心理効果「認知バイアス」の存在を知ること。 ソフトウェア設計も、認知バイアスの悪影響を受けてしまうこと。 認知バイアスに振り回されない設計アプローチを身につけること。 認知バイアスとは 先入観や思い込み、偏

    設計を歪める認知バイアス - Qiita
  • 「リーダブルコード」を読んだので、その要点 - Qiita

    リーダブルコード 「鍵となる考え」 からなるほどと思ったところのピックアップです。 1.5 でもやるんだよ 「コードは他の人が最短時間で理解できるように書かなければいけない」 「他の人」というのは、半年後の「君自身」かもしれない 「最短時間で理解できるように」は効率化とかその他の目標とは競合しない 理解しやすいコードは優れた設計やテストにつながる 大変なことだ でもやるんだよ 2章 名前に情報を詰め込む 名前に情報を詰め込む 明確な単語を選ぶ 名前が「他の意味と間違えられることはないだろうか?」と自問自答する 一貫性のあるスタイルは「正しい」スタイルよりも大切 コメントの目的は書き手の意図を読み手に知らせること コードからわかることを書かない コードを理解するのに役立つものを書く 複数のものを指す可能性のある「それ」や「これ」などの代名詞を避ける 関数の動作はできるだけ正確に説明する コメ

    「リーダブルコード」を読んだので、その要点 - Qiita
  • プログラムの依存関係とモジュール構成のこと - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? みなさん、メンテナンスしやすいプログラムにするための設計に苦労してませんか? 次々と現れるフレームワークやデザインパターンに振り回されてませんか!? プログラムの設計については、パターン周りを中心に長い間多くの人を悩ませているように見えます。例えば MVC などは 1980 年代からあるものなのに、未だに定期的に議論に上がったり改善されたパターンなどが提案されたり、それを元にしたフレームワークが現れたりします。 僕もそういった設計に悩んだ(でる)一人なのですが、最近は新しいパターンも大事とは思いつつも単純に依存関係をきちんとコントロール

    プログラムの依存関係とモジュール構成のこと - Qiita
  • 「あれ、プログラミングが楽しくない…」【すべてのエンジニアへ】 - Qiita

    経緯 ストーリー形式で長々と書いているため、結論だけ知りたい人は「僕はここに居てもいいんだ!!!」へどうぞ。 プログラミングが楽しくなくなった日 ある日、Javaの勉強中にふと思った 「これ、なんの役に立つんだ?」 私は、三年間Cをやっていて、PythonJavaScriptをかじったことがある。 今までに「Twitter絵師探索」や「トイレットペーパー管理システム」、「クソ雑魚AI付きオセロ」に「ブロック崩し(PICマイコン)」などを作ってきた。 お世辞にもプログラマーと言えるレベルではないが、ちょっとしたミニアプリくらいなら作れる程度だ。 しかし、私の技術不足と人脈不足で「これは誰かに貢献したぞ!」というものはない。 そこで、ひとつの疑問が浮かぶのだ 「あれ?プログラミングしても意味なくない?」 幼い日の僕 私が最初にプログラミングのようなものを始めたのは「部員成績記録Excel

    「あれ、プログラミングが楽しくない…」【すべてのエンジニアへ】 - Qiita
  • 【追記あり】ES2022 Array#at がちょっとおかしい #fix_ecmascript_at - Qiita

    既に Stage 4 になっているので諦めていたんですが、流石に見逃せないかなと思ったので TC39 の Discourse にトピックをたててみました。意見がある方はこちらにお願いします。 https://es.discourse.group/t/fix-at/983 議論に伴って私が実際に欲しかったものをモジュールにして公開してみました。 https://github.com/petamoriken/safe-at それといまいちユーザーからの声が伝わっていない感じがしたのでハッシュタグ #fix_ecmascript_at を用意してみました。協力をよろしくおねがいします。 String#char{At, CodeAt} という存在を忘れてたんですが、この似た名前のメソッドたちが引数を整数に丸めるのに String#at が丸めないのはたしかに変だということに気づいてしまったので、自

    【追記あり】ES2022 Array#at がちょっとおかしい #fix_ecmascript_at - Qiita
  • スケールする要求を支える仕様の「意図」と「直交性」 - Qiita

    はじめに どんなソフトウェアエンジニアも拡張しやすくメンテナンスしやすいソフトウェアを作りたいと思っているはずです。また、どんなプロダクトマネージャも同様に拡張しやすいシンプルな要求を作りたいと考えているはずです。 しかし、将来の不確実性や発展性に対して見通しを立てるのは難しいものです。そのため、開発チームの思いとは裏腹にソフトウェアの複雑性はどんどんと増大していきます。気がついたら技術的負債と呼ばれるような手もつけられない泥団子になってしまうということもしばしばです。誰もが生産性を下げるために機能を追加したいわけではなく、ビジネス価値を提供するために機能を追加したいだけなのにです。 このような状況を避けるためにはどうしたらよいのでしょうか。今回はその一つの手段として、要求には隠れた「意図」があり、それを発見していくことの重要性についてまずはお話しします。さらにわかりやすい要求が持つ仕様の

    スケールする要求を支える仕様の「意図」と「直交性」 - Qiita
  • コーディングを始めたときに知っておきたかった65のこと - Qiita

    以下はMadza( Twitter / GitHub / LinkedIn / Webサイト )による記事、65 Things I wish I knew when I started to Code 🌱🚀の日語訳です。 65 Things I wish I knew when I started to Code 🌱🚀 1.Coding is about problem-solving. コーディングは、問題解決の手段である。 コンピュータの前に座って適当にキーボードのボタンを押しまくることだけがプログラマの仕事ではありません。 それは現実世界の様々な問題を解決し、人々の生活をより快適にするための強力な手段なのです。 あなたにその力があるかぎり、あなたは守られるでしょう。 2.The golden rule is planning. 最優先すべきは計画である。 プロジェクトの成功

    コーディングを始めたときに知っておきたかった65のこと - Qiita
  • GitHubのawesomeリストが本当にawesomeなものばかりだから一度見てほしい - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 伝えたいことは全てタイトルに書いた。 動機 https://github.com/topics/awesome を眺めていて当にawesomeなものばかりだった (割にあまりどこにもそのawesomeさが書かれていないように見えた) ので書く。 awesomeリストとは GitHub で使われる慣習的なリポジトリについてまとめてみた#awesome より: 「特定テーマに関するキュレーションを行うリポジトリ。Markdown のリスト表記で一覧化するのが一般的。また、Contribution も受け付けている(人気のあるリポジトリはガ

    GitHubのawesomeリストが本当にawesomeなものばかりだから一度見てほしい - Qiita
  • 【精神崩壊】だからこのコードはクソなのだ!【主に俺の】 - Qiita

    INDEX 背景 だからこのコードはクソなのだ! あとがき 背景 1 かなり攻撃的なタイトルを付けたが、要はクソコードと言われるものを引き継いだり、 生産者からアドバイスを求められたりレビューをせざるを得ない状況に追い込まれ徐々に精神崩壊を起こしそうになった気がするので脳内妄想を吐き出してみることにした。つまりフィクションだ。いいね? クソコードにも色々誕生秘話があって確かに大多数がクソ認定するコードもあるとは思うが、レビュアの理解が追い付かない事でクソコード認定されてしまう事もある。 はたまた、かつては輝いていたけど幾多の苦難2に飲まれ、多くの兵どもの夢の跡3を見守った結果、技術的観点からグリーフシード4のようにクソコードとなってしまった悲しい経緯があるかもしれん。 変に稼働実績があるからリファクタリング出来ないし、しない方が良い類のものでもある。5 まあ、そんなことはどーでも良い。この

    【精神崩壊】だからこのコードはクソなのだ!【主に俺の】 - Qiita
  • エンジニアの情報収集法まとめ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに プログラミング系の時事ネタは能動的に情報収集しないと入ってこないのですが、若手だった頃はどうやって情報を仕入れればよいのかさっぱり分かりませんでした。 情報収集のコツを掴んでからパッと視界が開けた経験があるので、特に新米エンジニアの方は参考にしてみてください。 ニュースアプリ Gunosy、SmartNewsなど色々試しましたが以下の2つがプログラミング系記事多めでした。 通勤時間などに流し読みして、気になるものは深く調べると良いです。 はてなブックマーク(テクノロジー) presso(webアプリ開発) ※2016年4月末に

    エンジニアの情報収集法まとめ - Qiita
  • 無料で読める技術書・エンジニア本まとめのまとめのまとめ - Qiita

    こんな記事を見まして。 「お金を払ってセキュリティを学ぶ」のは平成で終わり? ある無料教が神レベルで優れている件 (1/3) - ITmedia エンタープライズ - https://www.itmedia.co.jp/enterprise/articles/1904/24/news032.html 早速iPadにダウンロードしたんですが、他にも読んで勉強になる無料の書籍ってありそうだなーと思って調べてみました。 ##無料書籍 小さな中小企業とNPO向け情報セキュリティハンドブック[みんなでしっかりサイバーセキュリティ] 冒頭の記事で紹介されている、内閣サイバーセキュリティセンター(NISC)が公開しているものです。タイトルにあるように、中小以下の規模の企業や団体が意識すべきセキュリティのことが広く深く網羅されている一冊。 インターネットの安全・安心ハンドブック[みんなでしっかりサイバー

    無料で読める技術書・エンジニア本まとめのまとめのまとめ - Qiita
  • 英語力と技術力向上のための海外Tech系Youtuber10選 +n - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 身につまされる英語力問題。手っ取り早く英語を習得するなら海外に行ってしまうが最善なはずですがこのコロナ禍、身近なところで英語に触れつつ技術も勉強したい?といえば、動画です。 10 Developers You Should Follow to Improve Your Skills (スキルを上げるための、フォローすべき開発者10選) という記事があったので10人をまとめた。プラスオマケ。それぞれ実際に動画を見てみての補足付き。 1. Ben Awad (ベン・アワド) ソフトウェア開発者。ReactReact Native、Grap

    英語力と技術力向上のための海外Tech系Youtuber10選 +n - Qiita
  • C#でまともなアプリ開発を行うために - Qiita

    はじめに C#は「Windowsでしか開発出来ない言語」などクローズドなイメージから一転し、.NET Coreの誕生によって様々なことが出来るようになりました。最近ではokazukiさんのC# で出来ること一覧が大きな反響を呼び、C#であらゆるアプリが作れることを多くの方に知ってもらえたかと思います。C#のよさを知ってもらうことは嬉しい限りではありますが、他言語をやってきた身としてはC#を取り巻くエコシステムの情報が少ないと感じることが多く、新たに参入される方にとって抵抗があるのも事実だと思います。この記事ではまともなアプリ開発を行うために必要なエコシステムなどご紹介し、C#でも快適に開発出来ることを知ってもらえれば嬉しいです。筆者はWEB開発を主としているので、WEB寄りな話が多くなる可能性がありますがご了承下さい。 「まとも」とは? タイトルにも書いたまともなアプリ開発とは、一定の品質

    C#でまともなアプリ開発を行うために - Qiita
  • オブジェクト指向設計原則とは - Qiita

    はじめに オブジェクト指向の設計原則を説明します 勉強内容のアウトプットです 単一責任の原則 単一責任の原則は非常にシンプルな内容で、「1つのクラスに1つの役割(機能)」と言うものです。 これはカプセル化で強く言われる「小さなカプセル」ということに通じます。 ただ、この「1つのクラスに1つの役割」という考え方は正しいのですが、コレを正確に運用するのは非常に難しいです。運用が難しいというのは「1つのクラスに1つの役割」という言葉を指針としてしまうと思わぬ間違いを生むということです(言葉自体は正しいが、人間はアホなので間違っちゃうのです) そこで、クラスの妥当性をチェックするために別の角度から眺める必要が出てきます。この時の言葉が 「クラスを変更する理由が2つ以上存在してはならない」 という言葉です。この言葉は単一責任の原則の話で重要となる言葉ですので、覚えておいてください。 さて、あなたはあ

    オブジェクト指向設計原則とは - Qiita
  • オブジェクト指向設計 getter, setterを使うなとはどういうことか - Qiita

    趣旨 今回は、とかく誤解されたままになりがちなこのテーマについて自分の中での整理も兼ねて書いていきます 内容は特定の言語に限定されるものではありませんが、コード例はJavaで書いています。他の言語をお使いの方は適宜読み替えながら読んでいただければ幸いです 入門書は間違ったことを教えている? 皆さんはどのようなでオブジェクト指向プログラミング言語を勉強しましたか?多くの方は例えば「やさしい~」や「たのしい~」のような入門書から入ったのではないでしょうか(中にはいきなり分厚い言語仕様から入る剛の者も居るようですが) その中で必ずと言っていいほど書かれているワードがあります フィールドはprivateにし、その値の書き換えや読み取りにはgetterやsetterを用意しましょう。これによってカプセル化が維持されます さて一方でコミュニティなどでは次のように言われることがあります getterや

    オブジェクト指向設計 getter, setterを使うなとはどういうことか - Qiita
  • 新人エンジニアに1年間で身につけて欲しい能力 - Qiita

    2020年は初めて格的に新人エンジニアのOJT1に取り組んだ年でした。 自身の振り返りも兼ねて、OJTの際に感じた新人エンジニアに1年間で身につけて欲しい能力を記載しようと思います。 前提 あなたは誰? (2020年当時)6年目のサーバーサイドエンジニアで、普段はPHP(Laravel)で自社サービスを開発しています。 OJTの内容は? プログラミング未経験の新人エンジニア4名にOJTを行いました。入社後三ヶ月間は外部機関でプログラミング研修を実施し、その後の三ヶ月間は私がOJTを担当しました。 OJT期間中、新人には自社サービス開発の実装〜結合試験を行なってもらいました。具体的には以下の流れで業務を行ってもらいました。 コロナ禍のため、最初の一ヶ月は出社、二ヶ月間はリモート、という状況でのOJTでした。 題 三ヶ月間で新人エンジニアのOJTを実施し、身につけて欲しいと感じた能力を以下

    新人エンジニアに1年間で身につけて欲しい能力 - Qiita
  • 「レガシーのメンテばかりは嫌だ」と言う学生さんへのマジレス - Qiita

    丁度空いていたので入りました、闇の魔術に対する防衛術 Advent Calendar 2020 18日目の記事です。今月はアドベントカレンダーではありますまいかAdvent Calendar 2020をマラソンのように書いております。この「荒れ果てた環境」へのオッサンなりの覚悟はこちらに掲げておきたいな。 ERPパッケージソフトの開発保守をしています 自己紹介に近いところは色々リンクを読んでいただければと思うので追記。 アジャイルの話 ドキュメントの話 サバイバルな話 で、私が直接お話しした相手ではないのだが、社内Slackで流れてきてふぉぉぉぉ!と私が思い、したためたくなったことを書きます。弊社員が学生さんとカジュアル面談した結果だそうです。 • 技術力ある人やOSSコミッターと働きたい • Excel職人は嫌だ(= きちんと設計と実装ができる環境で働きたい) • レガシーのメンテばかり

    「レガシーのメンテばかりは嫌だ」と言う学生さんへのマジレス - Qiita
  • 【初心者向け】関数型プログラミングの基本原則 - Qiita

    1. はじめに 最近JavaScript関数型プログラミング 複雑性を抑える発想と実践法を学ぶを読んで関数型プログラミングについて勉強し始めました。 まだまだ理解しきれていないことが多いので、頭の整理も兼ねて勉強内容のアウトプットしていきます。 今回は関数型プログラミングの基的な原則を中心にまとめます。 個人的なイメージで記載しているため、認識齟齬あればコメントください。 2. 関数型プログラミングとは 上記のには、「関数型プログラミング」を簡潔にまとめると、以下のように書いてありました。 関数型プログラミングとは、純粋関数を宣言的に評価することである。 純粋関数は、外部から観測可能な副作用を回避することで、不変性を持つプログラミングを生成する。 この中で重要なものは以下の3つの原則です。 宣言型 純粋関数 不変性 もう少し詳しく見ていきます。 2.1. 宣言型 宣言型とは、ざっくり言

    【初心者向け】関数型プログラミングの基本原則 - Qiita