投稿

MacでのPlantUMLを使ったアクティビティ図の書き方あれこれ①

イメージ
アクティビティ図について アクティビティ図とは何ぞや? それでそれで?どうやって記述するの? 導入 実行環境 導入要素 JDK graphviz PlantUML VSCode 実例 アクティビティ図について UMLでアクティビティ図を書く機会があったので復習がてら基本的な流れをメモしておこうと思い、例で考えながら各構成要素について書き残しておこうと思います。 アクティビティ図とは何ぞや? 処理と処理の順番を表現するために作られた表記法で、具体的な業務の流れを各人で共有し、足りないものはないか、もしくは余分な構成要素が存在しないかをお互いに認知するきっかけともなりうるので多くの開発現場で導入されています。 アルゴリズムなどの考え方もこのアクティビティ図で表現されることが多く、抽象的な流れを具体的なものに落とし込むことはITエンジニアとして重要な能力の一つでしょう。 それでそれで?どうやって記述するの? 今回は PlantUML を使って記述します。 公式サイトに記述がある通り、 PlantUML は、以下のようなダイアグラムを素早く作成するためのコンポーネントです。 シーケンス図 ユースケース図 クラス図 アクティビティ図 ( 古い文法はこちら ) コンポーネント図 状態遷移図(ステートマシン図) オブジェクト図 配置図 タイミング図 以下のような、UML以外の図もサポートしてます。 ワイヤーフレーム アーキテクチャ図 仕様及び記述言語 (SDL) Ditaa ガントチャート マインドマップ WBS図(作業分解図) AsciiMath や JLaTeXMath による、数学的記法 ER図 引用: https://plantuml.com/ja/ とある通り、様々な設計図やフロー図を素早く書けることから多くの人に使われています。 コードっぽく書けるというのが非常にありがたい点で、最初は特有の文法に慣れるのに時間がかかるかもしれませんが、慣れてしまえば非常に手早く書くことができるようになります。 導入 今回はVSCodeで使います。 環境的には以下を導入しましょう。 実行環境 OSX Catalina 10.15.7 Homebrew 2

LPIC Level1のためにVagrant+VirtualboxでUbuntuを仮想環境として構築した手順。

イメージ
今更ながら そもそもこれらは何? Virtualbox Virtualboxって何? 使うメリットはあるの? Vagrant Vagrantって何? それは分かった。何のメリットがあるの?Virtualboxだけで良くない? 環境構築 環境 VirtualBox Vagrant 今更ながら LPIC面白そうだし受けてみるか!ということでひとまず、 1週間でLPICの基礎が学べる本 第3版 徹底攻略シリーズ を読んで、 Linux教科書 LPICレベル1 Version5.0対応 で出題範囲のインプットをしながら ping-t の問題を解いている最中です。 まぁ問題を暗記して解けるようにはなりそうだけど、少し問題の構造を変えられたら解けなくなりそうだし、動かさずに覚えるのは難しそうだと感じたので動かそう!という目的で構築しました。 何かしら前例があるだろうと思って検索してみると、以下のような動画で実際に同じような環境でCentOSを動かしていたので、Ubuntuを動かす場合の環境構築をしてみました。 新入社員研修のプロが伝授!LPIC-1学習ポイント そもそもこれらは何? Virtualbox Virtualboxって何? Oracleが管理しているOSSの仮想環境を構築するためのソフトです。 使うメリットはあるの? じゃあ仮想環境を作ると何が嬉しいの?という疑問が生まれると思いますが、一つのOSの上で複数のOSを取り扱うことができるようになる、というものが一般的でしょう。 例えば、多くの場合、本番環境と開発環境は異なります。 必要なパッケージやOSによる差異など異なる要素は様々ですが、これらを実際にローカルの開発環境で動かしたい、となった時に使うものです。 また、仮想環境で何か致命的なミスを起こしたとしても、その環境が元のOSに影響を及ぼしたりすることはありません。 これらのメリットを享受するために仮想化が使われています。 Vagrant Vagrantって何? VMWareやVirtualboxとかの仮想化ソフトの操作を、代行してくれるソフトです。 今回はこれを使って構築することで本来必要なOS(Ubuntuのイメージのダウンロードなど)の操作をVagrantを通し

「Elements of Programming Interviews in Python」を買ってパラパラっと読んだ話

