【20日チャレンジ】LinuxコマンドをGoで実装
Go言語の学習のため、LinuxコマンドをGoで実装します。
目的
- Go言語に慣れる
- 標準パッケージの機能、使い方を知る
ルール
以下のルールでチャレンジを行います。
- 1日1コマンドを実装する
- 最低限、コマンドの基本的な動作(オプションなしの実行など)を行えるようにする
- 余裕があれば追加機能を実装する
- コマンド名は"my" + "Linuxコマンド名"とする
- 極力標準パッケージを使用する
ソースコード
https://github.com/kyohmizu/go-cli-tools
スケジュール
No | 日付 | コマンド | 基本実装 | オプション | 学習内容 |
---|---|---|---|---|---|
1 | 5/23 | myls | 〇 |
ディレクトリ操作 エラー処理 |
|
2 | 5/24 | mycp | 〇 | △ | ファイル操作 |
3 | 5/25 | mymv | 〇 | △ | |
4 | 5/26 | myrm | 〇 | △ | |
5 | 5/27 | mycat | 〇 | △ | |
6 | 5/28 | mycurl | 〇 | △ |
http接続の実装 オプションの複数回指定 |
7 | 5/29 | mypwd | 〇 | △ | OSによる条件分岐 |
8 | 5/30 | mytouch | 〇 | △ | build tagの設定 |
9 | 5/31 | mymkdir | 〇 | △ | ファイルの操作権限 |
10 | 6/1 | mykill | 〇 | 〇 | プロセスとシグナル |
11 | 6/2 | myecho | 〇 | - | 引数の取得 |
12 | 6/3 | mytime | △ | - |
コマンド実行 timeの操作 |
13 | 6/4 | mychmod | △ | - |
bit演算 ファイルの権限 |
14 | 6/5 | myyes | 〇 | 〇 | |
15 | 6/6 | myenv | 〇 | △ |
windowsで確認不可 |
16 | 6/7 | mychown | 〇 | △ |
user,group操作 windowsで確認不可 |
17 | 6/8 | mygrep | 〇 | △ |
grepの操作 goの正規表現 |
18 | 6/9 | mysleep | 〇 | △ | |
19 | 6/10 | mymkdir | 〇 | △ | |
20 | 6/11 | myln | 〇 | △ | リンクの操作 |
成果
- Goの構文や記法に慣れてきた
- Go標準パッケージの使い方、調べ方を覚えた
- Linuxコマンドの動作を知ることができた
感想
20日も書けば、ある程度書けるようになることがわかりました。
普段使用するC#とGoが似ている点も覚えやすかったのだと思います。
次はGoでAPIを作成してみようと考えています。
2018年振り返りと、2019年の目標
2018年5月末から、エンジニアリングに関する様々な活動を行ってきました。
1年の終わりにそれらの活動をまとめ、2019年の目標を記したいと思います。
2018年の活動
2018年は積極的に新しい技術へチャレンジし、勉強会を通して素晴らしい方々に出会うことができました。
新たに触れた技術・ツール
- GitHub
- Node.js
- Angular
- Golang
- CentOS
- Docker
- Kubernetes
- Azure
- GCP
- OWASP ZAP
- LINE BOT/Clova
- Agile
- ペアプログラミング/モブプログラミング
勉強会・カンファレンス
- LINE Developer Meetup
- de:code 2018
- Azureもくもく会
- ng-japan 2018
- SQL Server 2017勉強会
- Interact 2018
- CCSE 2018
- Think Japan IBM Code Day
- JXUG Xamarinハンズオン
- Cosmos DBハンズオン
- くじらや Dockerハンズオン
- LINE Clovaスキル開発ハンズオン
- LINE BOOT AWARDS 2018 ハッカソン
- GDG DevFest Tokyo 2018
- XP祭り
- AzureML勉強会
- BIT VALLEY 2018
- .NET Conf 2018
- Container SIG Meet-up
- テスト管理を語る夕べ
- AVTOKYO
- アジャイル相談室
- OSSセキュリティ技術の会
- Japan Container Days
※Japan Container Daysはスタッフとして参加させてもらいました。
書籍
読了
- 徹底攻略 データベーススペシャリスト教科書
- 徹底攻略 ネットワークスペシャリスト教科書
- ショートコードプログラミング 第3版
- 新装版 達人プログラマー
- SQLアンチパターン
- インフラエンジニアの教科書2
- プログラマのためのDocker教科書 第2版
- Docker/Kubernetes 実践コンテナ開発入門
読みかけ
- 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版
社内の活動
- 技術交流、コミュニケーション促進のためチャンネルを開設
- 社内勉強会を主催
- モブプログラミング・ペアプログラミングを開始
資格
合格
不合格
午後Ⅰが1点足りず…
その他
- はてなブログを開設
- Qiitaアドベントカレンダーに参加
2019年の目標
7ヶ月間の活動の中で、様々な技術分野にチャレンジした結果、インフラ・セキュリティへの関心が強いことがわかりました。
2019年はContainerを中心にインフラのスキルを身に着け、セキュリティ分野の知見を広めていきます。
書籍
- 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版
- Kubernetes完全ガイド
- ハッカーの学校
- テスト駆動開発
- 徹底マスター JavaScriptの教科書
- ドメイン駆動設計
- ハッキング・ラボのつくりかた
資格
- LPIC Level1
- 情報処理安全確保支援士
- ネットワークスペシャリスト