技術の棚卸

技術の棚卸とは 技術の棚卸をしたほうがいいといわれた。技術の棚卸とは、 属人化してしまっている技術、不明瞭になっている技術を可視化するプロセスを指す。適切に技術の棚卸がされていないと、開発した技術が有効活用されていない、技術が整理されていないために、商品化へ至らないなど、技術マネジメントの機能不全を引き起こしてしまう。 確かに、自分はCSについて、知識を広げすぎている。さらにその知識について、自分の中でちゃんと消化しきれていないと感じることも多い。突出した部分がないといわれても仕方がないのはわかる。しかし、やっぱり全部を知っているってのは強みでもあると思う。例えば、クルマを作るにしても、クルマの各パーツがどのように組み合わさって動いているのかを全部理解した方が良い。これにより、例えばエンジンの開発をするとき、自分の仕事が全体にどういう風に影響してくるのか、自分がやっていることがどういう風に全体に役立つのか、というのが伝聞ではなく経験として自分のものにできる。百聞は一見に如かず。 コンピュータを使ったサービスというのもこれと同じだと思っている。様々なコンポーネントからサービスは構成されている。自分がそのサービスのこの部分に対して貢献している、という実感を得るためにはやはり全体を知る必要があると思っている。なので、これからは手を広げるのはいいのだけど、技術をふんわりとしたものではなく、ちゃんと自分の中に落とし込むためのアプトプットが必要になると思う。学んだことをブログに書いて、落とし込もう。というのが一つ。 あとは、手を広げすぎているという部分に関して、一通りサービスがどうやって構成されているのかも分かったことだし、これからは自分の専門分野を磨いていきたいと思っている。 フルスタックエンジニアと言えども突出した分野を持っているかたが多いとアドバイスを頂いた。ということで、自分が極めたい専門分野を探すために、まずはエンジニアの種類を列挙する。そのあと、自分がそれぞれの領域でできることを書いて、さらに極めたい領域について考える。 エンジニアの種類を超大雑把に分けると、フロントエンド、バックエンド、インフラ、の三つ。この3つの枠で見た時に自分ができることを具体的に列挙したい。 インフラ領域でいうと、自分は自宅にある10台以上の物理サーバを管理している。ファイルサーバもある。VPNサーバもある。外から家のサーバにアクセスができる。自宅サーバを公開している(ちなみに、クラウドの反対の意味として、オンプレミスという言葉がある)。研究室でサーバの管理をやっていることもあり、ファイルシステム等の、よりlow_layerについては、物理的な容量がたりなくなったらハードディスクを追加することもできる。もちろんPCを自分で組むこともできるし、OSをインストールすることもできる。Linuxの基本は一通り抑えているつもりである(チョットデキル)。(2023/12/15追記:Dockerに関する技術も加わった。containerdも使える。k8sクラスタは、組んではみたけど、そのうえでサービスを展開するまでには至っていない。Slurmクラスタも作れる。) オンプレミスのサーバ管理は問題なくできると思う一方で、クラウドを借りて何かをするってのはまだわからない。ただ、AWSの本を見た時、自宅でやってるサーバの構築とあまり変わらないんじゃないかと思った。物理的な構成をただ仮想化している感じであった。 ネットワークに関しては、初期のころから興味があったこともあり、基本的なことはそこそこ抑えていると思う。 (2023/12/15追記:自宅の192.168.3.0/24ネットワークの中に、raspiを置いて、そのラズパイの下にサブネットを作って、MPIクラスタを作ることもできる。 あと、vpnでつながった2つのネットワーク間での分散サービスを作ることもできる。) (2023/12/15追記:あと、今、研究でミドルウェアを作っています。ミドルウェア作りもなかなか楽しい。) また、セキュリティーについては、外部からの攻撃が来ていることも認識できているし、定期的にセキュリティーのログを見るなどして、異変がないかとかも見られていると思う。しかし、opensslを使って何かをするとか、その辺はまだ怪しい。暗号化の仕組みはわかるけど、それを実践には落とし込めていないように思う。 続いてフロントエンド。正直、デザインに関しては自分は素人ではある。しかし、html + css + javascriptを使ってバックエンドとフロントエンド間で必要なデータをやり取りすることは最近できるようになってきた。話が変わるが、最近フロントで学んだ新しいことは、googleが公開しているjavascriptのライブラリをhtml内で普通に読み込めるってこと。これは便利だなと感じた。自分で開発しなくても外部ライブラリを普通に取り込めるのはよい。かなり世界が広がった。chart.jsを使うと普通にきれいなグラフがかけるとかね。 (2023/12/15追記:最近はReactを学んでいます。まあ、フロントもやっぱりコンポーネントげーなんですわ。 ていうか、ソフトウェアって、粒度の差こそあれ、全部コンポーネントげーなんですよね。) 続いて、バックエンド領域。これはアプリの裏側だね。個人的にはここが一番範囲が広い部分だと思っている。バックエンドは、フロントエンドとの通信だけではなくて、サービスの裏側全部を担っていると思う。どうだろう。自分ができることはなんだろう。 まず、こういうアプリが作りたい!といわれた時に、それの設計はできる(最近、DBのすごさがわかってきた。コンピュータは「情報」を扱うわけだから、「情報」を蓄積するDBをシステムの中心にいろいろ設計を進めていくのがめちゃめちゃやりやすいということを感じた。これはけいち先生のアドバイスから始まったところなので、本当に感謝している。)。こういうモジュールが必要とか、こことここは切り分けたほうがいいとか、そういう、「データの流れ」みたいなのは見えるようになってきたね。あとは、データ集めも結構うまくなったと感じるね。ネットワーク上のこういうデータがほしいとなった時にリアルタイムでデータをスクレイピングするとかできるようになった。 しかし、結局サービスの面白さを決める「カーネル」については、自分はまだ技術が不足していると感じている。カーネルの開発はWEBからは切り離して考えられるし、開発をやっていて一番難しくてやりがいがあるのがカーネルとも感じる。なので、これから極めていく領域としては、「カーネル」に直接影響をおよぼせる領域を勉強したいと思っている。 じゃあそんなカーネルに直接影響をおよぼせる領域には何があるのかをリストアップしていきましょうか。 CSの分野で見たときのOS layer以上、フロントエンド未満の分野 機械学習 はい、機械学習ですね。といっても、この機械学習自体がかなり意味が広い。 データサイエンティスト、コンピュータビジョン、音声認識、自然言語処理、等があります。 純粋なアルゴリズム やっぱり、アルゴリズムとデータ構造をどれだけ知っているかというのはそのまま開発者としての価値になると思います。 グラフアルゴリズムとかね。というか、これってもう、情報系なら普通に知っていないとだめなことじゃね?とも思う。 Operations Research 最適化です。これは上の純粋なアルゴリズムの延長とも言えます。 検索 この間、検索を専門にしている人がいました。検索も、ただデータベースからselectしてくるだけじゃなくて、かなり奥が深いのだと思います。当たり前やろ。googleは検索の会社やぞ。 はい、以上を基にこれから勉強していきたい分野を考える。まず、機械学習は教養としてできないとだめだと思う。ただ、コンピュータビジョンとか、認識系のマニアックなところではなくて、 データベースにたまっているデータを解析できれば十分と思う。つまり、統計処理だよね。statistics。なので、データベースとpythonのデータフレームまわりは勉強したい。 次に純粋なアルゴリズムとデータ構造。今はライブラリが充実しすぎているから必要性が低そうに見えるが、難しいことをやるとなると必要です。複雑なことというのはライブラリやフレームワークのカバー対象外ですからね。ということでこれも採用。 検索は、さすがに今から手を出すのはきついんじゃないかなーと思う。 以上を元に、今後極めて行きたい分野を下に書きました。 今後取り組むこと アルゴリズム(atcoder) データサイエンス(kaggle + 競馬AI) データベース(研究 + 全自動競馬システム) CS分野一覧、内容 awesome_courseに書かれているCSの分野一覧を挙げる。

