부가 달력의 변천을 되돌아보다

새해 복 많이 받으세요.
advent 달력 2020이 끝난 후 일주일 동안 역법도 약간의 변화가 생겼다. 아무도 advent 달력을 볼 수 없을 것이다. 과거의 advent 달력을 대조해 트렌드의 변천을 살펴보자.

해본 일

  • 2015년부터 지난 6년간의 추가 달력을 취득하고 달력 csv화
  • 추세 기술의 변천을 관찰
  • 결실


    표 1. 프로그래밍 언어

    2019년부터 Rust가 인기가 많은 것 같아요.Go에서 개발하는 기업도 늘고 인기도 꾸준히 상승하고 있다.MATLAB와 파이썬 등 데이터 해석계의 언어는 여전히 인기가 많다.
    표 2. 라이브러리

    Laavel은 언어 프레임에서 인기가 많습니다.그리고 2020년에는 Unity나 Unreal Engine 같은 VR 엔진이 인기를 끌었다.난잡하게 말하지만 플랫폼이 이동에서 VR로 이동하는 날도 가까워졌죠.
    표 3. 데이터베이스

    PostgreSQL은 여전히 인기가 많다.나는 노스QL과에 가입했다는 보도도 괜찮다고 생각한다.
    표 4. 이동

    코스프레이트 형식 개발에서는 구글의 플루터, 페이스북의 리액트 네이티브가 인기를 끌었다.Google의 Firebase 등과 결합하면 모바일 애플리케이션의 개발이 더욱 간편해지겠죠.
    표 5.DevOps

    CI/CD 툴에는 Circle CI, Infrastructure as Code에는 Ansible, Terraform, Kubernetes가 인기다.인프라 부근에서 Docker로 컨테이너화하고 GiitHub로 지점 관리, CI로 자동화하는 것이 정형화의 증거죠.

    끝말


    Qita의 부가 달력을 돌이켜보면 올해 트렌드도 예상할 수 있을 것 같다.
    저는 개인적으로 2021년에 VR 개발 환경이 급격히 향상되고 모바일 애플리케이션 개발이 더욱 활발해지면서 포화되고 환경 자동화 추진에 따라 인프라 엔지니어의 수요도 증가할 것이라고 생각합니다.
    기술의 유행과 폐지가 치열하기 때문에 앞으로도 지정관측을 해야 한다.

    Code


    get_ad_cal.py
    
    
    import requests
    import pandas as pd
    import numpy as np
    from tqdm import tqdm
    from bs4 import BeautifulSoup as bs
    
    year = '2020'
    url = 'https://qiita.com/advent-calendar/'+year+'/ranking/'
    feed = 'feedbacks/categories/'
    keyword_list = ['feedbacks', feed+'programming_languages', feed+'libraries', feed+'databases', feed+'web_technologies', feed+'mobile', feed+'devops', feed+'iot', feed+'os', feed+'editors', feed+'academic', feed+'services', feed+'company', feed+'miscellaneous']
    columns_list = ['feedbacks', 'programming_languages', 'libraries', 'databases', 'web_technologies', 'mobile', 'devops', 'iot', 'os', 'editors', 'academic', 'services', 'company', 'miscellaneous']
    
    def get_item_name(keyword):
        key_url = url+keyword
        res = requests.get(key_url)
        if res.status_code == 200:
            soup = bs(res.text, 'html.parser')
            items = soup.find_all('a', class_='ad-Item_name')
        else:
            pass
        for item in items:
            items_list.append(item.text)
        return items_list
    
    df_list = []
    for keyword in keyword_list:
        items_list = []
        items_list = get_item_name(keyword)
        df_items = pd.DataFrame(items_list)
        df_list.append(df_items)
    
    np_list = np.arange(1, 21)
    np_list = list(np_list)
    df = pd.DataFrame(np_list)
    
    for i in range(len(df_list)):
        df[columns_list[i]] = df_list[i]
    df.to_csv('ad_cal/'+year+'.csv', encoding='utf-16', index=False, sep='\t')
    
    
    
    
    sort_year.py
    
    
    import pandas as pd
    
    years = ['2020', '2019', '2018', '2017', '2016', '2015']
    columns_list = ['feedbacks', 'programming_languages', 'libraries', 'databases', 'web_technologies', 'mobile', 'devops', 'iot', 'os', 'editors', 'academic', 'services', 'company', 'miscellaneous']
    
    for column in columns_list:
        dic_year = {}
        for year in years:
            df = pd.read_csv('ad_cal/'+year+'.csv', encoding='utf-16', sep='\t')
            try:
                df = df[column]
                dic_year[year] = df
            except:
                continue
        df_cat = pd.DataFrame.from_dict(dic_year)
        df_cat.to_csv('ad_cal/'+column+'.csv', encoding='utf-16', sep='\t', index=False)
    
    
    

    좋은 웹페이지 즐겨찾기