タグ

ブックマーク / qiita.com (89)

  • 牛乳卵問題に学ぶ、`要望` と `要件定義` と `設計` と `実装` の違い - Qiita

    はじめに 有名なプログラマージョーク プログラマの夫に「買い物にいって牛乳を1つ買ってきて。卵があったら6つお願い」と言ったら、夫は牛乳を6パック買ってきた。 プログラマーを笑う自虐ジョークとして使われがちですが、 良い題材なのでこれを元に要望 と 要件定義 と 設計 と 実装 の違いを纏めてみましょう。 下記、それぞれのフェーズの原理原則論を記載します。 各フェーズの原理原則 1. 要望 顧客()の要望 を書き出す:顧客の仕事 買い物に行って牛乳を1つ買ってきて、卵があったら6つお願い。 2. 要件定義1(ダイジェスト) 顧客の要望から曖昧な点を除いて復唱する:PM仕事 上記だとプログラマーの夫は牛乳を6買ってきました。夫はに、要望をより具体的な形で復唱する必要があります。 ここでは、卵を6つ買ってくるという事を確認することで事故を防ぐことができます。 牛乳を1買ってくる 卵が

    牛乳卵問題に学ぶ、`要望` と `要件定義` と `設計` と `実装` の違い - Qiita
    saku_na63
    saku_na63 2020/01/02
  • 新卒からの質問をソシャゲっぽい仕組みにしたら捗った話 - Qiita

    ディップ Advent Calendar の4日目です。 はじめに こんにちは。 ディップでUXデザインや速度改善、潤滑油などをやっている@ysktsunaです。 今回は自分のチームに新メンバーを受け入れた時に発生した悩みと、それをソシャゲ風に解決した方法について書きます。 読んでほしい人 先輩として若手(特に新卒)の面倒を見る人 こんな話ありませんか? 仲間が増えた 僕らのチームに新たなデザイナーが参画しました。 :新卒ちゃん(デザイナ見習い) :僕(おっさん) < 新しくチームに入りました! よろしくお願いします! < こちらこそよろしく。分からないことは何でも聞いてね! < ありがとうございます! たくさん質問しますね! < 遠慮なくどうぞ~。(素直そうで良い子だなぁ) 元気も良くチームにも馴染んでくれそうで安心していました。 質問してくれた < すいません、ここについて分からないん

    新卒からの質問をソシャゲっぽい仕組みにしたら捗った話 - Qiita
    saku_na63
    saku_na63 2018/12/07
  • iOS/Android セキュリティガイドライン - Qiita

    必須: 基的に対応が必要。何らかの要因で対応できない場合は関係者への同意をとる。 できれば:状況的に困難でなければなるべく対応する。 基対応なし:特別な要件がなければ対応しない。 直近修正履歴(2018/11/21) [OS共通] ログ出力の対策にproguardによる方法を追記 [iOS] 通信データのキャッシュの対策に一部問題があったため修正 [OS共通] 通信の暗号化 対応要否:必須 リスクの詳細 HTTPで通信を行うと通信データが平文でネットワークに流れるため、情報漏洩の危険性がある。 対策 通信を行う場合はHTTPS(SSL/TLS)通信を利用する [OS共通] SSL証明書のチェック 対応要否:必須 リスクの詳細 通信やWebViewで行われるSSL証明書の正当性検証を無効化すると、ネットワーク管理者などにより通信経路上のデータ改竄、傍受が可能になる。 対策 試験環境で証明

    iOS/Android セキュリティガイドライン - Qiita
    saku_na63
    saku_na63 2018/11/27
  • 今後必要になるプログラム言語

    今後必要になるマスター言語 JAVA RUBY C++ PL/SQL JAVA JAVAアプレット JAVAサーブレット JAVAscript この3つのうちJAVAServletおよびJavaScriptは必須。 条件としてJavaBeansについて的確な知識があり、自分で設計取り回しができるレベル。 JavaBeansの設計とは、JAVA言語特有の空間的なソースやデータの配置を把握してることが条件なので、システムエンジニアへの質問もしくは仕様理解に努めること。 国内外問わずシステムのシェアはWINDOWS主体でありほぼJAVAで統一されている。 さらに動的HTMLなどについてもJAVAサーブレットの知識が流用される。 JavaScriptの知識については特に必要ないがBeansその他に直結するケースが多いので仕様確認。 RUBY この言語についてはJAVAのサブルーチンとしての位置づけ

    今後必要になるプログラム言語
    saku_na63
    saku_na63 2018/11/06
    怪文書
  • ソフトウェア開発に役立つ 心理学的現象、行動経済学の概念など 15題 - Qiita

    ソフトウェア開発の様々な局面で役に立つ、心理学的現象や行動経済学についての知識です。 経験則で把握済の事柄もあるかもしれませんが、 言語化して名前を与えることで何かのときにスッと出せたり、周囲の方々と議論しやすくなったりすると思います。 以下の3つの分類で記載いたします。 打ち合わせやチームワークに役立つ知識 設計やプログラミングに役立つ知識 メンタルヘルスケアに役立つ知識 打ち合わせやチームワークに役立つ知識 自己効力感 自己効力感とは、自分には何かを達成する能力がある、と信じる感覚です。 自己効力感が形成されていると、仕事の意欲が増したり、効率が上がったりします。 「この仕事は絶対ムリ~(>_<)!」と感じている仕事についてやる気がわかなかったり進捗が出なかったりするのは、自己効力感の欠如が原因であることがあります。一旦やる気を出すと案外簡単に進められたとか、真剣に取り組むと思ったより

    ソフトウェア開発に役立つ 心理学的現象、行動経済学の概念など 15題 - Qiita
    saku_na63
    saku_na63 2018/09/16
  • JSON Web Token の効用 - Qiita

    Note: JWT の仕様やそもそも論の話は触れません。どう使うか、何が出来るかしか書いていません。 JSON Web Token? JSON Web Token とは、ざっくりいって署名の出来る JSON を含んだ URL Safe なトークンです。 署名とは、署名時に使った鍵を用いて、JSON が改ざんされていないかをチェック出来るようにすることです。 URL Safe とは、文字通り、URL に含めることの出来ない文字を含まないことです。 これだけだとよくわかりませんが、触り心地としては次のような性質があります。 発行者だけが、鍵を使ってトークンが正しいことを検証出来る。 暗号化ではないので、JSON の中身は誰でも見られる。 仕様的には、暗号化のオプションもあります。 しかしながら、JSON の変更は出来ない。(改ざんをすると、検証時に失敗するので。) 全体的には、なんか変更できな

    JSON Web Token の効用 - Qiita
    saku_na63
    saku_na63 2018/04/17
  • 大規模Webアプリケーションにおける複雑性とアーキテクチャ設計に関する一考察 - Qiita

    Webアプリケーション開発についての知見を、自分の経験と知識をベースに整理してみようという試みです。 いわゆるサーバサイドにスコープを絞り、フロントエンドは対象外です。筆者は普段、オブジェクト指向言語で書いているので、記事でもその前提(RubyPHPPythonJavaScalaあたりを想定)になっています。 では、編をどうぞ。 ソフトウェア開発は複雑さとの戦い 『人月の神話』では、ソフトウェアの質的な困難性について4つの性質をあげている。その中で最初に出てくるのが「複雑性」である。『新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡』なんか読んでもらえると、ソフトウェアの複雑性と戦うために、人類が生み出してきた発明の数々が説明されている。 では、複雑さとは何か?もう少し掘り下げて考えてみよう。 複雑さの正体 Webアプリケーションが複雑になる

    大規模Webアプリケーションにおける複雑性とアーキテクチャ設計に関する一考察 - Qiita
    saku_na63
    saku_na63 2018/04/01
  • [DDD]ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か - Qiita

    DDD連載記事 なぜDDD初心者はググリ出してすぐに心がくじけてしまうのか ドメイン駆動設計の定義についてEric Evansはなんと言っているのか モデルでドメイン知識を表現するとは何か ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か ドメイン駆動 + オニオンアーキテクチャ概略 背景・前提 なぜDDD初心者はググリ出してすぐに心がくじけてしまうのかの記事で、 ネット上の文献で紹介されるアーキテクチャが様々なものとなっているのです。IDDDではヘキサゴナルアーキテクチャというものが掲げられていましたが、それを進化させたオニオンアーキテクチャ、クリーンアーキテクチャなどの有名な亜種が存在します。 これが実装に着手する際に非常に大きな混乱を呼ぶのです。文脈の理解、採用するアーキテクチャの選定に時間を取られることでしょう。 と書きました。こちらに対して、私が「一番とっ

    [DDD]ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か - Qiita
    saku_na63
    saku_na63 2018/03/31
  • Webアプリケーションフレームワーク導入時に考慮すべき22の観点 - Qiita

    記事では、 チームによる持続的に変更可能なWebアプリケーションの開発を目標に、フレームワーク導入時に考慮すべき22の観点を紹介する。 フレームワークによって特徴は異なるが、番導入にあたって、考慮すべきポイントはあまり変わらないので、極力フレームワーク1に依存しすぎないよう配慮する。また、話をシンプルにするため、REST APIを提供するアプリケーションを題材とする。 前提 ソフトウェアのエントロピー ソフトウェアがエントロピー増大の法則を避けられないことを、体感している開発者は多いだろう2。普通にアプリケーション開発を続けると、開発スピードは鈍化し、品質は低下してバグが増え、開発者からは技術的負債への怨嗟の声が聞かれるようになる。エントロピー増大というフォースは極めて強力で、意思を持って立ち向かわなければ、容易にダークサイドに堕ちてしまう。 関心事の分離 大規模Webアプリケーション

    Webアプリケーションフレームワーク導入時に考慮すべき22の観点 - Qiita
    saku_na63
    saku_na63 2018/03/31
    網羅的にまとめられてるのありがたい
  • タイムゾーン呪いの書 - Qiita

    コメント欄で「Software Design 誌 (2018/12) に寄稿した内容や修正などをこちらの記事にも適用したい」と言ったあと、やるやる詐欺でずっと放置していましたが、三年近く経ってようやく 2021年 7月に大幅に改訂し、同時に Zenn に引っ越すことにしました。 タイムゾーン呪いの書 (知識編) タイムゾーン呪いの書 (実装編) タイムゾーン呪いの書 (Java 編) なにやら長くなりすぎたので三部構成になっています。 この Qiita 版は、しばらく (最低一年は) 改訂前のまま残しておきます。 タイムゾーンの存在はほぼ全ての人が知っていると思います。ソフトウェア・エンジニアなら多くの方が、自分の得意な言語で、タイムゾーンが関わるなにかしらのコードを書いたことがあるでしょう。ですが、日に住んで日仕事をしていると国内時差もなく1 夏時間もない2 日標準時 (Japa

    タイムゾーン呪いの書 - Qiita
    saku_na63
    saku_na63 2018/02/25
  • お前らがModelと呼ぶアレをなんと呼ぶべきか。近辺の用語(EntityとかVOとかDTOとか)について整理しつつ考える - Qiita

    お前らがModelと呼ぶアレをなんと呼ぶべきか。近辺の用語(EntityとかVOとかDTOとか)について整理しつつ考えるmodelDDD設計 みなさんは、Modelと言われたときに何をイメージしますか? こんなアレを思い浮かべた方も多いかと思います。 マサカらせてください。やはりお前らのModelは間違っている。 アレをModelと呼ぶと何が不味いのか すみません、早速言い過ぎました。半分は正しいです。MVCの発明者、Trygve Reenskaug氏による1979年の説明によると、 Models represent knowledge. A model could be a single object (rather uninteresting), or it could be some structure of objects. 1 このように「Modelは単体のオブジェクトであっても

    お前らがModelと呼ぶアレをなんと呼ぶべきか。近辺の用語(EntityとかVOとかDTOとか)について整理しつつ考える - Qiita
    saku_na63
    saku_na63 2018/01/04
  • Xamarin 使いが Kotlin のマルチプラットフォーム対応コードを読んだ感想 - Qiita

    Kotlin のマルチプラットフォーム対応、アツいですね。 KotlinConf 2017 Keynote レポート | TechBooster JetBrains/kotlinconf-app: KotlinConf Schedule Application 上の kotlinconf-app の対応プラットフォームは、 サーバーサイド(Kotlin for Server-side, Ktor) Webページ(Kotlin/JS, React) Android(Kotlin/JVM) iOS(Kotlin/Native) となっています、すご! Xamarin と比べてどうよ? 普段 Xamarin を使用して Android/iOS アプリを開発しているので、クロスプラットフォームアプリ開発技術が増えて嬉しい限り。 しかも Kotlin で書けるのはとてもよいですね。 正直、C# より

    Xamarin 使いが Kotlin のマルチプラットフォーム対応コードを読んだ感想 - Qiita
    saku_na63
    saku_na63 2017/11/06
  • Pull Requestに潜むタイポを自動的に検出し、修正を代行するBot - Qiita

    いざPull Requestのレビュー!と挑んだ瞬間、「ここタイポな」という先制パンチをくらうのはとても残念なことです。 また、これは指摘しているほうにとってもチェックが負担で、気が重いものです。 人間は人間にしかできないチェックに集中すべきですし、貴重なレビュー時間を誤字脱字の修正に使うのはもったいないです。そこで開発したのが、タイポの自動検知と修正を代行するBot。その名もtypotです。 chakki-works/typot こちらは先日公開がアナウンスされたGitHub Marketplaceと共に公開された、新しいGitHubアプリの形態であるGitHub Appsで作成しています(それまではWebhookかOAuthだった)。 GitHub AppsはOAuthのようにユーザーではなく、リポジトリにひもつく形態になります。そのため、管理者ユーザーがいなくなった(あるいは権限を失

    Pull Requestに潜むタイポを自動的に検出し、修正を代行するBot - Qiita
    saku_na63
    saku_na63 2017/06/07
  • RecyclerViewに導入されたItemPrefetchで描画パフォーマンス向上させる - Qiita

    support-library の25.0.0以降よりRecyclerViewのレンダリングパフォーマンスを向上させるItemPrefetchという機能が追加されています。 ItemPrefetchとは RecyclerViewでは、以下のような処理が行われています。 UIThreadからViewのinflationおよびbind/Animation等処理 ↓ GPUのRenderThreadで描画 GPUのRenderThreadに渡っている間, UIThread はidle状態に入ります。 ここで問題となるのは、スクロールして新規にViewをinflateが必要な場合に、UIThreadでその処理が行われることによって描画遅延の原因となることです。 25.0.0より、ItemPrefetchが有効になることによって、次のViewのinflationが必要かどうかを判断し、 必要な場合は

    RecyclerViewに導入されたItemPrefetchで描画パフォーマンス向上させる - Qiita
    saku_na63
    saku_na63 2016/11/18
  • Groovyを知らない人のためのbuild.gradle読み書き入門 - Qiita

    これは、 G* Advent Calendarの15日目の記事です。 昨日は @int128 さんの Gradle Slashプラグインをリリースしました #gadvent でした。 明日は @tyama さんです。 はじめに Gradle 便利ですよね。便利すぎて Ant や Maven には戻れないです。 なにが良いって、設定ファイルである build.gradle の記述量が、 Ant の build.xml や Maven の pom.xml と比べると非常に少なくて済むのが良いです。 build.gradle は、設定ファイルと言いつつも、その実体は Groovy で書かれたスクリプトファイルです。 Gradle は、 Groovy の持つメタプログラミング機能や省略記法などを利用して、設定を簡潔に記述できるようになっています。 これはメリットなのですが、一方で Groovy の

    Groovyを知らない人のためのbuild.gradle読み書き入門 - Qiita
    saku_na63
    saku_na63 2016/10/13
  • Togetter的な社内Slackまとめサイトをつくった話 - Qiita

    はじめまして、ティッシュ配り1もするエンジニア @ru_shalm です。 今日は社内(非公式)ツール「Togelack」のお話をさせていただきます。 Slackは最高にイカしたチャットツールだぜ ドワンゴエンジニアブロマガ などでも取り上げられていますが、ドワンゴではチャットツールとしてSlackが導入されています。Slackは最高にイカしたサービスでみんなから愛されており、社内には1000を超えるチャンネルやカスタム絵文字が存在すると言われているくらい幅広く活用されています。 埋もれゆく知見、そして神展開 日々行われる会話の中には、とても有用な情報が含まれていることもあります。ですが、チャットという性質上、次の話題が始まれば流れてしまいますし「あー、あれってどっかで話したよなー?どこだっけー??」ということが稀によくあります。 もちろん、常日頃からそういった情報を整理して社内ブログなど

    Togetter的な社内Slackまとめサイトをつくった話 - Qiita
    saku_na63
    saku_na63 2016/04/12
    分報を日報にするのに使えそう
  • 強い意志で定時に帰る - Qiita

    前置き 正直に答えてください。 あなたが1日に集中してプログラムを書ける時間の長さは? 12時間?11時間?9時間? はい。 あなたはスーパープログラマーです。人間を超越していると言ってもいい。このポエムはなんの役にも立たないのでさっさとエディタに戻って人類の未来に貢献してください。 8時間?7時間?6時間? 当? すごい。ほんとうにすごい。引き続き頑張ってください。きっとあなたはコードに選ばれた人です。 しかしあなたにもこのポエムは役に立ちません。 そっとブラウザのタブを閉じて頂ければと思います。 4時間?3時間? はい。ようやくめぐりあえましたね。あなたのような方をお待ちしておりました。 こんなに集中していられる時間が短いなんて、問題があるのでは、、とお考えかもしれません。 後ろめたい気持ちにとらわれることがあるかもしれません。 その気持ちを埋め合わせるために、終電間際まで仕事し 「

    強い意志で定時に帰る - Qiita
    saku_na63
    saku_na63 2016/04/07
  • zshの設定ファイルの読み込み順序と使い方Tipsまとめ - Qiita

    設定ファイルの種類と読み込み順序 読み込み順を確かめるには実際に各設定ファイルを作ってそのファイル上でファイル名をechoしてみれば良い ログインシェルの場合(iterm2起動時,SSH,TMUX,SCREENなど含む) zshenv > zprofile > zshrc > zloginの順で、 それぞれglobalを読み込んだ後で、localを上書き読み込み ちなみに以下の〜は環境変数\$ZDOTDIRがあればそれが使われて、なければ\$HOME(つまり〜)が使われます。 \$HOME以外に置きたい場合には\$ZDOTDIRを指定しましょう。 #指定するとgit管理も楽ちんになりますね global) /etc/zshenv local ) ~/.zshenv global) /etc/zprofile local ) ~/.zprofile global) /etc/zshrc lo

    zshの設定ファイルの読み込み順序と使い方Tipsまとめ - Qiita
    saku_na63
    saku_na63 2015/06/11
  • zsh で find を使わずに簡単にファイルを絞り込む - Qiita

    ファイルの種類、タイムスタンプなんかで条件を指定してファイルを絞り込みたくなる時があるだろう。例えばこんな場合だ。 通常ファイルだけを別の場所に移動させる(ディレクトリはそのまま残す) シンボリックリンクだけ削除する タイムスタンプが1日以上古いファイルだけ削除する こういうときは普通は find コマンドでファイルを探すんだけど、zsh の「ファイル修飾子」を使うと1行で簡単にできるようになるので紹介する。 ファイル修飾子とは 「ファイル名修飾子」とは、ファイル名指定の後に付けるファイルの種類で絞り込みを行うための記号のこと。 例えばこんな感じ。

    zsh で find を使わずに簡単にファイルを絞り込む - Qiita
    saku_na63
    saku_na63 2015/06/11
  • Go言語で幸せになれる10のテクニック - Qiita

    はじめに Go近辺を徘徊していて見つけたブログポスト。 Ten Useful Techniques in Go Goな方々には常識なのかも知れないけど、Go初心者の私にとっては面白かったのでちょっとまとめてみる。 紹介されているのは以下の10個の項目。 Use a single GOPATH Wrap for-select idiom to a function Use tagged literals for struct initializations Split struct initializations into multiple lines Add String() method for integers const values Start iota with a +1 increment Return function calls Convert slices,maps,et

    Go言語で幸せになれる10のテクニック - Qiita
    saku_na63
    saku_na63 2015/05/19