August 9, 2022 · 1 min · 54 words · Me

新・サイト

ブログ自体はコンピュータを本格的に触り始めた2年前から書いていた。html,cssの勉強も兼ねてきれいなサイトを作ろうと思ったが、結局は 途中で挫折した。結果的に昔の汚いサイトが完成したわけだ。昔のサイトの駄目な点をいくつか上げたいと思う。 駄目な点 1. ブログのポストがポストになっていない。 ただhtmlファイルに <li> mm/dd </li> を加えて終了している。これではちゃんとまとまった記事を書く気が失せる。 2. カテゴリやタグがついてない カテゴリやタグがついていない。htmlとCSSだけで作った全ブログは、ロジックを司るソフトが入っていなかったため、カテゴリやタグをつけられなかった。 ロジックを含めてc++で書きたかったのだが、時間がなかった(言い訳) なぜこのタイミングでhugoに移植しようとしたのか? 就活が始まるからである。エンジニアとしての就活はポートフォリオが重要になってくる。研究以外にやることがない夏休み中にポートフォリオを完成させる算段だが、 その手始めとしてきれいなサイトを構築することから始めた。人に読んでもらうことを意識した文章を書くつもりである。 なぜhugoなのか? 研究室で好きな先生が最近(移植したのは2015年だったらしい。しかもこのときの記事で移植した理由を書いていらっしゃったが、なんとhugoが流行ることを予想しての移植だったようだ)ブログをhugoに移植したからである。好きな先生の後は追いたいものである。 CMSでは駄目なのか? WordPress等のCMSでは駄目である。あれは技術的に介在する余地のない完成されたソフトウェアであり、学ぶことが少ないと思ったからである。 今後の予定 まずは、旧サイトのテックブログをきれいにまとめてこっちに移行させようと思う。ちなみに、今のMSDOS風のテーマが嫌になったらいつでも違うテーマに移植可能であることを忘れないでほしい。mdファイルの移植で事足りる。なので、まずは記事を充実させることに専念するべきだろう。

