こまぶろ

技術のこととか仕事のこととか。

プログラミング

Smalltalkを学ぶ会@Skypeを開催しました

2020/05/04に、リモートにてSmalltalkを学ぶ会を開催しました。当日のまとめはこちらです。 オブジェクト指向やテスト駆動開発、デザインパターンなどに関心があり、それらの歴史の中でSmalltalkが果たした役割を考えるためにSmalltalkを学びたいと思ってい…

Web API の仕様をOpenAPI Specで書いてみて

以前、OpenAPI Generatorの紹介記事を書いた。 ky-yk-d.hatenablog.com 上の記事を書いてから、実際のプロジェクトでOpenAPI SpecでAPIの仕様を書くとともに、その定義ファイルからOpenAPI GeneratorでAngularのクライアントコードを自動生成するということ…

ScalaとJavaにおける変位指定と型パラメータの境界

Scalaのジェネリクスの勉強で、簡単なリストを実装してみよう!というものが出てきた。 詳細は省くが、リストのadd()メソッドは以下のように宣言される。 /* Scala */ abstract class SimpleList[+A] { def add[B >: A](element: B): SimpleList[B] } ここで…

環境構築なしでTDDを楽しむ:cyber-dojoのご紹介

新しい言語をちょっと触ってみたいな、でもIDEとか整えるのはハードルが高いな、というときは、「cyber-dojo」で試してみることが多い。 「cyber-dojo」のトップページ 様々な言語でTDDを試せる「cyber-dojo」 cyber-dojoは、Webブラウザで利用できるコード…

関連テーブルへの操作と、ドメイン駆動設計における集約・リポジトリ

ドメイン駆動設計を意識しながら設計をしている*1ときに、関連テーブルの操作に関して悩んでいたことがあった。人に相談に乗ってもらい、自分でも改めて書籍などを見ながら考え直したところ、自分の集約への理解が全く不十分であったことがわかった。 TL;DR …

コードの改善に使うEclipseショートカットキー(Windows/Mac)

Eclipseには、様々な編集機能や、自動リファクタリングの機能が搭載されている。Eclipseのショートカットキーを幅広く紹介する記事は、すでに優れたものが存在しているので、よく使うものだけをメモ。 qiita.com Eclipseによるコードの改善 以下のライブコー…

ソフトウェア開発者がテスト技術の資格「JSTQB」のテキストを読んで感じたこと

テスト技術についての資格である「JSTQB認定テスト技術者資格」のテキストを読んだ。読もうと思った理由は後述するが、ソフトウェア開発についての考えに別の光を当ててくれるいい体験になった。 ソフトウェアテスト教科書 JSTQB Foundation 第3版作者: 大西…

StreamとOptionalに共通して存在するメソッド(その3・完結篇):map / flatMap