イメージ
Elements of Programming Interviews in Python C++とかJavaとかで解説をしている本はあったけどPythonで解説している本はなかったので5000円ちょい出して本を買ってみた。 この本は以下の記事でたまたま知ったのだが、 【21新卒SWE】 私はこうしてGoogleに落ちた ~Googleに挑んだ120日~ 個人的にPythonを使ってLeetCodeを解いていた時期があったので読んでおいて損はないのだろうと思い、本にしては高いが楽しく時間が潰せそうだったので海外から取り寄せた。(上の記事の人のスペックが高すぎて初めて読んだ時に驚いた) もちろん英語なのでパラパラっと読むのにも時間はかかったけども、ざっと読んで見た感じアルゴリズムとデータ構造だけではなくてPythonの言語的な仕様について触れていたり、オブジェクト指向はなんぞやとかシステムデザインについてだったりとかこれ一冊を読んで場数を踏めば面接の通過率がかなり上がりそうな感じ。 今の所そういう面接とかを受けたりする予定はないけど、将来どうなるかなんて分からないし、何より面接で必要とされるということはITエンジニアとして知っておいておかないとまずいということだから格闘しながら詳細まで読んでいくべきなのかなー、と思いました。 それにしても、今の段階でもあー、Pythonでコーディング面接受けるならこれ読んどけば大丈夫そうだなって感じがするくらいデカくて分厚い。 もちろん面接に臨む以上、問題との相性の運とか募集しているポジションに合う人材とかその他諸々の要素はあるんだろうけども、僕はその場の機転が効くタイプではないのでコツコツ勉強して地道に実力を伸ばしていくしかない。 コツコツ読んでハマりそうな部分をメモって直前に思い出すだけでも全然違うし、何より業務、もしくは趣味で触ったことがあっても僕の劇弱記憶装置では覚えていても正確に説明できるか分からないので、そう言った所で自信を持って臨めるようにするためにも頑張ろ〜って感じで! あ、ちなみにPythonを書いて競技プログラミングとかやられてる人にも良い本だとは思うのですが、英語の壁、そして日本語の本( Pythonで学ぶアルゴリズムとデータ構造 (データサイエンス入門シリーズ )  )とかで十分だと思うのでそういった所に不安を感

Udemyの「React - The Complete Guide (incl Hooks, React Router, Redux)」に入門した話。

Reactがやりたい・・・ということでええ感じに解説してくれそうな本をパラパラ読んでいたけどやはり目に見えて動くものが作りたいなぁということでUdemyの React - The Complete Guide (incl Hooks, React Router, Redux) に入門した。 海外の講義の方がレビューが多くて競争率高くなってよりいい講座が多いと聞いているし、こういう所で英語を聴きならしておくとより良さげだったのでとりあえずReactで検索に引っかかったええ感じのコースをチョイスした、というのが大体の流れです。 テンション高くてええ感じなのでなかなかに楽しく続けられそう(今は1章が終わったところなので何とも言えないが。) 動画形式とは言えきっちり手を動かせるのは嬉しい。 フロントエンドの知識弱弱マンなのでこういう形式でキャッチアップできると楽しい仕事も増えそうではあるので頑張りたいなぁ。

Courseraの「Object Oriented Programming in Java」を修了した話。

