Author Image

Hi, I am Tack

Software Engineer / Infrastructure Engineer at 某大手SES企業

初めてIT業界に入りエンジニアとしてのキャリアを踏み出しました。システム管理者業務の自動化・省力化やJava製社内イントラの保守運用開発、バッチプログラムのPowerShell移植などを通して多くの経験を積みました。

Communication
Team Work
Spontaneity
Flexibility
Problem-Solving Ability
Toughness

Skills

Experiences

1
ホテルマン/ベルボーイ
某リゾートホテル

July 2012 - May 2018, 千葉県

1000室以上ある某有名ホテルにてベルボーイとして働きながら国内外のお客様を接客しておりました。

Responsibilities:
  • フロアでの接客
  • 設備不具合時の一次対応マニュアルの作成・配布

インフラ/ソフトウェアエンジニア
某大手SES企業

July 2018 - Present, 東京都

エンジニアとしてのキャリアをここから始めました。某メガバンク系企業のお客様先にてクライアントPCのシステム管理業務の自動化や社内イントラ保守運用開発などをやらせていただきました。

Responsibilities:
  • クライアントPCのキッティング
  • サポートデスクからのエスカレーション対応
  • クライアントPCの自動構築ツールの開発
  • 社内イントラサイトへの自動情報登録・スクレイピングツールの開発
  • 社内イントラサイトの保守運用開発
  • perl製バッチのPowerShellでのリプレースプロジェクトにて設計~運用デザイン
2

Projects

クライアントPCの自動構築ツールの開発
開発,テスト July 2018 - Present

お客様先のWindows10化に伴う自動構築ツールの更改のお手伝いとして一部モジュール作成をいたしました。

社内PC資産管理イントラサイトへの情報登録・スクレイピングツールの開発
設計,開発,テスト,運用,保守 Jun 2018 - Present

社内PC資産管理イントラサイトへの入力支援と証跡保管のため登録結果をスクレイピングするツールをVBAで作成し作業効率を8.3倍にしメンバーが他の業務に集中できるように貢献しました

社内PC資産管理イントラサイト追加改修
設計,開発,テスト,運用,保守 Jun 2019 - Present

初めてのWebシステムの改修案件で、レガシーなWebアプリケーションであり、保守運用資料も乏しい状況のため現状の解析や言語やWebシステムの学習に苦慮しましたが要望通りの追加改修に成功することができました。

社内PC資産管理イントラサイトシステムへの他サーバーperlバッチ移植案件
設計,開発,テスト,運用,保守 Jun 2019 - Present

ネットワークについての情報を連携していたサーバーのバッチがサーバーの更改に伴って連携不可能になったため、PC資産管理イントラサイトシステム内に移植する案件に携わらせていただきました。

システム管理者業務の自動化・省力化ツールの開発
設計,開発,テスト,運用,保守 Jun 2018 - Present

閑散期や手がい空いた時、自分が不便に感じていることやチームに貢献できそうな事があれば積極的に業務軽量化の為のツールを作成していました。

Recent Posts

Card image cap
EDINETAPIをPowerShellで触れてみた