August 5, 2022 · 1 min · 23 words · Me

Cool_stuffs_related_to_hugo

additional materials to refer About shortcodes There are a bunch of default shortcodes like embeding youtube in html. But you can also create your custom shortcodes. How to include js in hugo その他メモ

August 5, 2022 · 1 min · 33 words · Me

マインカンプ

「コンピュータ」を学ぶに当たり、自分がたどってきた過程 コンピュータに強くひかれてから6年弱(2018/10 - 2024/04)が経過したわけだが。 自分は、ほぼ手探り状態でコンピュータの知識を身に着けていった。 今となっては知らなくてもよかったと思う知識もおおい。しかし、「ランダムサーチ」的な勉強によって「点」で身に着けていった知識が、少しづつ「線」でつながっていき、結果的にコンピュータ分野における自分の視野を広げてくれているとも思う。 自分がコンピュータを学ぶ時にどんな過程を辿ってきたか、まあ、簡単に書いていきたいと思う。 ただの日記になってるとこもある。 2018/04 サーバーって何?ブラウザって目の前にあるコンピュータのなかに入ってる辞書みたいなものじゃないの?インターネットって、インターネットエクスプローラのことじゃないの?って思ってたところからの成長過程 2018/5 授業でcをやる。正直何が楽しいのかわからなかった。printf()でもじが出力できます。。うんたらかんたら、、、で? でも、レポートとか早くまとめられるようにタイピングは速くなりたかった。適当にwordで日記をつけたりしてた。 2018/08 たけしに勧められ、タイピングバラエティーを始める。 2018/10 なんか、大学って俺が思ってたところと違うな、と思い始める。 機械系に入ったのは、バリバリ機械をいじれるからだと思ってたのに、なんか学校でやるのは線形代数とか、微分とか、は?って感じだった。僕は実用的なことが好きだった。 んで、その時とってた授業で唯一実用的だなって思ったのが、前期はなかったcプログラミングの授業。最近の機械は制御でもcが使われてるらしいし、ちゃんと聞いて損はないなって思った。 ##### 2018/11 cの授業が楽しくてはまっていった(そのC言語の授業を担当していた先生が好きで、せっかくなので授業も頑張ろとおもい、それに付随してコンピュータも好きになったと思う。自分にしては珍しく、教室の一番前で授業を受けていた。3年生の時この先生の研究室に入ることになるが、入った年に別の大学に移ってしまったのは本当に残念なことである。)。最終的には7並べのゲームを作るらしい、ということでやる気が出た。 自分のノートpcにMingwとか入れた。windows用のcコンパイラだね。 この時はパスって概念もわからなかったし、コマンドプロンプト上でコンパイルできた時はかなりうれしかった。 ##### 2019/01 とりあえずpc極めたいならデスクトップ買うしかなくね?と思って、ドスパラでで現在も愛用しているbtoのpcを買う。ちなみに、一代目にBTOを購入することにしたのは非常にいい選択だったと思う。すぐ動くけど、拡張性にも優れているからね。 2019/02 春休み。なんか、せっかくデスクトップ買ったのにどうやって活用するのかわからない(笑) うーん、デスクトップ買う意味なかったか?(笑)って思ってるうちに、まあとりあえずネットワークについて学ぼう、と思い図書館へ足を運ぶようになる。 このころからマジで図書館にめっちゃ行くようになる。 パソコンに触れ始めた人って結構ハッカーとかにあこがれること多いと思うんだよね(笑)俺もそうだった。んで、最初に借りた本が『ハッカーの教科書』 これ、ネットワークについて何も知らない人が読むものではありませんでした(笑)ARP?ポート?SSH。。。なにそれまったくわからんわ。。。 とか思ってるうちに春休みが終わった。この年は厳冬期の聖岳に行って凍傷になりました。でもマジで楽しかったー。 2019/4 しんがっき。とりあえず、プロコン始めるか!って言ってプロコン始めた。こっから2020/2くらいまで、ほぼ毎週出た。 C言語で出続け、アルゴリズムとデータ構造とかもほとんどわからなかったから、ぶっちゃけレートは全然上がらなかった。が、c言語の基礎は学べたし、後々c++を習得することにつながったと思っている。今思うと、キューもマップも使わずにcで出続けるってかなり無謀だったな… 2019/5 プロコンに興じていたが、なんか、これって結局誰かの掌の上で踊らされてね?って思って、再びハッカーの教科書を読み始めた。しかし、やっぱり何もわからん。。。 唯一わかったのが、kali linuxというosにはハッキングツールがたくさん入っていて、なんかかっこいいといういこと。で、このころ、せっかく買ったデスクトップがマジでただ置いてあっただけになりつつあったので、 こいつ、windows入ってるけど、kali linux新しくいれね?って思って、どうやって入れるのかいろいろ調べていたら、なんとデュアルブートというものがあるじゃない。 dual bootは一つのpcに二つのosが入ってる状態のこと。その当時、結構パソコンに詳しくなってきて、「完全に理化した」状態になっていたけど、まー今の俺から見るとその当時の俺なんてぺーぺーで、kali linuxをdual bootできるようにするまでも結構時間かかったねー。 しかし、ミスったらwindowsが消える可能性もあったが、結構頑張ってとりあえずkali linuxを入れることに成功した。よくあきらめなかったぞ! 2019/7 頑張ってハッカーの学校を読み進めた。理解できた概念は、ポート、ipアドレス、ドメイン、など。 そして、nmapというポートスキャンツールの存在を知った。 こいつにはまった。マジで。ネットでnmapと検索すると、絶対にwanでポートスキャンしちゃいけないとか書いてあるし、中二ごころをくすぐられたね。あーおれハッカーになったんだと錯覚した。実際は全然大したことなく「script kiddy」にも達していなかっただろう。しかし非常に楽しかった。kaliを使って、lan内で、wifiでつながってるノートpcに何回もポートスキャンかけて遊んだ。起きて一番最初にすることは、nmapだった。 でもだんだん出てくるドーパミンの量も減っていくんですよね。。。そして、だんだんと飽きてくるんですねー。ノートpcにnmapをかけるのも。で、やってしまったんですよ。出来心で。 あのg社のdnsサーバにnmapをかけた。 普通のnmapは5秒くらいでスキャンが終わるんですけど、その時は20秒くらいたっても終わらず、なんかだんだん焦ってきて、 とりあえず、ctrl+cでnmapプロセスを停止。んで、ブラウザでnmap についてしらべようとしたら、いつまでたっても検索できなくなったんだよね。 ????ってなって、だんだん焦ってきて、しばらくたったら回復して検索できるようになった。で、どのサイトで見ても、他人のサーバーにnmapしたら犯罪って書いてあったんだよね。 あ、大学退学になるわ、俺の人生終わったわ、っておもって2日くらいびくびくしてた。眠れなかったね。でも結局あれから5年以上たってるけど、G社からやばい手紙とかは来ていないので大丈夫そう。被害妄想が激しかった。 2019/8 10月実施の基本情報技術者試験のための勉強をした。それと、ハッカーの学校のレベルが高すぎるかなと思い、代わりにTcp/ipの絵本を読んだ。こっちはかなり基本から書いてあって読みやすかった。 このころ、資格の勉強って実用的じゃなくて、ほんと資格のための勉強って感じだな、学校の勉強みたいだなて思ったね。でも今思うと、そこで基礎を鍛えられて気もする。まあ、理論と実践はバランスが大事ですよね。 2019/9 ラズパイというものがあると知った。格安コンピュータ6000円?!。しかもosはlinuxだと。即買いしましたね。 パソコン技術を爆上げしてくれるきっかけになったのはやっぱりラズパイ購入だと今でも思ってる。 まずCLIの基礎についてかなり勉強できた。そして、LINUXについて勉強した。 そして、sshを学んだ。生まれて初めて、ネットワークでパソコンがつながっていることを実感した。firelilyから、ラズパイにssh成功した時は震えた。これが「通信」なのか、とね。 朝起きてから最初にやることはsshになった。しかし、これにも飽きて次に進むわけです。 ...

May 27, 2022 · 2 min · 399 words · Me

Markdown Syntax Guide

This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme. ...

March 11, 2019 · 3 min · 445 words · Hugo Authors

0 min · 0 words · Me