見出し画像

具体と抽象

みなさん、ごきげんよう!

現在、新卒1年目でシステムエンジニアとして働いてる中で、
「これは自分の課題かもなあ」
と思うことがありました。
今日はそれに関するお話をしてみようと思います。

まず前提として、私はPostgreSQLと呼ばれるデータベースシステムの、サポートエンジニアとして業務を行っております。正確には、まだ実際の問い合わせ対応業務には従事しておらず、PostgreSQLの機能や内部構造を勉強中といった感じです。

前提の前提として、そもそも、データベースってなんぞやー!っていう話も少ししてみます。

データベースは、大雑把に言うと「データを入れておくための箱」をイメージしてもらうといいかもしれません。
みなさんが普段よく使うSNSもデータベースが必要不可欠です。
例えば、X(Twitter)。
私が、「おはよう」という投稿をした時に、XのシステムはXが使っているデータベースの中に、「おはよう」という文字列とそれを打った時の時間などを情報として格納します。
細かい話をすると、多分、文字列とそれを打った時間情報以外にも、文字列の情報からそれがどういう内容なのか(嬉しい話、悲しい話など)を表すパラメータが入っていたりするのではないかと予測してます。それらを駆使して、X側が僕たちユーザーにおすすめの投稿を見せたり見せなかったり、、、
そういったいろんなデータを格納しておくのが、データベースの役割です。

PostgreSQLは、そんなデータベースシステムの一種なのですが、そのPostgreSQLのサポートエンジニアをする以上、PostgreSQLのドキュメントというものを見る必要が出てきます。
ドキュメントというのは、いわゆる公式の説明書みたいなものですね。
なんでドキュメントを見る必要があるかというと、Webにはいろんな情報があり、ドキュメントより分かりやすく書かれている記事などもたくさんあるのですが、それらの記事は2次情報以降の情報でしかなく、誤った情報を含む可能性があるからです。

例えば、Aという友達とBという友達がいて、Aが足を怪我したとします。
Aからは、そのことについて、
「足を捻挫したんだよね、全治二週間くらいだって」
という話を聞きました。これは1次情報です。
一方、Bという友達は話を大袈裟に盛る癖があるとします。
Bから、
「Aが足怪我したって!めっちゃ重症らしいよ!全治2ヶ月かもしれん」
と自分に伝えられたとします。このBからの情報がいわゆる2次情報ですね。
このケースは少し極端な例かもしれませんが。

2次情報の弊害(1次情報の大切さ)を話しましたが、1次情報であるドキュメントって正直読みにくいことが多いんですよね(汗)
まあ、だからわざわざ解説してくれる記事などがあるのですが、、、

ひとつ、PostgreSQLのドキュメントから例を出してみようと思います。

max_wal_size (integer)
自動WALチェックポイントの間にWALが増加する最大サイズです。 これはソフトリミットです。特別な状況下、たとえば高負荷、archive_commandの失敗、wal_keep_segmentsが大きな値に設定されている、などの時には、WALサイズはmax_wal_sizeを超えることがあります。 デフォルトは1GBです。 このパラメータを大きくすると、クラッシュリカバリに必要な時間が長くなります。 このパラメータは、postgresql.confファイルで設定するか、サーバのコマンドラインでのみ指定できます。

https://www.postgresql.jp/document/11/html/runtime-config-wal.html

これを見たほぼ全員がポカーンとなるのが目に浮かびます。
前提知識が全くないから、そりゃそうです。
私も最初、んーー????となりました。
詳しい説明は省きますが、これはPostgreSQLのWALという機能に関する、ある一つの設定項目に関する説明になります。
割とPostgreSQLを勉強したつもりになっている僕が読んでも、
「ソフトリミットってどういうこと?」
「高負荷って具体的にどういうケース?」
「wal_keep_segmentsって何だっけ?」
など、単語の意味であったり、その文章から具体的なイメージが全然想像できなくて、

わっかんね

となりました。
ですが、優秀な先輩に丁寧に説明してもらって初めて理解することができました。

ここで、優秀な先輩(Kさんとします)が出てきましたが、
「何でKさんはこんなにちゃんと理解できて、人にも分かりやすく説明できるんだろう?」
という疑問が出てきました。
もちろん、先輩は経験を積んで知識を蓄えていますが、それを差し置いても、何かが優れているからなのではないか?という仮説のようなものを立てられる気がします。

ひとつ思い浮かんだのは、理解力(読解力)です。

<読解力>
文章を読んで、その内容理解する能力。

https://dictionary.goo.ne.jp/word/%E8%AA%AD%E8%A7%A3%E5%8A%9B/

意味としては、読んで字の如くです。
ですが、今回はそれをもっと別の表現で表すことで、自分の知恵とすることに挑戦してみようと思います。

さて、前述のmax_wal_sizeの説明を見て、先輩はちゃんとその意味を理解し、自分の言葉として私に分かりやすいように表現することができていました。
「文章の意味を理解する」という点で、先輩は、max_wal_sizeの件でいえば、その設定項目がどういう状況を想定して、どのような値に設定されるべきであるのかを理解できていると言えるでしょう。
対して、僕の場合は、日本語の文章としては読めるのだけれど、それが言わんとしていることを丁寧に理解できていないと言えます。
また、「自分の言葉で説明できている」という点で、先輩は、頭に浮かんでいる具体的なケースを、私でもイメージしやすい解像度で説明していることができていると言えます。
そう思うと、

その単語や文章が意味することを、できる限り具体的なイメージとして頭に思い浮かべることができるか

が重要な気がします。

もしかしたら、言葉というものは、その具体的なイメージの抽象概念になるのかもしれません。
確かに、言葉よりもそのイメージの方が情報量が多いと思います。
事実、ITの世界で考えると、言葉という文字列はtxtファイルに書けることができますが(1文字だけだったら数バイトで足りる?)、イメージという画像ファイルは、文字列なんかよりもはるかに大きな情報量(画質によるがスマホの写真でも数メガバイト)になります。

ということは、具体と抽象の行き来の幅を広げることが今後の課題なんじゃないかなあと考えました!


この文章を書き始めるときは、「何か課題がある気がする〜」くらいの感覚でしたが、文章にすることで課題が明確になった気がします。

まだまだ新卒1年目で勉強することが山ほどありますが、ひとつずつ自分の血肉となるように励んでいきたいと思います!

何か今回の記事で感想・コメントあれば、ぜひコメントいただけると幸いです!

というわけで、今回はこの辺にしようと思います。
また、書きたくなったら気ままに書いていきますね〜。

それでは!


この記事が参加している募集

仕事について話そう

この記事が気に入ったらサポートをしてみませんか?