Swaggerに触れる
最近記事を書いていないことに気づいて慌てて書く。
「何だこのyaml?」から
業務で他プロジェクトのドキュメントをあさっていたところ、ExcelやWordのドキュメントを期待していたのに.yamlのファイルを2~3個発見。
どうやらAPIの定義が書いてあるようだが、テキストエディタで開いたままだと何が書いてあるのかさっぱりわからない。
で、担当の方に聞いたところ、Swaggerを使用して書いたものだという。
Swagger Editorを使ってファイルを開くと、なんかいい感じのドキュメントに見える!ナニコレー!
ということで、軽く調べて記事にする。
OpenAPIというもの
APIを記述したり文書化するためのオープンソースの書式だそうで。
もともとはSwagger仕様だったものが、OpenAPIとなり最新バージョンは3.0.0。
定義の記述はJSONまたはYAMLで記述可能。
おすすめはYAMLとのこと。
そもそもYAMLがよくわからん
Spring の教材の、設定ファイル関連の説明で見たけどそもそもどういうものなの?
ということで。
説明は上記リンクにあったのでざっくりと読んだ。
「"」とかそもそも書かずに済むやつなんですね。
業務で見たファイルは結構「"」入ってたなあ。
JSONやXMLと比較して読みやすいし、コメントも書けるしシンプル!ということのよう。
分量が少ないけど、今日はここまで。
学習したいこと、考えをまとめておきたいこと
開発環境について
Vagrant + Elasticsearchのローカル環境構築の手順ができたのと同時に、業務にてElasticsearchのSSL対応(HTTPS接続)の設定を完了。 あと、Elasticdumpの使用方法を理解して、実際に動作の方法についてメンバーに展開した。 ちょうどよくKindle Unilimitedの対象にこいつ↓が。
内容的にちょっと古いけど、バージョンは業務で使用しているものと一致するのでデータ構造の理解にかなり助かった。 クエリはSQLのようにはまだ自分で書けないけど。 ドキュメント、ドキュメントタイプ、インデックス……、など構造を書籍で理解したおかげで、先ほど書いたElasticdumpで取り込もうとしているデータがどんなものなのかの理解に役立った。
今回の業務で作るアプリの環境をまるっと作れるように用意はしておきたい。
AWSによるサーバーレスアプリ開発について
これも業務、というか課題?でやることになったもの。 業務ではないので厳しくはないが、未知のもの過ぎて手が止まる止まる。 また、スクラム開発でこれを行うものだから、自分の振舞い方からわからなくなってしまい戸惑っている現状。 モブプログラミングなのに自分主導で自分でがつがつ作ってしまっている。。。よくない。。。
とにかくAWSがわからなすぎるのでプライベートでAWSアカウントを取得。 無理のない範囲でいろいろ触ってみることにする。
会社の研修でAWSの研修受けたけど、意味が分からな過ぎて全然役に立ってないという悲しみ。
DDDについて
興味本位。 とりあえずもちこちゃん↓購入。 物理本で欲しかったんだけどなあ。 個人で出しているものだから入荷する期待はできなかったので、とりあえず電子書籍で購入。 暇なときに読むことにする。 物理本出たらお布施として買おう。
テストソースを書いて行う単体テストを定着させる活動
意識しないとたぶん全然現場に定着しない、というかそもそもやろうとすらしない。 よくない。 次回の開発から導入しましょうよと持ち掛けるも、いきなり導入して失敗したら困るから小さな改修から導入しましょうよと言われてしまった。 小さな改修、いつどこであるんでしょうか。 毎回そこそこ大改修じゃないですか。
正直、テストを書く意識のないソースの改修でテストケースを書くよりも、 最初からテストケースを書くつもりで一から作ったソースに対してテストを書くほうが万倍楽なんですよ。
ということで自分の意見を通して安心してテストを書くプロジェクト・チームにしたいのでそのためのプレゼンをします。
プレゼンに向けて整理すべき、やるべきこと。
- 各テスト段階におけるやるべきことの整理
- 改修ソースにテストを書くつらさと新規作成ソースにテストを書く気楽さの具体的な比較
- じゃあどう書けばいいのさ→実例としてアプリを作成し、Githubにて公開
マジで今後の修正スピードの向上のため、急ぎ取り組んでいくことにする。
Vagrantで作成した環境 + Elasticsearch + Kibanaのインストールと実行
作業環境について
- ホストOS: Windows 10 Home
- ゲストOS: Cent OS7
- Vagrant 2.2.18
- VirtualBox 6.0.18
インストール済のbox
>vagrant box list bento/centos-7.2 (virtualbox, 2.3.1) bento/centos-7.8 (virtualbox, 202010.22.0) centos/7 (virtualbox, 2004.01)
プラグインのリスト
>vagrant plugin list vagrant-hostmanager (1.8.9, global) - Version Constraint: > 0 vagrant-omnibus (1.5.0, global) - Version Constraint: > 0 vagrant-vbguest (0.30.0, global) - Version Constraint: > 0
Vagrantfileの作成
>vagrant init centos/7 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. >fc /n Vagrantfile_org Vagrantfile ファイル Vagrantfile_org と VAGRANTFILE を比較しています ***** Vagrantfile_org 8: Vagrant.configure("2") do |config| 9: # The most common configuration options are documented and commented below. ***** VAGRANTFILE 8: Vagrant.configure("2") do |config| 9: if Vagrant.has_plugin?("vagrant-vbguest") 10: config.vbguest.auto_update = false 11: end 12: # The most common configuration options are documented and commented below. ***** ***** Vagrantfile_org 26: # config.vm.network "forwarded_port", guest: 80, host: 8080 27: ***** VAGRANTFILE 29: # config.vm.network "forwarded_port", guest: 80, host: 8080 30: config.vm.network "forwarded_port", guest: 22, host: 2222, id: "ssh" 31: ***** ***** Vagrantfile_org 31: # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" 32: ***** VAGRANTFILE 35: # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" 36: config.vm.network "forwarded_port", guest: 9200, host: 19200, host_ip: "127.0.0.1" 37: config.vm.network "forwarded_port", guest: 5601, host: 15601, host_ip: "127.0.0.1" 38: *****
vagrant up
の実行
>vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'centos/7'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'centos/7' version '2004.01' is up to date... ==> default: Setting the name of the VM: elasticsearch_default_1634821269779_88784 ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) default: 9200 (guest) => 19200 (host) (adapter 1) default: 5601 (guest) => 15601 (host) (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if it's present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: No guest additions were detected on the base box for this VM! Guest default: additions are required for forwarded ports, shared folders, host only default: networking, and more. If SSH fails on this machine, please install default: the guest additions and repackage the box to continue. default: default: This is not an error message; everything may continue to work properly, default: in which case you may ignore this message. ==> default: Rsyncing folder: /cygdrive/c/Users/kamin/work/VagrantBase/elasticsearch/ => /vagrant
Tera Termマクロ
; Vagrant macro ; 「vagrant ssh-config」で確認 ; this file path getdir dir ; port port=2222 ; private keyを指定します。上で取得したIdentityFileの値に書き換えます。 keyfile='C:/Users/kashibuchi/work/VagrantBase/elasticsearch/.vagrant/machines/default/virtualbox/private_key' sprintf2 constr 'localhost:%d /ssh /2 /auth=publickey /user=vagrant /keyfile=%s' port keyfile connect constr
vagrantユーザでログイン後、諸々のインストール
参考
Elasticsearch + Kibana + LogstashをCentOS7にインストールしてみた - Qiita
コマンド
[vagrant@localhost ~]$ sudo yum install -y https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm ・・・略・・・ Complete! [vagrant@localhost ~]$ [vagrant@localhost ~]$ [vagrant@localhost ~]$ sudo yum install -y vim Loaded plugins: fastestmirror Determining fastest mirrors ・・・略・・・ Complete! [vagrant@localhost ~]$ [vagrant@localhost ~]$ sudo yum install -y curl Loaded plugins: fastestmirror ・・・略・・・ Complete! [vagrant@localhost ~]$ [vagrant@localhost ~]$ [vagrant@localhost ~]$ sudo vim /etc/yum.repos.d/elasticsearch.repo [vagrant@localhost ~]$ cat /etc/yum.repos.d/elasticsearch.repo [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md [vagrant@localhost ~]$ sudo yum install -y elasticsearch-6.8.3 Loaded plugins: fastestmirror ・・・略・・・ Complete! [vagrant@localhost ~]$ [vagrant@localhost ~]$ [vagrant@localhost ~]$ sudo yum install -y kibana Loaded plugins: fastestmirror ・・・略・・・ Complete! [vagrant@localhost ~]$ [vagrant@localhost ~]$ sudo vi /etc/elasticsearch/elasticsearch.yml # network.host: 0.0.0.0 ← 追加 [vagrant@localhost ~]$ sudo vi /etc/kibana/kibana.yml # server.host: "0.0.0.0" ← 追加 [vagrant@localhost ~]$ sudo systemctl start firewalld [vagrant@localhost ~]$ sudo firewall-cmd --add-port=5601/tcp --zone=public --permanent success [vagrant@localhost ~]$ sudo firewall-cmd --add-port=9200/tcp --zone=public --permanent success [vagrant@localhost ~]$ sudo firewall-cmd --add-service=ssh --zone=public --permanent Warning: ALREADY_ENABLED: ssh success [vagrant@localhost ~]$ sudo firewall-cmd --reload success [vagrant@localhost ~]$ [vagrant@localhost ~]$ systemctl daemon-reload # 正直うっかりsudoでやらなかった ==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon === Authentication is required to reload the systemd state. Authenticating as: root Password: ==== AUTHENTICATION COMPLETE === [vagrant@localhost ~]$ [vagrant@localhost ~]$ sudo systemctl restart elasticsearch kibana [vagrant@localhost ~]$ [vagrant@localhost ~]$ sudo systemctl enable elasticsearch kibana Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service. Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /etc/systemd/system/kibana.service. [vagrant@localhost ~]$ [vagrant@localhost ~]$ curl http://localhost:9200 { "name" : "iNfHYdH", "cluster_name" : "elasticsearch", "cluster_uuid" : "vuyKU4CfQgOZoIFPgbexCA", "version" : { "number" : "6.8.3", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "0c48c0e", "build_date" : "2019-08-29T19:05:24.312154Z", "build_snapshot" : false, "lucene_version" : "7.7.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" } [vagrant@localhost ~]$ curl http://localhost:5601 # ブラウザからリダイレクト?されてちゃんとしたページが参照できる\(なお、日本語化は7.0以降の為、できなかった\) [vagrant@localhost ~]$
ブラウザでの確認
まとめ
とりあえずできた。 Firewalldを設定しないと接続できないのはちょっと辛いなと。 過去にそこそこがっつり調べたんだけどなー。覚えていないなFirewalldは。
業務で作業するならたぶんプロキシ環境なので、 - Vagrantのplugin - Vagrantfile - yumの設定ファイル ↑この辺のプロキシ設定をすればいいのかな。
Vgarnt up がうまくいかない
↑そのまま実行。なるほど。
>vagrant up ・・・略・・・ * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp No package kernel-devel-3.10.0-1127.el7.x86_64 available. Error: Nothing to do ==> default: Checking for guest additions in VM... default: No guest additions were detected on the base box for this VM! Guest default: additions are required for forwarded ports, shared folders, host only default: networking, and more. If SSH fails on this machine, please install default: the guest additions and repackage the box to continue. default: default: This is not an error message; everything may continue to work properly, default: in which case you may ignore this message. The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed! yum install -y kernel-devel-`uname -r` Stdout from the command: Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp No package kernel-devel-3.10.0-1127.el7.x86_64 available. Stderr from the command: Error: Nothing to do >vagrant ssh $ sudo yum update kernel* Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp Resolving Dependencies --> Running transaction check ---> Package kernel.x86_64 0:3.10.0-1160.45.1.el7 will be installed ---> Package kernel-tools.x86_64 0:3.10.0-1127.el7 will be updated ---> Package kernel-tools.x86_64 0:3.10.0-1160.45.1.el7 will be an update ---> Package kernel-tools-libs.x86_64 0:3.10.0-1127.el7 will be updated ---> Package kernel-tools-libs.x86_64 0:3.10.0-1160.45.1.el7 will be an update --> Finished Dependency Resolution Dependencies Resolved ===================================================================================================================== Package Arch Version Repository Size ===================================================================================================================== Installing: kernel x86_64 3.10.0-1160.45.1.el7 updates 50 M Updating: kernel-tools x86_64 3.10.0-1160.45.1.el7 updates 8.2 M kernel-tools-libs x86_64 3.10.0-1160.45.1.el7 updates 8.0 M Transaction Summary ===================================================================================================================== Install 1 Package Upgrade 2 Packages Total download size: 67 M Is this ok [y/d/N]: y Downloading packages: No Presto metadata available for updates (1/3): kernel-tools-3.10.0-1160.45.1.el7.x86_64.rpm | 8.2 MB 00:00:03 (2/3): kernel-tools-libs-3.10.0-1160.45.1.el7.x86_64.rpm | 8.0 MB 00:00:03 (3/3): kernel-3.10.0-1160.45.1.el7.x86_64.rpm | 50 MB 00:00:10 --------------------------------------------------------------------------------------------------------------------- Total 6.4 MB/s | 67 MB 00:00:10 Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : kernel-tools-libs-3.10.0-1160.45.1.el7.x86_64 1/5 Updating : kernel-tools-3.10.0-1160.45.1.el7.x86_64 2/5 Installing : kernel-3.10.0-1160.45.1.el7.x86_64 3/5 Cleanup : kernel-tools-3.10.0-1127.el7.x86_64 4/5 Cleanup : kernel-tools-libs-3.10.0-1127.el7.x86_64 5/5 Verifying : kernel-3.10.0-1160.45.1.el7.x86_64 1/5 Verifying : kernel-tools-libs-3.10.0-1160.45.1.el7.x86_64 2/5 Verifying : kernel-tools-3.10.0-1160.45.1.el7.x86_64 3/5 Verifying : kernel-tools-libs-3.10.0-1127.el7.x86_64 4/5 Verifying : kernel-tools-3.10.0-1127.el7.x86_64 5/5 Installed: kernel.x86_64 0:3.10.0-1160.45.1.el7 Updated: kernel-tools.x86_64 0:3.10.0-1160.45.1.el7 kernel-tools-libs.x86_64 0:3.10.0-1160.45.1.el7 Complete! $exit >vagrant reload --provision ・・・すごく長い標準出力・・・ 3.10.0-1160.45.1.el7.x86_64. Redirecting to /bin/systemctl start vboxadd.service Redirecting to /bin/systemctl start vboxadd-service.service Unmounting Virtualbox Guest Additions ISO from: /mnt ==> default: Checking for guest additions in VM... ==> default: Rsyncing folder: /cygdrive/c/Users/kamin/work/VagrantBase/centOsPrototype/ => /vagrant >
で、終わり。 なるほどなー。
ついでに色々入れた
>vagrant ssh $ echo vagrant | sudo yum install -y https://corretto.aws/downloads/latest/amazon-corretto-11-x64-linux-jdk.rpm $ sudo yum install -y vim
$ sudo vim /etc/yum.repos.d/elasticsearch.repo
で編集
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
でやってみる
$ sudo yum install -y elasticsearch-6.8.3 ・・・略・・・ Running transaction check Running transaction test Transaction test succeeded Running transaction Creating elasticsearch group... OK Creating elasticsearch user... OK Installing : elasticsearch-6.8.3-1.noarch 1/1 ### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service ### You can start elasticsearch service by executing sudo systemctl start elasticsearch.service Created elasticsearch keystore in /etc/elasticsearch Verifying : elasticsearch-6.8.3-1.noarch 1/1 Installed: elasticsearch.noarch 0:6.8.3-1 Complete!
いけた! わーい。
HTML・CSS学習記録
考えてみたら全然プログラミングじゃないので今日から改題。
↑完了。 sectionタグとか知らなかったのでやってよかった。 次はCSSやって、Bootstrapをやって……画面関連は一通りおさらいしたいな。