動機 EDINETAPIなるものを知ったのでそれをPowerShellで叩いてみたいと思った。 EDINET API とは 先ず、EDINETというのは、金融庁が有価証券報告書などの開示書類を閲覧するためのサイトです。 この開示システムには、EDINET APIというAPIが用意されています。 以下、EDINET_API仕様書.pdfより抜粋 EDINET API は、利用者が EDINET の画面からではなく、プログラムを介して EDINET の データベースから効率的にデータを取得できる API(アプリケーション・プログラミング・ インターフェース)です。EDINET API により、EDINET 利用者は効率的に開示情報を取得 することが可能となります。 そこで、このシステムにふれやすくなるような仕組を何らかの形で用意してあげられればWEBをポチポチする必要がなくなってより便利になるわけですね。 実行方法 大まかなながれとしては、メタデータを取得するエンドポイントにアクセスしてほしい情報を探します。 そして、ほしい情報の文書を取得するエンドポイントにアクセスして任意の形式でファイルを取得します。 各エンドポイントへのアクセスの概要 先ず、メタデータの取得にはREST形式でhttps://disclosure.edinet-fsa.go.jp/api/[バージョン]/documents.jsonに対してGETメソッドを用いてリクエストします。 ちなみに、今回はバージョンについてはv1を使用しました. パラメーターは date (YYYY-MM-DD 形式。最長5年前まで参照可能。) type(任意。 defalt は 1。1:=メタデータのみ 2:=提出書類一覧及びメタデータ) とあります。 実際に使いたい場合はこんな感じですね。 https://disclosure.edinet-fsa.go.jp/api/v1/documents.json?date=2022-08-08&type=2 なので、 #URL $url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json" #以下をparamとしてとる $getUrl2 = $url + "?date=2022-08-08&type=2" #GETでアクセスして結果を絞る $res= Invoke-RestMethod $getUrl2 $res.results | Select-Object -Property 'docID','docDescription','filerName' | Where-Object -Property 'docDescription' -Match '四半期' #こんな感じにとれる docID docDescription filerName ----- -------------- --------- S100OW42 四半期報告書-第75期第1四半期(令和4年4月1日-令和4年6月30日) 上新電機株式会社 S100OVTZ 四半期報告書-第58期第3四半期(令和4年4月1日-令和4年6月30日) 富士製薬工業株式会社 S100OUXV 四半期報告書-第209期第1四半期(令和4年4月1日-令和4年6月30日) 株式会社四国銀行 S100OVEF 四半期報告書-第73期第1四半期(令和4年4月1日-令和4年6月30日) ナカバヤシ株式会社 S100OV58 四半期報告書-第51期第1四半期(令和4年4月1日-令和4年6月30日) 株式会社DTS (以下省略) 今度は任意のドキュメント取得をしてみます。

Card image cap
抽象クラスをつくる

動機 折角クラスが使えるので、どこまでデザインパターンを充足できるのかという試み。 PowerShellによる抽象クラスの作成 最近までこれは不可能だと勝手に思っていたのですが、近しいことはできそうなのでここで試して見ます。 参考として、 結城浩さん著の『増補改訂版 Java言語で学ぶデザインパターン入門』より Template Methodパターンの例をPowerShellで実装してみましょう。 Template Methodパターン 最終的にはこんな感じになります。 IncompleteDisplayクラスは比較のために不完全な実装によってちゃんと実体化できないクラスをあえて記述します classDiagram AbstractDisplay <|-- CharDisplay : Inheritance AbstractDisplay <|-- StringDisplay : Inheritance AbstractDisplay <|-- IncompleteDisplay : × 期待する動きとしては、 CharDisplayでは文字をうけとったら«»で囲って5回文字を出力させます。(例では’H’) <<HHHHHH>> StringDisplayでは文字をうけとったら+-+と|で周囲を囲って中に5行入力された文字を出力させます。(例では’Hello!’) +------------+ |Hello World!| |Hello World!| |Hello World!| |Hello World!| |Hello World!| +------------+ そしてIncompleteDisplayでは文字をうけとったら+-+と|で周囲を囲って中に5行入力された文字を出力させようとしますが実装が足りないため異常を発生させます。 抽象クラスをつくる classDiagram class AbstractDisplay{ open() print() close() display() } class AbstractDisplay { AbstractDisplay() { $type = $this.GetType() if ($type -eq [AbstractDisplay]) { throw("$type は 継承して利用してください") } } #抽象メソッド1 -> サブクラスに実装を任せる抽象メソッド hidden [void] open() { throw("オーバーライドしてください。") } #抽象メソッド2 -> サブクラスに実装を任せる抽象メソッド hidden [void] print() { throw("オーバーライドしてください。") } #抽象メソッド3 -> サブクラスに実装を任せる抽象メソッド hidden [void] close() { throw("オーバーライドしてください。") } #ここで実装する [void] display() { $this.