【개인개발】터미널상에서 동작하는 Redis 클라이언트를 작성했습니다



redis-term이라는 npm 모듈을 만들었습니다.

개발에 사용한 모듈이나 배경 등에 대해 써 드리겠습니다.

배경


  • 지금까지 npm 모듈을 이용하는 것은 있었지만, 자작한 적은 없고, 무엇인가 만들고 싶다고 생각하고 있었다.
  • Redis에 대해서, 과거에 사용한 경험이 있었지만, 충분히 이해하고 있다고는 할 수 없고, 보다 이해를 깊게 하고 싶다고 생각하고 있었다.

  • 사용방법


  • npm으로 설치할 수 있습니다.
  • $ npm install -g redis-term
    $ redis-term
    
  • 각 요소 사이는 tab 키로 이동할 수 있습니다.
  • 리스트내의 항목에 대해서는, 상하 키 또는 j, k로 이동할 수 있습니다.

  • 의식한 것



    터미널에서 동작한다는 점을 살리기 위해 가능한 한 키보드만으로 조작할 수 있도록 하는 것을 목표로 개발했습니다.

    구현한 기능



    연결 관리



    연결된 적이있는 서버 목록



    연결 정보 입력 화면



    연결 정보는 ~/.cache/redis-term/connections.json에 저장됩니다.

    키 관리





    테마 기능



    dark



    블루



    dark와 blue의 2 종류의 테마를 준비했습니다.
    설정은 ~/.config/redis-term/settings.json 에서 변경할 수 있습니다.

    ~/.config/redis-term/settings.json
    {
      "colortheme": "dark" // or "blue"
    }
    

    사용한 모듈


  • ioredis

  • Redis 클라이언트입니다.
    Promise를 표준으로 서포트하고 있는 점에 매력을 느꼈기 때문에 채용했습니다.
  • neo-blessed

  • blessed의 포크 버전입니다.
    UI 구축에 이용하고 있습니다.
  • react-blessed

  • blessed 용 React 렌더러.
  • Redux

  • 상태 관리용입니다.
    디렉토리 구성은, Ducks 이나 re-ducks 패턴을 참고로 했습니다.
  • react-router

  • 라우팅 라이브러리.
    MemoryRouter 을 사용하고 있습니다.
  • ssh2

  • SSH 클라이언트/서버 라이브러리입니다.
    SSH 터널 연결을 지원하는 데 사용했습니다.
  • keytar

  • 비밀번호 관리에 사용했습니다.
  • Mocha
  • testdouble.js
  • react-test-renderer

  • 테스트용입니다.

    testdouble.js는 JavaScript 용 모의/스텁 라이브러리입니다.
    개인적으로 Sinon.js보다 간단하고 사용하기 쉬운 인상을 받았습니다.

    운영 환경



    하이퍼 와 Ubuntu 표준 터미널에서 동작 확인을 했습니다.
    Mac과 Windows에 대해서는 손에 환경이 없기 때문에 확인할 수 없습니다.
    Node.js에 대해서는 v8, v10, v11에서 동작 확인했습니다.

    도전


  • CI에서 테스트 실행을 자동화합니다.
  • 테마를 늘린다.
  • 에디터의 사용성을 잘 한다. (JSON 등)
  • Hooks API 지원

  • 등...

    힘든 일 등


  • UI 디자인

  • 개인적으로 경험이 얇은 분야이기 때문에, 사용하기 쉬운 UI를 생각하면서 개발해 나가는 것은 상상 이상으로 힘들었다.
  • react-blessed 및 blessed에 관한 정보가 적고, 종종 소스 코드를 볼 필요가 있어 힘들었다.
  • 동기 부여를 유지하는 것.

  • 최저라도 매일 30분~1시간 정도는 코드를 만지게 하고, 동기의 저하를 피하도록(듯이) 했습니다.

    참고로 한 프로젝트


  • sqlectron-term

  • 터미널에서 실행되는 데이터베이스 클라이언트.
    UI등을 참고로 했습니다.
  • Medis

  • Electron의 Redis 클라이언트입니다.

    좋은 웹페이지 즐겨찾기