【20日チャレンジ】LinuxコマンドをGoで実装

Go言語の学習のため、LinuxコマンドをGoで実装します。

目的

  • Go言語に慣れる
  • 標準パッケージの機能、使い方を知る

ルール

以下のルールでチャレンジを行います。

  • 1日1コマンドを実装する
  • 最低限、コマンドの基本的な動作(オプションなしの実行など)を行えるようにする
  • 余裕があれば追加機能を実装する
  • コマンド名は"my" + "Linuxコマンド名"とする
  • 極力標準パッケージを使用する

ソースコード

ソースコードGithubで管理します。

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年は積極的に新しい技術へチャレンジし、勉強会を通して素晴らしい方々に出会うことができました。

新たに触れた技術・ツール

勉強会・カンファレンス

  • 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はスタッフとして参加させてもらいました。

書籍

読了

読みかけ

  • 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版

社内の活動

  • 技術交流、コミュニケーション促進のためチャンネルを開設
  • 社内勉強会を主催
  • モブプログラミング・ペアプログラミングを開始

資格

合格

不合格

午後Ⅰが1点足りず…

その他

2019年の目標

7ヶ月間の活動の中で、様々な技術分野にチャレンジした結果、インフラ・セキュリティへの関心が強いことがわかりました。

2019年はContainerを中心にインフラのスキルを身に着け、セキュリティ分野の知見を広めていきます。

書籍

資格