最近関わっている案件でBulmaを使用しているんですが、Bulmaの練習がてらBulmaを使ってWebページサンプルを作成してみました。HTML5のタグも気にする必要ないようですが(極端に言えばほぼ全部divタグでも動くが)、毎回悩むのもムダなので今回作成したページを今後のテンプレートとして使っていこうと思っています。Bulmaの機能がわかりやすいよう、余計な機能は極力外しています。6月に続き、DDDに力を入れた。DDDの案件は平日夜と休日に継続して実施している。SpringBoot、DDDはそれぞれ学習範囲が広いが、ベースは抑えることができた。指摘を受けることは多いが、開発が進められる状況になった。AtCorderについては先月と状況は変わらず、毎週末の大会だけ参加している状況。腕はあまり落ちておらず、ABCでD問題が解けるか解けないかというレベル。スキマ時間にJSを学習し始めた。ES6の仕様がわかっていないので体系的に学習中。AtCorder大会に週1で参加。400点問題までは解けるようになった。解けない時があるせいでなかなか緑色ランクになれない・・・。DDDの書籍「エヴァンス本」は読破は効率が悪いので中断。Ultimateの使い方。マルチカーソルを使いこなせるようになってきた思う。腱鞘炎は再発の心配なし。次の現場向けに何らかシステムを見せられる状態にしたかったが副業が開始したため一旦そちらに注力中。前々月〜前月にかけて書籍の学習に時間を費やしすぎており、手を動かす時間が少なかった。前月の後半からサンプルコードを作成に時間を費やす始めており、8月もJSやJavaのサンプルコード作成を行うようにする。Springに関して記事を書く。AWS・BitnamiのWordpressを使っているんですが、Let’sEncryptの更新が失敗したので更新手順をまとめます。ある日ブログを見たらHTTPS対応しているはずなのに鍵マークに黄色い△マークが・・・。この接続は安全ではありませんとの表示もされているのでLet’sEncryptのはじめての更新(3ヶ月毎更新)に失敗したのだろうと察し、直しました。手作業で更新をしてみると以下のエラーが発生。初回の発行コマンドでもダメ。前回こんなの発生した記憶ないけど何か変わったんでしょうか。こちらの手順通りでうまくいきました。Let’sEncryptをキレイに再インストールしたかったのですが、既存のLet’sEncryptがインストールされた場所からの削除・今のドメインの失効コマンドは諦め(上記と同様のエラーが発生するため)。汚いですが完了とします。2019JSUG勉強会2019その7ビズリーチにおけるSpringの活用に参加したビズリーチ社内で実施されたJSUG勉強会に参加してきたのでまとめを書きました。クラウド時代だからspring-retryフレームワーク。クラウド時代だからspring-retryフレームワーク。(株式会社ビズリーチ)による発表でした。5月に続き、AtCorderとDDDに力を入れた。AtCorderについてはABCでD問題までは普通に解けるようになってきた。競技プログラミングらしくDPが結構できるようになってきたのは実力がついてきたと実感している。DDDについては副業として仕事を頂くことになったため、実践で学ぶ形になった。新規開発であり、SpringBoot最新バージョンを採用している。ツール類もメインで入っている職場と異なる点が多く、キャッチアップに時間がかかっている。AtCorder大会に週1で参加。DDDの書籍「エヴァンス本」は読み終えない。GitHub上で複数人開発。Ultimateの使い方。腱鞘炎は椅子を変えたら調子よくなった。Springに関して記事を書く。以下セミナーに参加したので内容をまとめました。答えがあるわけではない。動いたから正解ではなく考察をすることが必要。オブジェクト指向より前に型がある。データの重要度が見えてくる。最近DDDの開発に入らせて頂いているが、設計に答えがあるわけではないという言葉は常に頭の片隅に置いておく必要がありそう。実際に何が答えかわからない中、これがベストと言えない状態で試行錯誤に時間がかかりすぎている。決まっていないことは仮の前提を立てるなど、一旦現時点でできるベストを選択し、スピード感を出すようにトライしていみる。プロダクトをハリボテとして作り上げて、そこから新たな視点で見ることもできると思うので、考えすぎて作業が遅くなりすぎないように注意しなければならない。教科書通りに進めるのではなく、早く少しだけ形にする。今の仕事ではプロダクトオーナーの理想を押し付けているなと思った。正解をプロダクトオーナーが持っているわけないし、協力して良いプロダクトを作るように意識を変えないといけない。重要な20%の見極め方。相対的に比べてどちらが重要かを比べる。50:50、25:25・・・。お客さんの事業におけるマーケットでのポジションで見極める。リーダーは他社が追いつかないようにする策に特化。ニッチャーは得意な点。Zoom参加は初めてでしたが、音声はやや聞こえにくかったです。後半はかなり聞き取りが厳しかった・・・無念。オブジェクト指向プログラミングにおける有名な原則であるSOLID原則についてまとめました。何番煎じかわかりませんが、自分の言葉で書いてみようと思います。クラスを変更する理由は複数存在してはならない。役割が複数ある場合、それぞれの役割が変更理由になり得る(責任=役割=変更する理由になる元)。具体的にはプロパティの管理やあるクラスのデータベース管理など。細かく分ければ良いわけではなく、クラス名が一言で添えられる程度の分割が良さそう。既存のコードに修正を加えないで済む手法。拡張に対してオープンであり、修正に対してクローズドである。言い換えると、振る舞い方を追加することで変更に対応することができ、その変更は既存の振舞には影響しないこと。方法論としては、呼び出し側が抽象を操作し、派生クラスの追加により変更を行う。基本クラスを使っている箇所では基本クラスの代わりに派生クラスを使っても動かなければならない。スーパークラスが吐き出さないExceptionをサブクラスが投げてはいけないなど、派生クラス固有のプログラムはNG。派生クラスは基本クラスより引数の条件が緩くなければならない。基本クラスが正の整数を受け付けるのに派生クラスが100以上の整数しか受け付けないのはNG。派生クラスは基本クラスより返り値の条件が厳しくなければならない。クライアントに、クライアントが利用しないメソッドへの依存を矯正してはならない。インタフェースを分離することで修正範囲が狭くなる。インタフェースの規模が大きくならないよう、異なる意味合いのメソッドはインタフェースを分ける。上位のモジュールは下位モジュールに依存してはならない、どちらも抽象に依存すべきである。下位モジュールを使用する箇所に直接型定義として記載するのではなく、上位モジュールとして振る舞えるように記載する。具体的には下位モジュールから抽出されたインタフェースを型として持ち下位モジュールは注入する形にする(定義自体を外に記載するDIが良さそう)。下位モジュールが上位モジュールの中で直接使用されている状態を「下位モジュールが上位モジュールに依存している」と言う。言葉こそ知らなかったものの、普段気にしている点ばかりでした。ソフトウェアに落とし込めているかは別の話だけど・・・。普段気にしていても改めて言葉で書いてみると難しいですね。自分の言葉で説明できるようにならないとと改めて思いました。デメテルの法則など、上記以外の法則・原則もあるようなので調べる必要ありです。2019Bulmaについて調べてみたBulmaを仕事で使うことになったのでさっくり概略を調べてみました。オフィシャルサイトによると以下の通り。OSSのCSSフレームワークで。Flexboxをベースにしているようです。モバイルファーストのレスポンシブデザイン。モジュールとして組み合わせて使うことができるようです。Moduleといいます。名前の通り、フレキシブルなレイアウトを簡単に実現する仕組みで、親Box・子Boxにより構成されます。小要素のBoxを横並びで表示し、親要素と小要素の横幅に応じて自動的に折り返して次の行に表示するなど、閲覧するブラウザ・端末に応じて見やすいレイアウトを自動的に生成します。ちなみにGridレイアウトと混同しがちですが、Flexboxは1次元レイアウト、Gridは2次元レイアウトです。AtCorderとDDDに夢中になった月だった。何かしらのシステムを構築して公開したい気持ちはあるが、サンプルの作成やお手本コードとの照らし合わせなど、基礎力を高めることをまず行っている。今年は基礎力を高めることが第一目標でもあるため当分継続する予定。AtCorderは自分の実力不足を知る良い機会だった(心が折れないように頑張ろう・・・)。研修に参加し、他のエンジニアの関心が何に向いているのか知る良い機会になった。Rubyのチェリー本読み終えた。一通りRubyは読めるようになったと思う。AtCorder大会(ABC)に2回参加。AtCorderが難しい。数学要素と効果的な計算方法の選定がネック。ABCの過去問A、BはRubyに慣れるために多数解いた。腱鞘炎が再発してしまい治らない。AtCorderのC、D問題の過去問を解く。