イメージ
移動時間とか有給取得とかで時間ができたので一気に終わらせました。 個人的に気になる部分についてはまぁまぁ触れられた感じで、Javaの知識がない人でも基本的な参照渡しやスコープから教えてくれるし、オブジェクト指向の大切な要素(ポリモーフィズムとか)をしっかりコードを書いたりして弄くり回す、という自分にとってはそこそこ有意義な講義だった。 あとアルゴリズムとデータ構造、ソートあたりも最後の方で触れたり。 ただ、Javaアプレットを使って試さなければならないので、Javaのバージョンを合わせたりしなければならないことはそこに関しては正直どうなんだ、という感じはしました。 あとEclipseを入れたけどやっぱりそこまで好きではない、VSCodeの方が好き。 知識レベルも少しはあったし、一応時間もお金もかかるものなので、もし同じ状況になったとして、もう一回受けるかというと微妙・・・ではあるが、オブジェクト指向ってなんやねん、全然分からん、という基礎を固めたい人には時間を取って学ぶ価値はアリかと。 この手の講義はどうしても受け始めてから終わるまで出来が難しいので、むやみやたらに取るのはいかがなものかと感じた。本みたいに最初からパラっと読んであ、良さそうとかって感じにはならないし。 次に勉強したい要素としては、 Linux(LPICあたりを目処に勉強) React(ナウでヤングなの勉強したい) アルゴリズムとデータ構造( Elements of Programming Interviews in Python: The Insiders' Guide を買ったので届き次第読んだり書いたり) オンライン英会話(3ヶ月続いたら何か自分にプレゼントしよう) といった所で、まだまだ興味が尽きなくてモチベが高いのでサクサクっと趣味で本を読んだり、作っていければなぁと思っている今日この頃。

オンライン英会話を始めて1ヶ月と少し経った

イメージ
はい。 レアジョブを始めて1日を除いて毎日、それを1ヶ月と少し続けられているので、ちゃんと続いていることを実感するためにもしっかりとアウトプットしておきます。 これだけ見るとすごい時間になってそうですけど、時間に換算するとたったの20時間。1回25分というのはやりやすさもあるが、同時にそこまで学習時間が伸びないという弊害もあるんだなぁということを実感しました。 最近のマイルールで必ず1時間/日は英語に触れる時間を作るために試行錯誤していて、主な教材はレアジョブ、Coursera、Amazonプライム、 英会話1000本ノック(ビジネス編) Kindle版 って感じでローテションしていて、AmazonプライムビデオはSUITS、シリコンバレー、アップロードとかを何回も見返して聞き取れるように頑張っている感じ。 SUITSは大人の英語、シリコンバレーは大人になりきれないITエンジニアの日常、アップロードはその中間、みたいな感じで気軽に触れられる、楽しい教材なのが良い。 気の向いた時に気軽に見れるようにiPhoneにダウンロードしていて、移動時間とかにスパッと1話分見るだけでも30分近く英語に触れていることに換算できるのでかなり楽な反面、実際にはそこまで考えなくても進むし、英語を正しく聴けているかをチェックしようと思うとなかなかに集中力がいるのが難点。 英会話1000本ノック(ビジネス編) Kindle版 は便利なフレーズを丸暗記してそのフレーズを使い倒そうという感じでとにかく楽をしたい僕にはとても合っている。 いい感じに細かくセクションに切って気が向いた時にチェックしたりしているが、最近少しサボり気味なのでどこかでしっかりやりこみたいが・・・ うーん、なかなかむずかしい。 オンライン英会話は基本的な日常英会話を勉強できていいなぁ、と思いつつも、会社の補助とかを使えば対面でのビジネス英会話を安く済ませられるらしい。 が、調べてみたけどそれでも高くてなかなか躊躇する金額だったのでひとまず保留中。 流石にオンライン英会話が安すぎる弊害なのかな、感覚が麻痺している気が。 基本的なレベルを上げてどこかで切り替えるのが良いのかも。 ひとまず3ヶ月はレアジョブ続けてまたその時考える感じで継続していこうかな。

Courseraのオンラインコースの二週目を終えて

Courseraの「Object Oriented Programming in Java」を始めた話。 という内容で以前投稿していた通り、このコースを続けています。 内容的には比較的軽めのJavaの言語仕様(Eclipseの環境設定、オブジェクト指向、スコープなどの)ところを触っている段階から、徐々にGUIのソフトウェア(Javaアプレット)を開発するための内容へとシフトしてきている感じ。 今週から三週目なのですが、コードを書く機会が多くなってきそうなので時間はかかりそうです。 ただ、言語仕様とかは少し退屈な部分もあったのでコードを書くのが楽しみです。 所々UCSDの学生さんが議論したり、Googleのソフトウェアエンジニアからのメッセージがあったりモチベーションを上手く保つための工夫がそこかしこに散りばめられている印象です。 楽しく学べているうちにサクサクっと終わらせてしまった方が、お財布的にも学習曲線的にも優しいと思うので今のうちにこのペースで終わらせたい感じ。 あ、そういえば久しぶりにQiitaに記事を投稿しました。 「 社内システムを開発する際にAPIを使う、という選択肢を考える 」、 というテーマで書いてみたのですが、少しまとまりのない文章になってしまったのでどこかでガッツリ手直しをしたい感じ。 後、設計についての内容は全く触れていないのでそれはそれで別に記事を書こうかと。 もっといえばReact.jsとDjango REST Frameworkあたりを使ってそれっぽいシステムを試しに作ってみて、それについての記事も書けるとより理解が深まりそう。 ということで1週間くらいかけてまったり書いていこうかと思います。 今回はこんな感じ。 今週も1週間がんばろ〜。