StreamとOptionalに共通して存在するメソッドの第三弾。 第一弾・第二弾はこちら。 ky-yk-d.hatenablog.com ky-yk-d.hatenablog.com これまで、下記のメソッドについて書いてきた。 filter() of() ofNullable() empty() 完結篇となる今回は、map()とflatMap(…

StreamとOptionalに共通して存在するメソッド(その2):of / ofNullable / empty

StreamとOptionalに共通して存在するメソッドの第二弾。 第一弾はこちら。 ky-yk-d.hatenablog.com 前回の記事では、filter()について書いた。今回は、of()とofNullable()について書……こうと思ったら実はempty()も共通して存在するメソッドだったことに気づ…

StreamとOptionalに共通して存在するメソッド:filter(Predicate<? super T> predicate)

Java 8 で導入されたStreamとOptional。業歴は浅いのに古いJavaで学んでしまったので、いざ使える状況になったにもかかわらずいまいち使い方がよくわかっておらず、書籍やWeb上の資料で知識を補っている最中だ。 調べているうちに、Stream(インタフェース)…

関数型プログラミング未経験者がREPLでClojureに触ってみた

下記の記事を読んでいたら、Clojureというプログラミング言語の名前がちょこちょこと登場しているのが目に入り、少し調べてみることにした。 techracho.bpsinc.jp Clojureとは Clojureとはどんな言語なのだろうか。Wikipediaをみてみる。 Clojure (発音は/'k…

Java 9 以降の非推奨モジュールに依存したプログラムを動作させる:OpenAPI Generatorで生成したSpringスタブサーバが動作しない場合の対処法

前回の記事で、OpenAPI GeneratorでSpringのスタブサーバのソースコードを生成する方法を紹介した。 ky-yk-d.hatenablog.com 上の記事に記載した手順を手元のMacBook Proで実行したとき、XmlModelPluginに関わるエラーが発生してSpring Bootアプリケーション…

OpenAPI GeneratorでRESTful APIの定義書から色々自動生成する

APIの定義を書く:Excel仕様書はもういやだ RESTful APIを提供するサーバと、そのAPIを利用するクライアント(たとえばSPA)とを並行で開発しようとするとき、まずAPIを定義して、それに基づいてサーバ/クライアント双方の実装を進めようと考えるのは自然だ…

ドキュメンテーションコメントからプログラミングを考える / 『エンジニアのためのJavadoc再入門講座』を読んだ

『エンジニアのためのJavadoc再入門講座 現場で使えるAPI仕様書の作り方』を読んだ。 エンジニアのためのJavadoc再入門講座 現場で使えるAPI仕様書の作り方作者: 佐藤竜一出版社/メーカー: 翔泳社発売日: 2009/06/30メディア: 単行本(ソフトカバー)購入: 1…

【Angular】HTTP通信のテストでのインジェクションのエラーの解消

Angular*1のHTTP通信部分(Serviceクラス)のテスト*2を書く際に、派手につまずいたので対応方法と経緯をメモ。 テスト対象の実装 HTTP通信には、AngularのHttpClientを用いている。 実装側のコードにおいては、公式ドキュメントにあるように、通信を使用す…

Angularで「ネストされたルート」を実装する(シンプルな実装 / モジュール切り出し / 遅延ロード)

この記事は write-blog-every-week Advent Calendar 2018 11日目の記事です。 前日の記事は、nitt-san(@nitt_san)さんの「インプットからアウトプットへ -2017年〜2018年の自分を振り返る-」でした。 nitt-san.hatenablog.com Angular のルーティング機能…

TypeScriptとJavaとの違いによるつまずきと「循環参照」

『テスト駆動開発』をTypeScriptで写経していて、Javaとの違いで大きくつまずいた。 結論からいえば、モジュールの循環参照で空オブジェクトが生まれていた、というシンプルな原因だったのだが、明らかにできるまでにはかなり時間がかかった。鮮やかとは程遠…

TypeScriptのユニットテストをmocha + power-assert で書く

故あってAngularを勉強しはじめた。 JSフレームワークとしては、Vue.jsを以前勉強していたので、「Angularではこうなのか」とか「これはVueにはなかったな」とか比較しながらドキュメントを読んで簡単な実装を進めている。 TypeScriptとJSフレームワーク Ang…

Clean Coder を読んだ

Robert C. Martinの『Clean Coder』を読んだ。読んだのはだいぶ前。引用メモが残っていたので記事に。 Clean Coder プロフェッショナルプログラマへの道 作者: Robert C.Martin,角征典 出版社/メーカー: KADOKAWA 発売日: 2018/07/27 メディア: 単行本 この…

Scalaに入門してみることにした

先日、下記のようなツイートに接した。 えっと、つまり何が言いたかったんだっけ……そうそう、Scala怖くないよって話だった。書き慣れると快適だし、学習コストの割に単価がだいぶん違ったりもする(した)のでJavaやってる人はまじで気軽にチャレンジすると…

GitHubに草を生やして100日の節目にアウトプットをふりかえる〜ブログ・登壇・GitHub〜

GitHubに草を生やし続けて100日が経過した節目に、これまでのアウトプットについてふりかえりました。

7/27 WEBエンジニア勉強会 #08 でNode.jsについてLTした

7/27に渋谷で開催されたWEBエンジニア勉強会 #08で、LT(5分)登壇をしてきました。6/26の「カイゼン・ジャーニー・ライトニングトークス」に続いて2回目のLT登壇でした。 web-engineer-meetup.connpass.com ky-yk-d.hatenablog.com WEBエンジニア勉強会につ…

Node.jsからConnpassのAPIを叩こうとしてつまずいたこと

はじめに この記事をご覧になっている方の多くは、技術系の勉強会に参加された経験があるのではないかと思います。僕はよく参加しています。 他の業界の友人と話をして、最も驚かれるのが「業後に勉強会に出ている」ということです。毎日のようにどこかで勉…

Node.jsのhttpsモジュールを用いた通信処理をPromiseで書き直して解読してみた

JS初心者がよくわからないまま書いたLambda 以前、このような記事を書きました。LINEのMessaging APIを用いた簡単なbotの実装の紹介記事です。実はこちらのブログで最も多くのブクマ(16ブクマ)を集めている記事となっています(2018.07.15現在)。 ky-yk-d…

Vue Routerのナビゲーションガードによるアクセス制限を試した&コードを読み解いた

前回の記事に引き続き、Vue Routerについての記事となります。 ky-yk-d.hatenablog.com Vue Routerでアクセス制限を実現する 今回は、ナビゲーションガードを利用したアクセス制限を実現するコードを解読していきます。実現したいのは、「特定のパスに対して…

Vue Routerで「ネストされたルート」を試した

久しぶりにVue.jsの記事です。基本的な機能は使えるようになってきているので、Vue Routerに手を伸ばしてみました。 紹介 | Vue Router Vue Routerを試そう Vue Router自体は、以前ご紹介したUdemyの"The Ultimate Vue JS 2 Developer Course" (結局最後ま…

Vue.jsで作る初めてのSPA〜Udemyの"The Ultimate Vue JS 2 Developers Course"のProject 2を受講した

初めてのSPAをVue.jsで作る 前々回の記事の続きです。 ky-yk-d.hatenablog.com UdemyのThe Ultimate Vue JS 2 Developers CourseのProject 2を終えました。今回は、そちらの感想記事です。 www.udemy.com 3つのサンプルアプリケーションを作りながらVue.jsを…

目指せ!脱Vue.js初心者〜Udemyの"The Ultimate Vue JS 2 Developers Course"を始めた〜

脱Vue.js初心者!を目指してUdemyの"The Ultimate Vue JS 2 Developers Course"を始めた感想記事です。

Vue.js+axiosでDynamo DBにAjax通信する

AxiosでAjaxリクエストを送り、API GatewayとLambda経由でDynamo DBを操作する方法についてです。

WebページからDynamoDBにアクセスしてみる〜はじめてのAjax通信とDOM操作〜

前回のLINE Bot作成に引き続き、AWS関連です。Webアプリ側に寄せています。 ky-yk-d.hatenablog.com 前回やったこと 今回やること Amazon Dynamo DB の設定 AWS Lambda の設定 Amazon API Gateway の設定 Webページ(HTML & JavaScript)の作成 送信ボタンの…